Securizare SSH

      OpenSSH este recomandat pentru autentificarea de la distanta, pentru realizarea backup-urilor, transferului de fisiere la distanta prin scp sau SFTP.  


SSH este perfect pentru a pastra confidentialitatea si integritatea datelor schimbate  intre doua retele si sisteme. Cu toate acestea, principalul avantaj este autentificarea pe server, prin utilizarea criptografiei cu chei publice.


Fisierele de configurare pentru serviciul si clientul SSH:

     / etc / ssh / sshd_config - fisierul de configurare a serviciului ssh;
     / etc / ssh / ssh_config - fisierul de configurare al clientului ssh;
     ~ / ssh / - directorul de configurare al utilizatorilor ssh;
     ~ / .ssh / authorized_keys sau ~ / .ssh / authorized_keys - liste chei publice (RSA sau DSA), care pot fi utilizate pentru a va conecta la contul utilizatorului;
     / etc / nologin - daca acest fisier exista, sshd refuza orice conexiune, cu exceptia root-ului;
     / etc / hosts.allow si / etc / hosts.deny -  fisierele ce controleaza listele de acces;
     - SSH port-ul implicit: TCP 22.

In scopul de a imbunatati securitatea serviciului OpenSSH, echipa DLSit va prezinta cele mai bune practici de securitate:

 1. Dezactivati serviciul SSH

Statiile de lucru si laptop-urile pot  functiona fara serviciul ssh. Daca nu se ofera autentificare de la distanta si capabilitati de transfer de fisiere de SSH, dezactivati si scoateti serviciul sshd.

CentOS/RHEL/Fedora Linux - utilizatorul poate dezactiva serviciul ssh cu comanda yum:



             #chkconfig  sshd off


             #yum erase openssh-server

Debian / Ubuntu Linux - utilizatorul poate dezactiva cu comanda cu apt-get :



             #apt-get remove openssh-server

 

Ar putea fi necesara  actualizarea iptables pentru eliminarea regulilor ssh.

Sub CentOS/RHEL/Fedora se vor edita fisierele  /etc/sysconfig/iptables si /etc/sysconfig/ip6tables.

 

Reporniti serviciul iptables:



             #service iptables  restart


             #service ip6tables  restart

2. Folositi doar Protocolul 2 SSH

 

Protocolul SSH versiunea 1 (SSH-1) are  vulnerabilitati de securitate de tipul „man in the middle”.
SSH-1 este destul de vechi si ar trebui sa fie evitat cu orice pret.  La deschiderea  fisierului  sshd_config  asigurati-va ca exista urmatoarea linie:



             Protocolul 2

 

3. Limitarea accesului utilizatorilor SSH


Toate sistemele se pot autentifica prin SSH folosind parole sau chei publice. Uneori va creati un cont de utilizator UNIX/Linux  pentru FTP sau e-mail. Vor avea acces complet la instrumentele sistemului, inclusiv compilatoare si limbaje de scripting cum ar fi Perl, Python, care pot  deschide porturile de retea  si multe altele. Un atacator daca este capabil sa creeze un cont nou pe sistem prin intermediul unui script PHP,  acesta nu va reusi sa intre prin ssh, pentru ca nu era in AllowUsers.

Permite numai  root, xulescu si popescu  pentru  utilizarea SSH, adaugand urmatoarea linie in sshd_config:

                        
            
AllowUsers root  xulescu  popescu



Puteti permite tuturor utilizatorilor sa se autentifice prin SSH, cu posibilitatea ca anumiti utilizatori sa fie blocati adaugand urmatoarea linie in sshd_config:



             DenyUsers xulescu  yxulescu  zxulescu




 4. Configurati  intervalul de expirare al sesiunii ssh


Utilizatorul se poate conecta la server prin SSH si puteti seta un interval de expirare al sesiunii,  in caz ca veti lasa terminalul deschis pentru a rezolva ceva urgent!  Deschideti sshd_config si asigurati-va ca sunt configurate urmatoarele valori:

             ClientAliveInterval 300


             ClientAliveCountMax 0

Setati un interval in secunde (300 secs = 5 minute). Daca acest interval este depasit fara nici o actiune a utilizatorului asupra serverului prin serviciul sshd , acesta va fi automat deconectat.

 

 5. Dezactiveaza fisierele rhosts

 

