Configurarea SSH pentru a proteja împotriva forței brute masive. Protecție împotriva forței brute SSH

În acest articol, vom analiza o metodă de bază pentru protejarea SSH de masa atacuri bruteforce. În acest caz, un atac de forță brută în masă nu înseamnă un atac de forță brută vizat asupra parolei dvs. SSH, ci o confiscare extinsă a unei game de servere, pentru identificarea ulterioară a celor instabile pentru asocierea forței brute de conectare-parolă.

Principalele caracteristici ale atacului masiv bruteforce SSH sunt scanarea extinsă a intervalelor IP pe portul deschis 22 și utilizarea numelui de utilizator și a parolei, care sunt adesea utilizate (de exemplu, root: passwd123, admin: server123 etc.).

Pentru a vizualiza statistici din fișierele jurnal ale încercărilor nereușite de autorizare SSH pe serverul dvs., introduceți comanda:

Cat / var / log / secure * | grep "Parola eșuată" | grep sshd | awk "(tipăriți 1 $, 2 $)" | sortare -k 1,1M -k 2n | uniq -c

Această captură de ecran oferă statistici cu privire la numărul de autorizări nereușite pe zi. Dacă furați date similare de la dvs., atunci ar trebui să luați măsuri pentru a vă proteja SSH de forța brută masivă.

1. Dacă tu nu folosi nume de utilizator utilizate frecvent pentru autorizare, cum ar fi root, administrator, administrator, utilizator etc. și utilizați o parolă complexă pentru autorizare, apoi puteți trece imediat la al doilea punct. Pentru a schimba parola la una mai complexă, introduceți comanda:

Passwd # your_login #

unde # logare_dvs. # - Nume de utilizator.
Când introduceți o parolă nouă, parola nu este afișată, cursorul va fi într-un singur loc.

Să mergem la server prin SSH, să creăm un nou utilizator și să setăm o parolă pentru el, pentru aceasta introducem comenzile:

Adduser # newuser # passwd # newuser #

unde # utilizator nou # - Noul dvs. nume de utilizator, nu utilizați nume de utilizator utilizate în mod obișnuit, nu este o opțiune proastă dvs._nickadmin (de ex. foxadmin, useralex, rootidler).

2. După aceea, treceți prin SSH cu un nume de utilizator și o parolă noi. Și deschideți configurația daemon SSH (sshd_config) cu comanda:

Vi / etc / ssh / sshd_config

După aceea, ar trebui să vedeți așa ceva:

Linii care încep cu # sunt comentate.

La protejează SSH de forța brută masivă, decomentați și modificați sau adăugați următorii parametri fişier:
A) port - portul pe care SSHD acceptă și oferă conexiuni. Decomentează (elimină înainte de începutul liniei # ) și schimbați valoarea implicită 22 , către oricare altul de la 1024 la 65536, cu excepția rezervatelor - o listă de porturi rezervate, de exemplu:

Portul 2022

A sterge # și modificați valoarea portul 22, apăsați mai întâi pe tastatură eu, după editarea liniei necesare, apăsați tasta ESC

b) LoginGraceTime - timpul de așteptare pentru înregistrarea utilizatorului în sistem. Dacă utilizatorul nu a avut timp să se conecteze la sistem în timpul alocat de această directivă, sesiunea este încheiată. Să reducem această valoare:

LoginGraceTime 1m

c) PermitRootLogin - permite utilizatorului rădăcină autentificare prin protocol SSH. Schimba in nu.

PermitRootLogin nr

d) AllowUsers - numele de utilizator permise pentru autentificare prin protocol SSH separate printr-un spațiu. Aici, în loc de # your_login #, specificăm noul nume de utilizator creat.

AllowUsers # your_login #

e) MaxAuthTries - numărul de încercări de conectare la sistem într-o singură sesiune. Când se atinge numărul maxim permis de încercări, sesiunea este încheiată.

