Cinci pași simpli pentru a proteja ssh în ubuntu

Unul dintre cele mai importante lucruri de făcut imediat după conectarea unui server de la Ubuntu la Internet este, desigur, protecția împotriva accesului neautorizat la administrarea serverului prin ssh. Dacă acest lucru nu este realizat, atunci programe foarte scrise special scrise de scanare a rețelei globale vor găsi că portul 22 este deschis pe serverul dvs. și că este suficient să selectați doar parola pentru utilizatorul rădăcină pentru a controla complet sistemul. Desigur, nu există protecție absolută, dar putem complica complet sarcina unui atacator. Povestea despre metodele de protecție a ssh va fi păstrată, având în vedere posibilele caracteristici atât pentru serverele dedicate cu Ubuntu, cât și pentru serverele VPS / VDS.






Este absolut necesar să protejăm accesul prin ssh. Dacă nu ați făcut deja acest lucru, examinați doar fișierul /var/log/auth.log. Desigur, există înregistrări de încercări de acces neautorizat la sistem.

sudo nano / etc / ssh / sshd_config


Într-una din primele sale linii, găsim directiva Port. Schimbați numărul portului 22 la unul dintre porturile non-standard, de exemplu la 4117.

# Ce porturi, IP-uri și protocoale le ascultăm
Portul 4117


După aceea, reporniți serverul ssh:

sudo service ssh reporniți


... și destul de previzibil vom pierde contactul cu serverul. Prin urmare, reconectăm prin ssh, dar acum specificăm în parametrii de conectare un nou port, de exemplu, astfel:

ssh -p 4117 [email protected]


Schimbarea numărului portului ssh vă permite să eliminați majoritatea tentativelor de parolă prin programe automate. Cu toate acestea, acest pas nu vă va salva de la încercări mai profesioniste de acces neautorizat la sistemul dvs. Prin aceasta ar trebui aplicate alte metode de protecție.

sudo passwd -l rădăcină


Apoi, trebuie să știți cine are permisiunea de a executa comenzi în numele superuserului folosind cuvântul cheie sudo. Pentru aceasta trebuie să analizăm fișierul visudo:


În acest fișier puteți găsi următoarele linii:


Rândurile de mai sus înseamnă că utilizatorul rădăcină, precum și utilizatorii din grupurile sudo și admin, pot executa comenzi în numele super administratorului. Prin urmare, este suficient să plasați un utilizator nou într-unul din aceste grupuri. Fișierul visudo, între timp, ar trebui să fie închis fără a face modificări. După aceea, adăugați utilizatorul de test la grupul sudo:

testul usermod -a-G sudo


Pentru a verifica dacă utilizatorul de test a fost adăugat la grupul sudo, puteți executa următoarea comandă:


După aceea, închideți sesiunea ssh ca root, conectați-vă la sistem sub testul de utilizator (rețineți, schimbați numărul portului în primul pas) și dezactivați contul rădăcină:

logout
ssh -p 4117 [email protected]
sudo passwd -l rădăcină


Cheile implicite sunt stocate în directorul de domiciliu al utilizatorului, în fișiere

/.ssh/id_rsa (cheia privată) și

scp -P 4117 [email protected]:


Această comandă va încărca fișierul id_rsa.pub în serverul example.org în directorul home al testului utilizatorului. De asemenea, această comandă specifică un număr de port non-standard ssh: 4117. Apoi, pe serverul de la distanță, trebuie să adăugați conținutul fișierului id_rsa.pub în fișier







/.ssh/authorized_keys în directorul de domiciliu al utilizatorului pe care dorim să-l logăm folosind cheia generată. După adăugarea la cheile autorizate, fișierul sursă cu cheia publică poate fi șters.

ssh -p 4117 -v [email protected]

# Schimbați la nu pentru a dezactiva parolele de text clare
PasswordAuthentication nr


După aceea, trebuie doar să reporniți ssh:

sudo service ssh reporniți

sudo aptitude install denyhosts


Pentru ca setările noi să aibă efect, trebuie să reporniți serviciul denyhosts:

sudo service denyhosts reporniți