Fisierele utilizatorului sa nu poata fi citite ~ /. Rhosts si ~ /. Shosts. Actualizati sshd_config cu urmatoarele setari:

 

             IgnoreRhosts yes

 

Dezactivarea accesului nesigur prin intermediul RSH.


 6. Dezactiveaza Host-Based Authentication


Pentru a dezactiva autentificarea pe baza de gazda, actualizati sshd_config cu urmatoarea setare:



            HostbasedAuthentication no


 7. Anuleaza autentificarea ca root prin SSH


Nu este nevoie sa te autentifici ca root prin SSH intr-o retea. Utilizatorii normali pot folosi  su sau sudo pentru a obtine nivelul de acces root. Pentru a dezactiva autentificare ca root prin SSH, actualizati sshd_config cu linia urmatoare:

          

            PermitRootLogin no


8. Firewall pe portul SSH


Aveti nevoie de actualizarea iptables sau a fisierului de configurare pentru firewall-ului dvs pentru portul 22.
De obicei, serviciul ssh trebuie sa accepte doar conexiuni de la LAN-ul sau din WAN-uri sigure (daca se mai gasesc!).

Editati fisierul de configurare iptables  /etc/sysconfig/iptables (RedHat) pentru a accepta conexiuni doar de la 192.168.1.0/24 si 10.1.1.0/28, introduceti:

 

             -A  INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT


             -A  INPUT -s 10.1.1.0/28 -m state --state NEW -p tcp --dport 22 -j ACCEPT

 

9. Schimbarea  port-ului  SSH si limitarea IP-ului


Default  SSH asculta pe toate interfetele disponibile si de la orice adresa IP din LAN (daca nu este un firewall activat).  Limitarea si schimbarea portului ssh este obligatorie (scripturi de brute force incearca sa se conecteaze doar pe portul 22). Pentru a avea acces de la IP-urile 192.168.1.7 si 10.1.1.5 pe portul 300, la serviciul ssh se adauga urmatoarele linii:



             Port 300


             ListenAddress 192.168.1.7


             ListenAddress 10.1.1.7


10. Utilizati parole ssh puternice si Passphrase


Este foarte important sa utilizati parole puternice de utilizator si parole-fraza pentru chei. Atacurile brute force se bazeaza pe faptul ca utilizatorii folosesc  parole bazate pe dictionar. Puteti obliga utilizatorii sa evite acest tip de parole pentru a nu fi vulnerabili impotriva unui atac brute force sau a instrumentului  john ripper pentru a afla parolele slabe.
Mai jos este un generator de parola  aleatoriu (se pune in ~ . / bashrc)

             genpasswd() {

                     local l=$1

                    [ "$l" == "" ] && l=16

                     tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs

             }

 

Se ruleaza prin comanda:  #genpasswd 16

La iesire vom avea ceva asemanator cu textul din dreapta: GfgCnDV43536vOKvbnV

 

 11. Foloseste autentificare bazata pe chei publice


Utilizati pereche de chei publice/private, cu protectie prin parola pentru cheia privata. A se vedea modul de utilizare de chei de autentificare bazate pe RSA si DSA. Nu folositi niciodata „passphrase” tasta space.

 

12. Dezactiveaza parole

 

Pentru  a interzice in mod explicit autentificare de la distanta de la conturile cu parole goale, actualizati sshd_config cu linia urmatoare:

             PermitEmptyPasswords no


13. Limitarea numarului de conexiuni  pe portul 22

 

Urmatorul exemplu va bloca conexiunile , care fac mai mult de 5 incercari de conectare la portul 22 in termen de 60 secunde:

 

#!/bin/bash

 inet_if=eth1

 ssh_port=22

$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent  --set

$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent  --update --seconds 60 --hitcount 5 -j DROP

 sau

 $IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port} -m state --state NEW -m limit --limit 5/min --limit-burst 5 -j ACCEPT

$IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT

 $IPT -A OUTPUT -o ${inet_if} -p tcp --sport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT

sau

 # $IPT -A INPUT -i ${inet_if} -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -m limit --limit 5/min --limit-burst 5-j ACCEPT

Securizare SSH
  • Avem nevoie de ajutorul vostru, am trimis mai multe articole, astept raspuns 1 days ago