MaxAuthTries 2

Ca urmare, obținem:

Port 2022 LoginGraceTime 1m PermitRootLogin no AllowUsers # your_login # MaxAuthTries 2

În acest articol, vom finaliza configurarea SSH pentru a proteja împotriva masei forta bruta... După editare , apăsați pe tastatură : , o linie apare mai jos și apoi introduceți în ea wq și apăsați tasta introduce... În acest caz, toate modificările efectuate vor fi salvate.

Dacă ați făcut ceva greșit (de exemplu, ați șters ceva din greșeală), a ieși fără a salva folosiți în schimb combinația de taste wq, chei q!

După finalizarea configurației SSH, reporniți daemonul cu comanda:

Service sshd reporniți

Acum, când vă conectați prin protocolul SSH, utilizați noul port 2022 (sau cel pe care l-ați specificat în setări) în loc de port standard 22.

În articolul următor despre configurarea SSH, aș dori să vă spun că, în același timp, vom interzice autorizarea parolei și vom permite autorizarea numai folosind cheia privată SSH, protejându-ne astfel cât mai mult posibil de ghicirea parolei.

În contact cu

SSH vă permite să creați o conexiune sigură la server, cu toate acestea, pentru a funcționa corect, serviciul SSH în sine trebuie să aibă acces la Internet. Acest lucru creează un vector de atac pentru potențialii atacatori, prin urmare SSH are nevoie de protecție suplimentară.

În general, orice serviciu cu acces la rețea este o țintă potențială. În jurnalele acestor servicii, puteți observa încercări repetate și sistematice de conectare - acestea sunt atacuri cu forță brută de către utilizatori și roboți.

Serviciul fail2ban poate atenua atacurile cu reguli care reconfigurează automat firewall-ul iptables pe baza unui număr predefinit de încercări de conectare eșuate. Acest lucru va permite serverului să răspundă în timp util la accesul neautorizat fără intervenția administratorului.

Acest ghid vă va ajuta să instalați și să configurați fail2ban pe un server Ubuntu 14.04.

Instalați fail2ban

Depozitul Ubuntu oferă pachetul fail2ban, deci poate fi instalat folosind managerul de pachete standard.

Actualizați indexul pachetului și instalați fail2ban folosind aceste comenzi:

sudo apt-get update
sudo apt-get install fail2ban

Acum puteți începe configurarea utilitarului.

Configurații Fail2ban

Fișierele de configurare fail2ban sunt stocate în directorul / etc / fail2ban. Parametrii standard pot fi găsiți în fișierul jail.conf.

Deoarece acest fișier poate fi schimbat în timpul actualizării pachetului, nu este nevoie să îl editați. Este mai bine să copiați conținutul său într-un alt fișier și să ajustați parametrii acolo. Pentru ca aceste două fișiere să funcționeze corect, este mai bine să lăsați în noul fișier doar acele setări care trebuie să fie suprascrise în fișierul jail.local. Toți parametrii în mod implicit vor fi citiți din fișierul jail.conf.

Copiați jail.conf și utilizați-l ca bază pentru fișierul jail.local. Pentru a face acest lucru, introduceți:

awk "(printf" # "; print;)" /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local

După aceea, uitați-vă la jail.conf:

sudo nano /etc/fail2ban/jail.conf

Unii parametri pot fi actualizați în acest fișier. Parametrii secțiunii se vor aplica tuturor serviciilor care acceptă fail2ban (cu excepția cazului în care aceste valori sunt suprascrise în fișierele de configurare ale acestor servicii).


. . .
ignoreip \u003d 127.0.0.1/8
. . .

Parametrul ignoreip configurează adresele sursă pe care fail2ban le va ignora. În mod implicit, permite trecerea oricărui trafic care vine de la mașina locală. Puteți adăuga alte adrese pe care să le ignorați plasându-le la sfârșitul directivei ignoreip, separate printr-un spațiu.


