Šioje pamokoje pateikiami būdai, kaip suteikti papildomo saugumo serveryje naudojamai OpenSSH programai. Ši programa suteikia galimybę prisijungti prie serverio nuotoliniu būdu ir jį valdyti, todėl nepasirūpinus SSH saugumu išlieka pakankamai didelė rizika, kad į serverį bus įsibrauta trečiųjų asmenų.
Pamoka tinkama VPS serveriams, kurie naudoja Debian arba Ubuntu operacines sistemas.
Visuomet rekomenduojame naudoti sudėtingus slaptažodžius. Keletas pagrindinių rekomendacijų:
Naudokite ne mažiau kaip 8 simbolius
Naudokite didžiųjų ir mažųjų raidžių kombinacijas
Naudokite raides ir skaičius
Naudokite specialius simbolius, pvz.:
! " £ $ % ^
Slaptažodžių generavimo įrankiai (pvz.: https://1password.com/password-generator) gali būti naudingi, tačiau rekomenduojama naudoti patikimus ir vietinius sprendimus.
Išjungiame root vartotojo prisijungimą
root vartotojas dedikuotame serveryje turi visas teises, todėl tiesioginis prisijungimas per SSH yra didelė saugumo rizika. Vietoje to saugiau sukurti ir naudoti paprastą vartotoją su sudo teisėmis.
1. Sukuriame naują vartotoją
adduser petras
passwd petras
Nurodykite stiprų slaptažodį, vadovaudamiesi pirmojo punkto rekomendacijomis.
2. Išjungiame root prisijungimą per SSH
Redaguojame SSH konfigūraciją:
nano /etc/ssh/sshd_config
Raskite eilutę:
PermitRootLogin yes
ir pakeiskite į:
PermitRootLogin no
Pritaikome pakeitimus:
systemctl restart ssh
3. Apribojame prisijungimą tik leidžiamiems vartotojams
Šiuo nustatymu nurodysime SSH priimti prisijungimus tik iš konkrečių vartotojų.
Redaguojame konfigūraciją:
nano /etc/ssh/sshd_config
Pridėkite arba pakoreguokite eilutę:
AllowUsers petras jonas antanas
Išsaugome pakeitimus ir perkrauname SSH tarnybą:
systemctl restart ssh
4. Keičiame SSH prievadą
Pagal nutylėjimą SSH naudoja 22 prievadą, kuris yra dažnas automatizuotų atakų taikinys.
Redaguojame konfigūraciją:
nano /etc/ssh/sshd_config
Raskite eilutę:
#Port 22
ir pakeiskite į, pavyzdžiui:
Port 2322
Perkrauname SSH tarnybą:
systemctl restart ssh
5. Apribojame priėjimą ugniasienėje prie SSH
Leidžiame prisijungimą tik iš konkretaus IP adreso
iptables -A INPUT -p tcp -s JUSU_IP_ADRESAS --dport NUSTATYTAS_PRIEVADAS -j ACCEPT
Pavyzdys:
iptables -A INPUT -p tcp -s 79.98.25.55 --dport 2322 -j ACCEPT
Apsauga nuo brute force atakų
iptables -A INPUT -p tcp --dport 2322 -m recent --set --name ssh --rsource iptables -A INPUT -p tcp --dport 2322 -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT
Prisijungimų skaičiaus ribojimas
iptables -A INPUT -p tcp --dport 2322 --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT iptables -A INPUT -p tcp --dport 2322 --syn -j DROP
Pastaba: šios taisyklės taikomos iptables sistemoms. Naudojant nftables ar UFW, sintaksė skirsis.
6. Viešo ir privataus SSH rakto naudojimas autentikacijai
Šis autentifikacijos būdas yra rekomenduojamas ir saugesnis už slaptažodžius, kadangi Jums nebereikalingas slaptažodis (jei nesate nustatę, jog rakto šifravimui būtų reikalingas slaptažodis). Taip pat naudojant viešąjį ir privatų raktą serveryje galima visiškai išjungti prisijungimą prie serverio naudojant slaptažodžius, tad visiškai nebėra galimybės prie serverio prisijungti nulaužus (crack, brute force ir pan.) slaptažodį.
1. Raktų generavimas kliento pusėje
Rekomenduojamas šiuolaikinis algoritmas:
ssh-keygen -t ed25519
Tai sukurs raktus kataloge ~/.ssh/:
id_ed25519– privatus raktasid_ed25519.pub– viešasis raktas
Jei nenorite, kad būtų prašomas rakto slaptažodis, paspauskite Enter kai bus paprašyta passphrase.
2. Nustatome privataus rakto teises
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519
3. Nukopijuojame viešą raktą į serverį
cat id_ed25519.pub >> ~/.ssh/authorized_keys
4. Nustatome teises serveryje
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Tai būtina, jei StrictModes yes nustatytas faile /etc/ssh/sshd_config (numatytoji reikšmė).
5. Išjungiame slaptažodinę autentifikaciją
Kai autentifikacija su SSH raktu veikia, rekomenduojama visiškai išjungti slaptažodžius.
Redaguojame:
nano /etc/ssh/sshd_config
Pakeičiame:
PasswordAuthentication no
Pritaikome pakeitimus perkraunant SSH tarnybą:
systemctl restart ssh
Pastaba:
Jei pamiršote prievadą - kreipkitės į klientų aptarnavimo skyrių su prašymu pašalinti atliktus pakeitimus (ar nurodyti SSH tarnybos naudojamą prievadą): http://klientams.iv.lt/support.php
Jeigu užblokavote sau prieigą prie savo serverio SSH tarnybos, išvalyti iptables taisykles visuomet galite patys, atidarę serverio paslaugą klientų sistemoje: https://klientams.iv.lt/services.php
Pasirinkite pageidaujamą serverio nuomos paslaugą;
Naujai atsidariusiame lange pasirinkite "Išvalyti iptables";
Naujai atsidariusiame lange ties klausimu "Ar tikrai pageidaujate išvalyti serverio <hostname> iptables?" pasirinkite "Taip" ir nuspauskite "Toliau >>".
Atlikus šiuos veiksmus serverio <hostname> iptables taisyklių valymo komanda bus sėkmingai išsiųsta ir įvykdyta per 5-10 min.
