OpenSSH: turvamise meetodid

From EIK wiki

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

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

Kasutatud materjalid

Autor

Indrek Tamm, rühm 15