. . .
bantime \u003d 600
. . .

Parametrul bantime setează timpul în care clientul va fi blocat dacă nu a reușit să se autentifice. Valoarea sa este măsurată în secunde. Valoarea implicită este de 600 de secunde (10 minute).


. . .
timp de căutare \u003d 600
maxretry \u003d 3
. . .

Următorii doi parametri care trebuie luați în considerare sunt timpul de căutare și maxretry. Împreună definesc condițiile în care utilizatorii ilegali vor fi blocați.

Variabila maxretry specifică numărul de încercări de autentificare și timp de căutare intervalul de timp în care utilizatorul trebuie să se autentifice. Dacă clientul a depășit oricare dintre acești indicatori, acesta va fi blocat. În mod implicit, serviciul fail2ban blochează clienții care nu au reușit să furnizeze acreditări de 3 ori în decurs de 10 minute.


. . .
destemail \u003d [e-mail protejat]
sendername \u003d Fail2Ban
mta \u003d sendmail
. . .

Parametrii destemail, sendername și mta vă permit să configurați alerte prin e-mail. Parametrul destemail specifică adresa de e-mail pentru a primi mesaje despre utilizatorii blocați. Parametrul sendername specifică expeditorul mesajului. Parametrul mta determină ce serviciu de e-mail va fi utilizat pentru a trimite e-mail. Adăugați acești parametri la jail.local în secțiune și setați valorile corespunzătoare.


. . .
action \u003d $ (action_) s
. . .

Acest parametru configurează acțiunea fail2ban în caz de blocare. Valoarea action_ este definită în fișier cu puțin înainte de acest parametru. Acțiunea implicită va bloca traficul atacatorului până când expiră timpul interzicerii prin reconfigurarea firewall-ului.

Dacă doriți să personalizați alertele prin e-mail, adăugați sau decomentați elementul de acțiune din fișierul jail.local și schimbați valoarea acestuia din acțiune_ în acțiune_mw. Dacă doriți ca e-mailul să includă liniile corespunzătoare din jurnale, puteți specifica valoarea action_mwl. Dacă alegeți să utilizați alerte prin e-mail, asigurați-vă că setările dvs. de e-mail le acceptă.

Parametrii individuali

Suportul pentru servicii individuale este inclus în secțiuni speciale cu același nume. De exemplu, parametrii serviciului ssh pot fi specificați în secțiune.

Fiecare dintre aceste secțiuni poate fi activată decomentând antetul secțiunii din jail.local și schimbând linia activată în „adevărat”:


. . .
activat \u003d adevărat
. . .

În mod implicit, numai serviciul SSH este acceptat, iar toate celelalte servicii sunt dezactivate.

Aceste secțiuni utilizează valorile setate în secțiune ca bază și le ajustează după cum este necesar. Pentru a suprascrie orice valori, adăugați o secțiune pentru serviciul corespunzător în jail.local și modificați valorile acestuia.

De asemenea, aici sunt stabiliți și alți parametri. Parametrul de filtrare ajută la determinarea dacă o linie din jurnal indică o încercare de autentificare eșuată; parametrul logpath spune fail2ban unde se află jurnalele pentru acel serviciu particular.

Valoarea parametrului de filtrare este o legătură către un fișier cu extensia .conf aflată în directorul /etc/fail2ban/filter.d. Aceste fișiere conțin expresii regulate care determină dacă o linie din jurnal este un mesaj despre o încercare de autentificare eșuată. Aceste fișiere sunt dincolo de sfera acestui tutorial, deoarece sunt destul de complexe, iar opțiunile implicite sunt în regulă în majoritatea cazurilor.

Puteți vizualiza filtrele din acest catalog:

ls /etc/fail2ban/filter.d

