Pereiti prie pagrindinio turinio

OpenSSH (SSH) saugumo didinimas VPS serveryje

Atnaujinta šią savaitę

Š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 raktas

  • id_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.

Ar gavote atsakymą į savo klausimą?