OpenSSH: turvamise meetodid
Info
Lehel on välja toodud oluliste OpenSSH seadistusfailide asukohad ning valik OpenSSH turvalisuse tõstmise meetodeid. Testsüsteemiks kasutati Ubuntu 10.04-ja, millede peal prooviti enamus meetodeid läbi. Meetodid on jaotatud kolme kategooriasse: #Turvalisuse eeldused, #Lihtsamad turvamise meetodid, #Keerulisemad turvamise meetodid. #Kasulikke viiteid alt võib leida turvamise meetodeid, mida otseselt siin artiklis ei kajastata.
OpenSSH vaikimisi seadistusfailid ja SSH port
- /etc/ssh/sshd_config OpenSSH serveri seadistuste fail.
- /etc/ssh/ssh_config OpenSSH kliendi seadistuste fail.
- ~/.ssh/ Kasutaja ssh seadistuste kaust.
- ~/.ssh/authorized_keys või ~/.ssh/authorized_keys Loend avalikest võtmetest (RSA või DSA) mille abil saab kasutaja kontole sisse logida.
- /etc/nologin Kui see fail on olemas, keeldub sshd kõigil peale juurkasutaja sisse logida.
- /etc/hosts.allow ning /etc/hosts.deny Sisaldavad TCP-Wrappers poolt nõutavaid pääsupiiramisloendeid.
- SSH vaikimisi port: TCP 22
Uute seadistuste rakendamiseks peab sshd serveri taaskäivitama.
sudo /etc/init.d/ssh restart
Turvalisuse eeldused
Operatsioonisüsteem ja OpenSSH on uuendatud
Soovitav on kasutada regulaarselt vahendeid nagu yum, apt-get, freebsd-update jms, et tagada süsteemile ja selle programmidele (turva)uuenduste olemasolu.
- Ubuntus on abiks järgnev käsukombinatsioon: sudo apt-get update (- hangib tarkvarateekidest uusimate versioonide info) ja sellele järgnev sudo apt-get dist-upgrade (- uuendab kogu süsteemi tarkvara, kõrvaldades automaatselt konfliktid).
Tugevad paroolid
Ülitähtis on kasutada kasutajate ja võtmete paroolideks keerulisi ja vähemalt 8 ühikut pikkasid märgikombinatsioone. Brute force rünnakud on edukad, sest paroolidena kasutatakse sõnu ja nimesid, mis on päriselt olemas. Ubuntu kommuuni artikkel tugevatest paroolidest. PS. Parooli sünonüüm salasõna on it-maailmas eksitav väljend, sest kui paroolina kasutatakse lihtsalt mingit sõna, on selle sõna salajas püsimine äärmiselt ebatõenäoline. Paremini sobiks parooli sünonüümiks salafraas või salaväljend.
Ainult SSH 2. protokoll
SSH 1. protokoll (SSH-1) omab vahemehe-rünnakuga (MITM attack) seonduvaid probleeme ja muid turvanõrkusi. SSH-1 on aegunud ja sellest tuleks iga hinna eest hoiduda. Avades /etc/ssh/sshd_config faili, tuleks kontrollida, kas seal on rida Protocol 2.
Tühjad paroolid on keelatud
Tühja parooliga kontodelt sisse logimise keelamiseks peab /etc/ssh/sshd_config failis olema rida:
PermitEmptyPasswords no
Lihtsamad turvamise meetodid
Juurkasutaja SSH kaudu sisselogimise keelamine
Root ei pea ssh kaudu sisse logida saama. Tavakasutajad saavad kasutada su või sudo käsku, et omandada juurkasutaja õigused. Nii saab ka täieliku ülevaate selle kohta, kes täpselt kasutas süsteemis privileegidega sudo käske. Juurkasutaja SSH kaudu sisselogimise keelamiseks peab sshd_config failis olema järgnev rida:
PermitRootLogin no
Kasutajate sissepääsu piiramine SSH-sse
Vaikimisi saavad kõik süsteemi kasutajad oma parooli või avaliku võtmega SSH kaudu sisse logida. SSH abil süsteemi siseneda saavate kasutajate määramiseks tuleb sshd_config-is kasutada ridu AllowUsers [login1 login2 login3 etc] ja/või DenyUsers [login1 login2 login3 etc]. Näiteks:
AllowUsers m2rt priit traktor ahv DenyUsers root koll
Analoogselt käib lubade jagamine gruppidele: AllowGroups grupp1 grupp2 , DenyGroups grupp1 grupp2.
- Alati tuleks keelata ligipääs juurkasutajale ja tema grupile, lisades sshd seadistusfaili järgnevad read:
DenyUsers root finadmin DenyGroups root finadmin
- Samuti oleks vaja anda vähemalt ühele sisselogimisõigusega kasutajale juurkasutaja õigused ehk ta saaks vajadusel kasutada su - või sudo -i käsku.
- Kõige turvalisem on seadistada SSH kaudu sisenemise piiramiseks kõik neli direktiivi (AllowUsers, AllowGroups, DenyUsers, DenyGroups)
SSH pordi muutmine ja IP-dega sidumine
SSH kuulab vaikimisi kõiki süsteemi kasutajaliideseid ja IP aadresse. Brute force skriptid proovivad tavaliselt ühenduda ainult port #22 kaudu, seepärast on mõistlik vaikimis SSH port muuta. SSH pordi muutmiseks ja kindlate IP-de kuulamiseks tuleks sshd_config-i sisse kanda muudatused ridadele Port ja ListenAddress. Näiteks:
Port 300 ListenAddress 192.168.1.5 ListenAddress 202.54.1.5
Tegevusetute (idle) kasutajate automaatse väljaviskamise seadistamine
Vältimaks järelevalveta ssh sessioone, tuleks määrata idle timeout interval, milles loendatavate sekundite teatud suuruseni jõudmisel lõpetatakse kasutajaga automaatselt ühendus (kasutaja justkui lihtsalt logis välja). Kui soovitakse, et peale viite minutit tegevusetust ssh sessioon katkestataks, peaks sshd_config-is olema järgnevad read:
ClientAliveInterval 300 ClientAliveCountMax 0
Hostipõhise autentimise keelamine
Hostipõhise autentimise keelamiseks OpenSSH serveris peab sshd_config-is olema järgnev rida:
HostbasedAuthentication no
Avaliku võtme põhine autentimine
Õpetus: OpenSSH:_võtmetega_autentimine.
- (NB!) Avaliku- ja privaatvõtme paari kasutada ainult koos privaatvõtmele määratud parooliga. Parool peaks olema unikaalne (mujal ei kasutata sama parooli), oma privaatvõtit ei tohiks mitte kunagi avaldada.
.rhosts failid on keelatud
Kasutajate ~/[.rhosts] ja ~/.shosts failide mitte lugemiseks tuleb kindlustada OpenSSH serveri seadistusfailis sshd_config järgneva rea olemasolu: IgnoreRhosts yes. SSH suudab emuleerida aegunud [rsh] käsku, tuleb lihtsalt keelata ebaturvaline sissepääs [RSH] kaudu.
Keerulisemad turvamise meetodid
Kodukaustadesse lukustamine sshd chroot-imisega
Viide: OpenSSH SFTP chroot() with ChrootDirectory
PS. Keegi tubli inimene võiks lisada eestikeelse õpetuse.
Port knocking
Port knocking on meetod väliselt tulemüüri portide avamiseks, luues kindlas järjekorras eelnevalt kindlaksmääratud portidele ühenduse katsed - "koputused". Niipea kui on toimunud õiges järjekorras koputused, muudetakse dünaamiliselt tulemüüri reegleid, ja hostil, kes saatis õige koputustemustri, lubatakse teatud portidesse ühenduda.
- Port knocking näidis ssh jaoks, kasutades iptables-it:
$IPT -N stage1 $IPT -A stage1 -m recent --remove --name knock $IPT -A stage1 -p tcp --dport 3456 -m recent --set --name knock2 $IPT -N stage2 $IPT -A stage2 -m recent --remove --name knock2 $IPT -A stage2 -p tcp --dport 2345 -m recent --set --name heaven $IPT -N door $IPT -A door -m recent --rcheck --seconds 5 --name knock2 -j stage2 $IPT -A door -m recent --rcheck --seconds 5 --name knock -j stage1 $IPT -A door -p tcp --dport 1234 -m recent --set --name knock $IPT -A INPUT -m --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -p tcp --dport 22 -m recent --rcheck --seconds 5 --name heaven -j ACCEPT $IPT -A INPUT -p tcp --syn -j doo
- Erinevaid port-knockingu seadistusjuhendeid leiab #Kasulikke viiteid alt.
Brute force rünnaku eest kaitseva tarkvara paigaldamine
Brute force attack on kräkkimismeetod, kus proovitakse suurt hulka märgikombinatsioone, kasutades ühte või jaotatud arvutivõrku. Brute force rünnakute ennetamiseks ja peatamiseks on loodud mitmesugust tarkvara:
PS Keegi tubli inimene võiks lisada "anti-brute-force-attack-software-list"-i.
Sshd serverisse sisselogimine koos Linux PAM mooduliga
Suure hulga kasutajate korral võib seadistada Linux PAM-i kontrollima kasutajate sisselogimist sshd serverisse. PAM võimaldab hoida kasutajanimesid tekstifailis (ei pea nimesid ssh seadistusfaili kuhjama).
TCP Wrappers kasutamine
TCP Wrapper on hostipõhine võrgu-pääsupiiramisloendi süsteem, mida kasutatakse võrgu internetiga ühenduvuse piiramiseks. Kõigepealt oleks vaja TCP Wrappers seadistada: [[#TCP Wrappers-i seadistamine ja kasutamine] (ing.k). Lubamaks SSH-d ainult ip-aadressitelt 192.168.1.2 ja 172.16.23.12, tuleks /etc/hosts.allow faili vastavad aadressid järgnevalt sisse kanda:
sshd : 192.168.1.2 172.16.23.12
Kasulikke viiteid
- Ametliku OpenSSH projekti sait
- Sshd seadistusfaili süntaksivigade leidmise viis enne sshd-serveri restarti
- Tulemüüri_labor
- Port-knocking SSH-le
- OpenSSH turvalisest seadistamisest
- Port knocking kasutades ainult iptables-it või netfilter-it.
- Port-knock serveri knockd seadistamine
- Efektiivsem turvamismeetod kui lihtsalt port knocking: Single packet authorization (SPA)
- knockknock kasutamine SPA-ks
- TCP Wrappers-i seadistamine ja kasutamine
Kasutatud materjalid
- 20 viisi OpenSSH serveri turvalisuse tõstmiseks
- Kasutajate ja gruppide ligipääsu piiramine openssh-le
- Ubuntu terminali man leheküljed (apt-get, sshd jms)
Autor
Indrek Tamm, rühm 15