Găsiți fișierul asociat cu serviciul necesar și deschideți-l cu un editor de text. Majoritatea fișierelor sunt bine comentate și vă puteți familiariza cu scenariul de protecție a serviciului. Majoritatea acestor filtre au secțiuni corespunzătoare în fișierul jail.conf (sunt dezactivate în mod implicit). Acestea pot fi incluse în fișierul jail.local, dacă este necesar.

Să presupunem că aveți un site care este servit cu Nginx. Jurnalele serverului web sunt actualizate în mod constant cu încercări eșuate de autentificare. Utilitarul fail2ban poate utiliza fișierul nginx-http-auth.conf pentru a verifica în mod constant /var/log/nginx/error.log.

Aproape toți parametrii necesari pentru acest lucru se află deja în secțiunea din fișierul /etc/fail2ban/jail.conf. Trebuie doar să decomentați această secțiune în fișierul jail.local și să setați parametrul activat la true.

. . .
activat \u003d adevărat
. . .

După aceea, trebuie să reporniți fail2ban.

Configurarea fail2ban

Acum știți elementele de bază ale fail2ban. Încercați să configurați politica de blocare automată pentru serviciile SSH și Nginx. De asemenea, doriți ca instrumentul fail2ban să trimită mesaje de e-mail în cazul blocării IP.

Mai întâi, instalați software-ul necesar.

Veți avea nevoie de nginx deoarece fail2ban își va urmări jurnalele și sendmail pentru a trimite notificări. De asemenea, avem nevoie de pachetul iptables-persistent, astfel încât serverul să salveze și să încarce automat regulile firewallului atunci când serverul pornește. Toate aceste pachete pot fi descărcate din depozitele standard Ubuntu:

sudo apt-get update
sudo apt-get install nginx sendmail iptables-persistent

Opriți serviciul fail2ban pentru a configura un firewall de bază.

Configurarea firewall-ului

Paravanul de protecție de bază trebuie să accepte conexiunile stabilite, precum și traficul generat de serverul însuși și traficul destinat porturilor SSH și ale serverului web. Toate celelalte traficuri vor fi blocate. Regulile arată astfel:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate STABILIT, RELATAT -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --dports 80.443 -j ACCEPT
sudo iptables -A INPUT -j DROP

Aceste comenzi implementează politica de mai sus. Pentru a vizualiza regulile curente de firewall, tastați:

sudo iptables -S
-P INPUT ACCEPT
-P ACCEPTARE ÎNAINTE
-P ACCEPT DE IEȘIRE
-A INPUT -i lo -j ACCEPT




-A INPUT -j DROP

Salvați regulile firewall-ului pentru a nu se pierde după repornire.

sudo dpkg-reconfigure iptables-persistent

Reporniți fail2ban:

sudo service fail2ban start

Solicitați reguli firewall:

sudo iptables -S
-P INPUT ACCEPT
-P ACCEPTARE ÎNAINTE
-P ACCEPT DE IEȘIRE
-N fail2ban-ssh

-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED, STABILIT -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-ssh -j RETURN

Fiecare lanț are acum propria sa politică implicită. Există, de asemenea, cinci reguli de bază în firewall. Structura fail2ban este evidențiată în roșu: acest instrument aplică deja regulile de blocare SSH. Uneori, această structură nu este afișată la început, deoarece fail2ban poate să nu adauge structura până la primul bloc.

Configurarea fail2ban

Acum trebuie să adăugați setările fail2ban la fișierul jail.local:

sudo nano /etc/fail2ban/jail.local

Aici puteți seta un interval de timp de blocare mai strict. Găsiți și descomentați titlul. În această secțiune, modificați parametrul bantime astfel încât serviciul să blocheze clientul timp de o jumătate de oră:


. . .
bantime \u003d 1800
. . .

De asemenea, trebuie să configurați notificări. Mai întâi, găsiți parametrul destemail, care ar trebui să fie și în secțiune. Introduceți adresa de e-mail pe care doriți să o utilizați pentru a colecta aceste mesaje:


. . .
destemail \u003d [e-mail protejat]
. . .

În numele de trimitere, specificați orice valoare convenabilă. Vă recomandăm să utilizați aici o valoare descriptivă pe care serviciul poștal să o poată filtra cu ușurință.

Apoi, trebuie să stabiliți valoarea acțiunii. Puteți seta valoarea action_mw, care blochează clientul și apoi trimite raportul „whois”. Valoarea action_mwl face același lucru, dar trimite și liniile de jurnal corespunzătoare în mesaj.


. . .
acțiune \u003d% (action_mwl) s
. . .

În secțiunea SSH din directiva maxretry, puteți modifica numărul încercărilor de autentificare eșuate. Dacă utilizați un port non-standard (nu 22), specificați-l în parametrul port. După cum sa menționat anterior, acest server este deja pornit.

Apoi găsiți secțiunea nginx-http-auth. Decomentați antetul și schimbați parametrul activat la „adevărat”.

. . .

activat \u003d adevărat
. . .

Asta este tot ce trebuie să faceți în această secțiune dacă serverul dvs. web utilizează porturi standard și jurnalele sale sunt stocate într-un director standard.

Reporniți fail2ban

Salvați și închideți fișierul.

Apoi reporniți serviciul fail2ban. Uneori este chiar mai bine să o oprești și apoi să o reiei.

sudo service fail2ban stop
sudo service fail2ban start

Poate dura câteva minute până se încarcă toate regulile firewall-ului. Uneori regulile nu sunt adăugate până când primul client nu este blocat. După un timp, veți putea verifica noile reguli:

sudo iptables -S
-P INPUT ACCEPT
-P ACCEPTARE ÎNAINTE
-P ACCEPT DE IEȘIRE
-N fail2ban-nginx-http-auth

-N fail2ban-ssh

-A INPUT -p tcp -m multiport --dports 80.443 -j fail2ban-nginx-http-auth


-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh

-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED, STABILIT -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-nginx-http-auth -j RETURN

-A fail2ban-ssh -j RETURN

Liniile create de politica fail2ban sunt evidențiate cu roșu. Acum pur și simplu direcționează traficul către lanțuri noi, aproape goale, și apoi trec fluxul de trafic înapoi către lanțul INPUT.

La aceste lanțuri se vor adăuga reguli de blocare.

Testarea politicii de blocare

Acum puteți testa regulile conectându-vă de pe un alt server care nu are acreditări pe serverul fail2ban.

Încercați să creați o conexiune SSH la server folosind acreditări inexistente:

ssh [e-mail protejat]_server_IP

Introduceți un set aleatoriu de caractere pentru parolă. Repetați de câteva ori. La un moment dat fail2ban va refuza accesul și va afișa mesajul „Permisiune refuzată”.

Reveniți la primul server și vizualizați noile reguli iptables:

sudo iptables -S
-P INPUT ACCEPT
-P ACCEPTARE ÎNAINTE
-P ACCEPT DE IEȘIRE
-N fail2ban-nginx-http-auth
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 80.443 -j fail2ban-nginx-http-auth
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED, STABILIT -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-nginx-http-auth -j RETURN
-A fail2ban-ssh -s 203.0.113.14/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -j RETURN

Noua regulă este evidențiată cu roșu. Blochează traficul de la adresa IP a celui de-al doilea server către portul SSH. Veți primi în scurt timp o notificare cu privire la blocarea clientului.

Concluzie

Acum sunteți familiarizat cu elementele de bază ale fail2ban și puteți crea o configurație de bază pentru acest instrument.

De îndată ce un serviciu „se aprinde” într-o rețea publică, acesta devine instantaneu un obiect de atac. Una dintre probleme este o încercare de a obține acces prin parole cu forță brută. Și SSH nu face excepție în acest caz.

Analiza fișierului jurnal de autentificare /var/log/auth.log sau a analogilor săi arată că încercările de a ghici o parolă se fac de obicei din mai multe adrese IP simultan și sunt întinse în timp.

Protecție împotriva forței brute SSH

Vă puteți proteja de acest lucru în diferite moduri:

  • Utilizarea capacităților de configurare SSH Daemon
  • Filtru de pachete
  • Aplicații speciale
  • Portul bate

Cel mai simplu și mai eficient mod este de a schimba portul implicit 22, de exemplu, în 2002, dacă acest lucru nu interferează cu alte sarcini. Facem o intrare în / etc / ssh / sshd_config:

După aceea, încercările de a ghici parolele se opresc practic. Există momente în care nu puteți schimba portul. Alternativ, puteți restricționa accesul SSH la anumiți utilizatori (în special, root) sau la un grup. În sshd_config, un număr de parametri sunt responsabili pentru acest lucru: AllowUsers, AllowGroups, DenyUsers și DenyGroups. În mod convenabil, puteți specifica IP sau subrețea cu datele de conectare. De exemplu, să permitem accesul utilizatorului administrator și utilizator, acesta din urmă dintr-un singur IP:

O altă opțiune eficientă pentru protecția forței brute este utilizarea certificatelor pentru autentificare. Mai mult, folosind potrivirea parametrilor speciali, puteți crea un bloc condițional în care puteți suprascrie parametrii secțiunii globale. De exemplu, vom dezactiva autentificarea SSH prin parolă pentru utilizatorul root, permițând tuturor celorlalți:

# permite tuturor accesul prin parolă
PasswordAuthentication da
# root va folosi doar certificatul
potriviți rădăcina utilizatorului
Parola Autentificare nr
KbdInteractiveAuthentication nr

Folosind TCP Wrapper, putem, de asemenea, să restricționăm accesul la orice serviciu numai de la anumite adrese IP, pentru aceasta trebuie doar să scrieți regula necesară în fișierul /etc/hosts.allow sau /etc/hosts.deny. Permiteți în /etc/hosts.allow acces numai din subrețeaua necesară:

sshd: 192.168.1.0/24: permite

Sau în /etc/hosts.deny:

sshd: ALL: nega
sshd: ALL EXCEPT 192.168.1.0/24: permite

Filtrul de pachete vă permite să setați foarte precis parametrii conexiunii, aruncând pachetele inutile. Cu ajutorul său, este ușor să restricționați accesul la portul 22 doar la anumite adrese. Exemplu simplu:

iptables -A INPUT -s! 192.168.0.1 -p tcp -m tcp --port 22 ↵
-j REJECT -reject-cu icmp-port-inaccesibil

Filtrarea pachetelor după porturi și adrese IP nu este foarte eficientă dacă administratorul nu este legat de locul de muncă. În acest caz, utilitățile speciale vă vor ajuta: Fail2ban, Sshguard. Fail2ban a fost inițial conceput pentru a securiza SSH. Deși astăzi este deja un cadru care poate fi ușor personalizat pentru orice aplicație. Principiul de funcționare este foarte simplu. Demonul verifică periodic jurnalele pentru înregistrări ale oricărei activități suspecte. Adresa IP suspectă este apoi blocată de iptables sau TCP Wrapper. După timpul specificat în setări, blocarea este de obicei eliminată, pentru a nu bloca accidental site-ul legal. Când regula este declanșată, un eveniment este înregistrat în jurnalul /var/log/fail2ban.log și se poate trimite un e-mail.

Un proces poate controla mai multe servicii simultan, iar pachetul conține setări gata făcute pentru aplicațiile Linux populare. În setările implicite, numai SSH este protejat.

Pe Ubuntu și Debian este instalat cu comanda:

$ sudo apt-get install fail2ban

Toate setările sunt realizate în mai multe fișiere aflate în directorul / etc / fail2ban. Fail2ban.conf conține parametri pentru pornirea daemonului însuși, jail.conf descrie serviciile monitorizate (în secțiunea SSH).

Enabled \u003d adevărat
port \u003d 22
filter \u003d sshd
logpath \u003d /var/log/auth.log
maxretry \u003d 3

Filtrele și acțiunile sunt scrise în fișiere situate în subdirectoarele filter.d și action.d. În mod implicit, toate fișierele au extensia .conf, este mai bine să nu le atingeți (inclusiv jail.conf). Toate modificările trebuie introduse într-un fișier cu extensia .local (de exemplu, jail.local), parametrii căruia înlocuiesc setările din prima și nu se vor pierde în timpul actualizării. Puteți utiliza utilitarul fail2ban-regex pentru a verifica dacă filtrul funcționează.

Secure Shell poate fi găsit peste tot. De la lansarea sa în 1995, SSH a fost adoptat pe scară largă ca un protocol puternic de acces la distanță pentru Linux.

Cu toate acestea, după cum știți, o mare forță este o mare responsabilitate. Un daemon SSH configurat incorect poate fi mai mult o amenințare decât un ajutor. În acest articol, vom parcurge cinci pași pentru a întări securitatea SSH.

1. Dezactivați autentificarea root.

Cel mai simplu pas. Evident, există câteva motive pentru a permite autentificarea root prin SSH. Dezactivarea unui astfel de acces este destul de simplă și va îmbunătăți securitatea.

Găsiți / etc / ssh / sshd_config (poate fi într-un director diferit, depinde de distribuție). În el definim locul PermitRootLogin și înlocuim valoarea cu „nu”:

PermitRootLogin nr

Desigur, acest lucru nu va împiedica pe nimeni să pătrundă în sistem sub un utilizator obișnuit, dar va servi în continuare ca un obstacol suplimentar în calea prevalenței sistemului.

După ce am citit toate cele scrise mai sus și am implementat în practică, ca rezultat, vom primi chei pentru autorizare pe server. După ce vă asigurați că totul funcționează, puteți dezactiva intrarea interactivă:

Parola Autentificare nr
ChallengeResponseAuthentication nr

Utilizând acest script Python, administratorul poate înregistra automat lista neagră a gazdelor după conectarea nereușită, interzicându-le pentru totdeauna. Cel mai simplu mod de instalare:

Europa ~ # emerge -pv denyhosts
Acestea sunt pachetele care ar fi combinate, în ordine:
Calculul dependențelor ... gata!
app-admin / denyhosts-2,5 0 kB
Dimensiunea totală a descărcărilor: 0 kB
europa ~ # emerge denyhosts

Nu există o mulțime de documentație în program (dacă există ceva, de exemplu), cu toate acestea, toate opțiunile de configurare sunt descrise în mod normal în fișierul de configurare.

Europa $ nano -w /etc/denyhosts.conf

Nu cred că configurarea DenyHosts va cauza probleme speciale - citiți cu atenție configurația.

După configurare, puteți rula programul cu un daemon sau prin programator. În daemonul Gentoo:

Rc-update adaugă denyhosts implicit

Prin cron, să spunem la fiecare 10 minute:

Python / usr / bin / denyhosts -c /etc/denyhosts.conf

Bucuria DenyHost nu constă doar în blocarea gazdelor care încearcă să ajungă la serverul dvs. SSH, ci și în faptul că vă puteți sincroniza „lista neagră” cu serverele DenyHost. Aceasta creează o listă colectivă de gazde care conține toți atacatorii. Va preveni un atac la rădăcină.

4. Schimbați numărul portului.

Majoritatea încercărilor de hacking provin din scripturi automate care scanează rețeaua pentru a da daoni SSH. În majoritatea covârșitoare a cazurilor, încearcă să intre în portul 22, care joacă doar în mâinile noastre. Prin schimbarea portului, vom întrerupe automat majoritatea încercărilor de acces neautorizat.

Merită schimbat în config.