securizare ssh

Securizare SSH necesara pe sistemele Linux

OpenSSH (sau Secure Shell), a devenit un standard de facto pentru accesul de la distanta si a inlocuit protocolu Telnet. SSH se bazeaza pe protocol criptat, astfel ca, conexiunea de la distanta este securizata iar parolele si comenzile numai sunt trimise in mod text. Cu toate acestea, o instalare implicita de SSH nu este total sigura, iar atunci cand ruleaza un server de SSH, exista cativa paai simpli, care pot consolida securitatea sistemului.

Reguli pentru a realiza o securizare SSH optima

1. Utilizeaza Parole si Utilizatori cu grad mare de complexitate

2. Dezactiveaza ROOT Login

3. Limiteaza  numarul de logari al Utilizatorilor

4. Dezactiveaza Protocol 1

5. Utilizeaza port de conectare aleator

6. Filtreaza in Firewall portul standard de SSH

7. Utilizeaza chei publice sau private pentru autentificare

Securizare SSH recomandari

1.  Securizare SSH: Utilizarea de Username-uri predefinte si parole alcatuite dintr-un numar mic de litere sau cu repetitivitate mare a literelor in parola determina o munca mai usoara pentru hackeri si compromiterea administrarii serverului de SSH.

– foloseste parole de minim 8 caractere

– foloseste un mix de caractere mici cu caractere mari(caps)

– mixeaza litere cu cifre

– mixeaza si caractere non-alfanumerice

Recomand folosirea de generatoare de parole. Click aici

2. Securizare SSH: Dezactivarea se face prin modificarea fisierului sshd_config.

/etc/ssh/sshd_config

prin modificare liniei care trebuie sa arate de forma:

# Prevent root logins:
PermitRootLogin no

dupa care se restarteaza serviciul sshd cu comanda  service sshd restart
3. Securizare SSH: Limitarea loginului utilizatorilor

de exemplu alice si bob

/etc/ssh/sshd_config
AllowUsers alice bob

Nu uitati sa restartati serverul de ssh.

4. Securizare SSH: Dezactivarea Protocol 1. Aceasta se face pentru ca SSH foloseste 2 protocoale, iar Protocol 1 nu ofera securitate multumitoare.

Modificarea se face tot din

/etc/ssh/sshd_config
# Protocol 2,1
Protocol 2

5. Securizare SSH: Utilizeaza  porturi aleatoare. SSH-ul implicit foloseste portul 22, ceea ce face ca toti pustii care se ocupa cu hacking scaneaza serverele pentru gasirea portului de SSH. Plasan portul de conectare in preajma unor porturi de pentru torenti ii este foarte greu sa stabileasca ca este portul adevarat de conectare la server. Bineinteles ca schimbarea setarii portului se face tot din sshd_config.

# Run ssh on a non-standard port:
Port 2345 #Change me

Pentru testare se executa comanda:   ssh -p 2345 myserver

6. Securizare SSH: Filtrare SSH in Firewall

Regula firewall pentru un singur ip address de la care vine cererea de conectare remote:

iptables -A INPUT -p tcp -s 72.232.194.162 --dport 22 -j ACCEPT

Daca conectarea la server se face de pe mai multe statii puteti expune portul public si va puteti lua masuri impotriva ghicirii parolei prin metoda brute-force.

iptables -A INPUT -p tcp --dport 22 -m recent --set --name ssh --rsource
iptables -A INPUT -p tcp --dport 22 -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT

Un alt exemplu pentru limitarea numarului de incercari de parola:

iptables -A INPUT -p tcp --dport 22 --syn -m limit --limit 1/m --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 --syn -j DROP

Va accepta noi conectari pe port daca nu se greseste parola mai mult de 3 ori. Daca se greseste parola de mai mult de 3 ori, atunci portul va fi blocat un minut.

7. Securizare SSH: Folosirea de chei criptate este recomandata si ofera doua mari avantaje. Unul este ca nu mai e nevoie sa tastezi parola de fiecare data cand doresti sa te conectezi, iar al doilea este ca dupa ce s-a facut sincronizarea intre server si client nu mai trebuie sa reintroduci parola de root pentru operatiile care necesita introducerea acesteia.

seteaza permisiile pe keya de criptare:

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa

Copiaza cheia publica (id_rsa.pub) in server si instaleaz-o in authorized_keys:

$ cat id_rsa.pub >> ~/.ssh/authorized_keys (se poate sterge dupa ce a fost importata in server)

in final seteaza permisiunile serverului:

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

Permisiunile de mai sus sunt necesare daca StrictModes este setat yes in /etc/ssh/sshd_config (the default).

Acum, cand va conectati la server nu vi se va cere o parola (daca nu ati introdus o parola atunci cand ati creat perechea de chei). In mod implicit, ssh va incerca mai intai sa se autentifice utilizand cheile de criptare. Daca nu sunt gasite cheile de criptare sau autentificarea nu reuseste, atunci ssh se va intoarce la autentificare cu parola, conventionala.

Odata ce ati verificat ca va puteti loga cu succes la server folosind perechea de chei publice / private, puteti dezactiva parola de autentificare complet prin adaugarea setarea urmatoare in fisierul /etc/ssh/sshd_config:

# Disable password authentication forcing use of keys
PasswordAuthentication no

Astfel ati realizat o buna securizare ssh.