În general, cei patru pași pe care i-am descris ar trebui să fie mai mult decât suficienți pentru a îmbunătăți securitatea serverului atunci când accesați ssh. Ultimul al cincilea pas, despre care vreau să vorbesc, poate fi folosit atunci când este necesară o abordare aproape paranoică a securității serverului. Metoda care va fi descrisă în al cincilea pas utilizează tehnologia.

Esența lui constă în faptul că serverul pornește un serviciu special, care "ascultă" conexiunile la toate porturile și după primirea unei secvențe de conexiune așteptate, execută o comandă predeterminată de administrator. Această tehnologie oferă o oportunitate suplimentară pentru gestionarea de la distanță a serverului. Rămâne doar să închidem portul ssh și să setăm serviciul knockd la această comandă, ceea ce va determina paravanul de protecție să deschidă portul ssh atunci când primește o secvență specifică de conexiuni la porturile serverului. Apoi, voi descrie modul în care se poate face cât mai simplu și mai rapid posibil în Ubuntu.

Pasul Cinci
Pe un server de la distanță, toate acțiunile enumerate mai jos trebuie efectuate cu mare grijă, deoarece există riscul de a pierde comunicarea cu serverul în caz de eroare.
Mai întâi trebuie să instalați pachetul knockd. De asemenea, va fi instalat împreună cu acesta un utilitar de ștergere, cu care puteți "atinge" porturile de pe un server de la distanță.

sudo aptitude instalare knockd


Ca parte a Ubuntu, există un firewall simplificat, care este mult mai ușor de înțeles decât iptables. Prin urmare, pentru a deschide portul ssh prin serviciul knockd, vom folosi ufw, care este în esență un add-on pentru iptables. Pachetul ufw este instalat în mod implicit în Ubuntu. Dacă nu există un pachet ufw, acesta poate fi instalat. Cu toate acestea, trebuie să avertizez că dacă nu există niciun pachet ufw pe serverul dedicat virtual (VPS / VDS), atunci este mai bine să nu îl instalați. Astfel de servere folosesc de obicei nuclee speciale linux, unele dintre acestea fiind incompatibile cu firewall-ul ufw.
Și atunci când porniți firewall-ul ufw, toate porturile se vor închide. De aceea, înainte de a începe ufw, deschideți portul pe care se află ssh. În cele mai multe cazuri, acesta este portul 22, dar în articolul precedent am folosit portul 4117 în aceste scopuri.

sudo ufw permite 22
sudo ufw enable


Apoi trebuie să configurați fișierele de configurare pentru serviciul knockd. Mai jos dau un exemplu de fișier de configurare pentru deschiderea portului 22 pe un server la distanță.

[Opțiuni]
logfile = /var/log/knockd.log

[OpenSSH]
secventa = 4561: tcp, 7127: udp, 5934: tcp, 3901: udp
seq_timeout = 30
tcpflags = syn
start_command = ufw permite de la% IP% la orice port 22
cmd_timeout = 30
stop_command = ufw șterge permite de la% IP% la orice port 22

# de control dacă începem să batem la init sau nu
# 1 = începe
# altceva = nu începeți
#
# PLEASE EDIT /etc/knockd.conf ÎNAINTE DE A UTILIZAȚI
START_KNOCKD = 1


Apoi, reporniți serviciul însuși:

sudo serviciu repornire knockd


Pe computerul de la care ne vom conecta la serverul de la distanță, instalați de asemenea serviciul knockd și executați comanda care va adăuga noua regulă la paravanul de protecție:

sudo aptitude instalare knockd
knock 4561: tcp 7127: udp 5934: tcp 3901: udp


Pentru a verifica dacă a fost adăugată o nouă regulă, trebuie să executați comanda pe serverul de la distanță timp de 30 de secunde:

statutul sudo ufw

sudo ufw delete permite 22


Astfel, tehnologia Port knocking poate fi folosită ca o altă modalitate de a vă proteja serverul dedicat de cei răi. Cu toate acestea, trebuie să configurați cu atenție serviciul knockd, deoarece este posibil să închidem accesul la gestionarea serverului.







Articole similare

Trimiteți-le prietenilor: