[Tutorial]Securizare server SSH în Ubuntu, Mint și Trisquel

Locked
User avatar
cracker
Membru
Membru
Posts: 76
Joined: 7 years ago
Location: localhost
Has thanked: 0
Been thanked: 0
Zodiac:
Age: 26
Status: Offline

7 years ago

Notă: În acest tutorial se presupune că serverul SSH rulează distribuția Ubuntu 14.04 și pe mașina client este o distribuție GNU+Linux.

Instalarea SSH
În primul rând trebuie să actualizați sistemul și să instalați SSH-ul, dacă nu le aveți instalate.

sudo apt-get update
sudo apt-get install openssh-server
Pentru a instala clientul SSH pe mașina client (server) rulați comanda:

sudo apt-get install openssh-client
Configurare SSH pentru autentificarea cu parolă
Există două metode de autentificare într-un server SSH:

o metodă este autentificarea pe bază de parolă.
cealaltă metodă este autentificarea pe bază de cheie.
Autentificarea prin parolă este des folosită, ușor de utilizat și la fel de ușor de spart (dacă utilizatorul folosește o parolă slabă). Autentificare prin cheie SSH oferă o modalitate simplă și sigură pentru conectarea la un server și această metodă este recomandată tuturor utilizatorilor.

Pe mașina client (server) creați directorul (în cazul în care nu există):

mkdir -p ~/.ssh/
Se generează cheia SSH pe mașina client

cd ~/.ssh
ssh-keygen -t rsa
Apăsați tasta Enter la fiecare prompt. Acest lucru produce două fișiere: id_rsa.pub (cheie publică) și id_rsa (cheie privată).

Rezultatul va fi ca în imaginea de mai jos:

ssh-keygen

După ce ați generat cheia SSH, copiați fișierul id_rsa.pub în calculatorul dumneavoastră folosind următoarea comandă:

scp -P yourport ~/.ssh/id_rsa.pub username@serverip:~/.ssh
„yourport” este numărul de port de la calculatorul dumneavoastră (implicit este 22), „username” este numele de utilizator pe care îl folosiți și „serverip” este adresa de ip al calculatorului.

Pe calculatorul dumneavoastră schimbați numele fișierului și permisiunea.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
rm .ssh/id_rsa.pub
Testați dacă metoda de autentificare pe bază de cheie lucrează fără probleme încercând să vă conectați la calculatorul dumneavoastră din mașină client:

ssh -P yourport username@serverip
Dacă ați reușit să vă conectați fără a introduce vreo parolă, înseamnă că această metodă merge fără probleme.

Securizare fișier SSH
Fișierul „/etc/ssh/sshd_config” este fișierul de configurare SSH la nivel de sistem care vă permite să setați diferite opțiuni pentru a îmbunătăți securitatea unui server SSH. Configurația implicită este foarte nesigură, așa că trebuie să editați fișierul mai întâi și să setați opțiunile corespunzătoare pentru a îmbunătăți securitatea.

Pentru editarea fișierului,rulați comanda:

sudo nano /etc/ssh/sshd_config
Schimbare port de ascultare SSH

În mod implicit, portul de ascultare SSH este 22. Atacatorii folosesc scanere de porturi pentru a vedea dacă un serviciu SSH este pornit sau nu. Este recomandat să schimbați portul implicit.

Pentru a schimba portul implicit la 2200, trebuie să schimbați:

Port 22
la

Port 2200
secure-ssh-change-port-number

Utilizați numai Protocolul 2

Versiunea 1 din protocol conține vulnerabilități de securitate. Protocolul 2 este intrarea implicită în Ubuntu.

Schimbați linia de mai jos:

Protocol 2
Setați limitarea accesului utilizatorilor

Este necesar să se permită numai anumitor utilizatori conectare la SSH. În mod implicit, această opțiune nu este disponibilă în fișierul de configurare SSH.

Pentru a seta permisiunile pentru anuniți utilizatori, adăugați următoarea linie (user1, user2 se înlocuiește cu numele utilizatorilor):

AllowUsers user1 user2
Pentru a interzice conectarea la anumiți utilizatori, adăugați următoarea linie (baduser1, baduser2 se înlocuiește cu numele utilizatorilor):

DenyUser baduser1 baduser2
Dezactivați autentificări ca root (administrator)

Nu este necesar să vă autentificați ca root într-o rețea SSH. Se poate folosi su sau sudo pentru a obține acces la nivelul root. Cei mai mulți atacatori vor încerca să atace conturile root. Este un risc foarte mare ce ține de securitate și de aceea este recomandat să se interzică conectarea prin root.

Pentru a dezactiva autentificarea prin root, căutați linia:

PermitRootLogin without-password
și modificați în

PermitRootLogin no
secure-ssh-permit-root

Ascundeți informația ultimei autentificări

Se poate ascunde informația despre ultima autentificare a unui utilizator. Pentru acest lucru, schimbați linia:

PrintLastLog yes
în

PrintLastLog no
secure-ssh-last-log

Restricționați autentificarea adreselor IP

În mod implicit, rețeaua SSH este configurată pentru a permite autentificarea de la toate adresele IP. Este recomandat să se permită doar unei sau anumitor adrese IP conectarea la rețeaua SSH. Pentru acest lucru, schimbați linia:

#ListenAddress ::
la

ListenAddress 192.168.1.20
secure-ssh-listen-address

Dezactivați fișierele .rhosts

Fișierele .rhosts specifică ce utilizatorii au acces la comenzile r (rsh, rcp, rlogin etc.) de pe mașina locală fără o parolă. În mod implicit un fișier .rhost este dezactivat, dacă nu este dezactivat atunci modificați liniile următoare, așa cum sunt cele de mai jos:

IgnoreRhosts yes
RhostsAuthentication no
RSAAuthentication yes
Dezactivarea autentificării pe bază de gazdă

Autentificarea SSH pe bază de gazdă este mai sigură decât autentificarea rhost. Cu toate acestea, nu este recomandată această metodă. În mod implicit, această opțiune este dezactivată, dacă nu este dezactivată atunci modificați linia următoare, așa cum vedeți mai jos:

HostbasedAuthentication no
Setarea unui timp de grație pentru deconectare

„LoginGraceTime” specifică intervalul de timp până când se va deconecta automat contul unui utilizator autentificat. Este recomandat să se seteze la 60 de secunde.

Pentru acest lucru, schimbați linia:

LoginGraceTime 120
în

LoginGraceTime 60
secure-ssh-login-gracetime

Setarea unor conexiuni maxime

Configurarea unui număr maxim de conexiuni la serviciul SSH pot fi de ajutor împotriva unui atac de forță brută. Schimbați linia:

#MaxStartups 10:30:60
în

MaxStartups 2
secure-ssh-max-startup

Dezactivarea redirecționării grafice

Dacă pe sistemul dumneavoastră este instalată o interfață grafică (i.e. serverul Xorg) asta ar putea permite unor atacatori să folosească redirectarea sesiunii X prin tunelul SSH pentru a se autentifica direct în mediul grafic al dumneavoastră. Este recomandat să dezactivați această opțiune.

Schimbați linia

X11Forwarding yes
în

X11Forwarding no
secure-ssh-x11forwarding

Înregistrați mai multe informații

În mod implicit, SSH înregistrează tot ce se întâmplă (conectări, autentificări etc). Dacă doriți mai multe informații, precum încercări eșuate de autentificare, puteți schimba această valoare.

Schimbați linia

LogLevel INFO
în

LogLevel VERBOSE
secure-ssh-loglevel

Dezactivați parolele nule

Trebuie să interziceți autentificarea pentru utilizatorii fără parole. În mod implicit, PermitEmptyPasswords este dezactivat în Ubuntu.

Dacă nu este, schimbați linia de mai jos:

PermitEmptyPasswords yes
în

PermitEmptyPasswords no
Setați intervalul timpilor morți

Această opțiune nu este disponibilă în fișierul implicit de configurație SSH. Este recomandat să setați o perioadă de timpi morți (timeout) pentru a evita existența unei sesiuni nesupravegheată de ssh.

Mai întâi, adăugați următoarele linii.

ClientAliveInterval 300
ClientAliveCountMax 0
Modul strict

Aceasta va preveni folosirea dosarului „home” (Acasă) nesecurizat și a unor permisiuni de fișier nesigure. Opțiunea este activată în mod implicit.

Dacă nu este, schimbați următoarea linie să arate în felul următor:

StrictMode yes
Acum salvați si ieșiți din fișierul de configurare /etc/ssh/sshd_config și reporniți serverul SSH.

sudo service ssh restart
Securizați SSH folosind „învelișurile” TCP

Un înveliș TCP (în engleză: „wrapper”) oferă controlul accesului pe bază de gazdă serviciilor de rețea pentru a filtra accesul rețelei la internet. Editați fișierul „/etc/hosts.allow” pentru a permite accesul numai de la adresele exemplu 192.168.1.2 și 172.16.23.12 .

sudo nano /etc/hosts.allow
Și adăugați linia următoare:

sshd : 192.168.1.2 172.16.23.12/code>
Securizați SSH folosind iptables

În mod implicit, un server SSH trebuie să accepte doar conexiuni de pe rețeaua locală sau alte locații la distanță. Este recomandat să permiteți accesul doar anumitor adrese de IP la SSH și blocarea adreselor neautorizate.

Pentru a permite conexiunile SSH doar de la adresa exemplu 192.168.1.2, rulați următoarea comandă:

sudo iptables -A INPUT -p tcp -m state --state NEW --source 192.168.1.2 --dport 2200 -j ACCEPT
Dezactivați conectarea SSH-ului la orice alte gazde prin următoarea comandă:

sudo iptables -A INPUT -p tcp --dport 2200 -j DROP
Acum salvați noile reguli cu următoarea comandă:

sudo iptables-save > /etc/iptables/rules.v4
În concluzie

Instrucțiunile de mai sus descriu niște tehnici puternice pentru securizarea serverului de SSH al dumneavoastră. Această postare acoperă toate informațiile necesare de cei mai mulți utilizatori care au nevoie de un server SSH.
Programming, scripting, cracking and pentesting.
Freelance work.
Locked

Return to “Linux & Unix”