Archives

Protejează-ți serverul SSH împotriva atacurilor bazate pe dicționare

Dacă tot povesteam acum ceva vreme despre cum se mai poate tăia elanul celor care umplu de spam bloguri și cam orice pagini cu formulare, poate că ar fi utile și mici sfaturi pentru protecția serverului de SSH împotriva atacurilor, în principal împotriva acelora bazate pe dicționare de cuvinte.

Nu-s eu cel mai în măsură a oferi sfaturi însă, un lucru mi se pare de bun simț atunci când ai o mașină Linux cu server de SSH activ, conectată direct la internet – folosirea unui alt port decât cel standard pentru conexiunile SSH. Pe de altă parte, recomand folosirea firewall-urilor personale.

În cazul în care ați optat pentru un firewall bazat pe iptables, următoarea regulă pentru iptables va mai reduce numărul atacurilor asupra serverului SSH, cel puțin al acelora bazate pe dicționare de cuvinte:

iptables -A INPUT -p tcp --dport ssh -m limit --limit 3/minute --limit-burst 2 -j ACCEPT

Astfel se setează un număr de trei conexiuni pe minut, însă partea interesantă e că primele două succesive vor “consuma” timpul, astfel că se va ajunge la o limită (practică) de doar o conexiune pe minut.

Salvarea datelor de pe servere Godaddy folosind rsync și SSH

Serviciile de găzduire de la Godaddy (mai ales de când au și servere în Europa) sunt de departe o opțiune bună atunci când ai bani puțini și multe site-uri cu atât mai mult cu cât beneficieze de spațiu nelimitat și trafic de asemenea nelimitat pentru aproape 12 Eur/lună.

Dar, ca orice serviciu ieftin, are și câteva minusuri majore cum ar fi (din punctul meu de vedere) faptul că rsync nu este suportat și astfel, planul meu de automatizare a salvărilor nu poate fi pus în practică.

Amu, după ce mi-am tocit nervii cu diverse combinații între FTP și diferențe locale, etc… am găsit o metodă cât de cât elegantă, care să îmi rezolva treburile cum vreau eu.

În primul rând, trebuie activat SSH-ul pe contul Godaddy. Pentru asta, după ce v-ați autentificat pe site-ul lor, din ceea ce se numește “Control Center”, mergeți la “Settings” și apoi “SSH”. Pentru a activa SSH va trebui să știți PIN-ul contului și să aveți la îndemână un telefon. După ce introduceți numărul de telefon și trimiteți comanda de activare, în maxim 3 minute veți primi un apel în care vi se va comunica codul de validare. După ce introduceți codul de validare, în alte 4-5 minute, veți avea SSH activ pe contul Godaddy.

Acum pe mașina care va face salvările, vom genera o cheie privată criptată RSA (în cazul în care nu avem deja una):

$ssh-keygen -t rsa

Veți fi întrebați dacă doriți să vă protejați cheia cu o parolă, dacă aveți o parolă personală lungă și pe care să v-o aduceți aminte… bine, dacă nu, nu-i un bai prea mare dacă nu puneți nici o parolă.

Acuma e necesar să ne conectăm prin SSH la contul de la Godaddy. Odată autentificat, trebuie făcuți următorii pași:

– În primul rând trebuie creat un director numit “.ssh”
– În acest director trebuie creat un fișier “authorized_keys”
– În fișierul cu pricina, trebuie introdus conținutul fișierului “id_rsa.pub” de pe computerul unde a fost generata cheia privată.

$ mkdir .ssh
$ cd .ssh
$ vi authorized_keys

Apoi este posibil să fie necesar să restabiliți drepturile de acces asupra întregului director.
Până aici, nimic nou nu? Acuma, dacă totul a decurs cum trebuie, vă puteți conecta cu ajutorul SSH fără a avea nevoie să folosiți parola.

De aici începe partea frumoasă.
Odată rezolvat accesul SSH fără parolă la contul Godaddy, putem să ne gândim să montăm acest cont într-un director local de unde apoi să facem manevrele de salvare cu rsync. Pentru asta, vom instala (în cazul în care nu a fost instalat deja) sshfs, cu ajutorul căruia vom monta într-un director local conținutul contului Godaddy.

Utilizatorii Ubuntu, pot instala sshfs direct din depozitele de bază cu comanda:

$ sudo apt-get install sshfs

Vom avea nevoie probabil de un director în care să montam.
De ex.

$ mkdir /mnt/godaddy

În cele din urmă, montăm contul extern:

$ sshfs -oreconenct utilizator@ip_sau_numedomeniu: /mnt/godaddy 

Am adăugat parametrul “reconnect” întrucât e foarte posibil să fiți deconectați mai ales dacă aveți multe fișiere de salvat.

Și de aici putem da drumul salvării rsync.

$ rsync -avqqz /mnt/godaddy/html /director/de/backup 

La sfârșit e bine să deconectați directorul montat

$ umount /mnt/godaddy 

Toate comenzile pot fi puse fără probleme într-un script a cărui execuție poate fi programată cu ajutorul cron.

De aici încolo las cale liberă oricăror sfaturi și comentarii 🙂

Sfaturi pentru securizarea serverelor SSH

Pentru că întotdeauna paza bună trece primejdia rea și-ți face somnul mai ușor… m-am gândit să pun câteva mici sfaturi, de bun simț, pentru cei care administrează servere OpenSSH.

În principiu, fișierul de configurare în care se află setările de bază este sshd_config și se găsește în directorul /etc/ssh/

Primul lucru care trebuie evitat este accesul utilizatorului root. Pentru conexiunile prin ssh faceți un utilizator cu drepturi cât mai puține dar cu o parolă cât mai complexă.
Acest lucru se face prin modificarea parametrului PermitRootLogin

 PermitRootLogin no 

și eventual restricționarea accesului ssh doar la utilizatorul specificat

AllowUsers utilizator_1 

Apoi, e foarte bine dacă schimbați portul pe care se fac conexiunile SSH, astfel, evitați mai mult de 50% din atacurile automate de tip brute-force.

Port 10666

În cazul în care serverul are mai multe plăci de rețea, cu mai multe adrese IP, e bine să specificați o adresă (preferabil cea internă, dacă este posibil) pe care vor fi acceptate conexiunile SSH:

ListenAddress 192.168.1.1

Reduceți timpul de așteptare a conectării. În configurația implicită, serverul de SSH așteaptă 2 minute introducerea unui utilizator și a unei parole. E indicată reducerea acestui interval. 30 de secunde sunt de cele mai multe ori suficiente.

LoginGraceTime 30

Colectați cât mai multe date despre ce s-a întâmplat în timpul conexiunii

LogLevel VERBOSE

Folosiți chei criptate pentru conexiune. Acest lucru va evita necesitatea trimiterii scrierii parolei (scăpați de eventuale keylogger-e) și este de asemenea metoda cea mai sigură atunci când vă conectați prin rețelele radio de prin locurile publice.

AuthorizedKeysFile     %h/.ssh/authorized_keys

După modificarea oricărui parametru din fișierul de configurare, este necesară repornirea serviciului SSH, de obicei acest lucru se face cu comanda:

$/etc/init.d/sshd restart

Nu în ultimul rând, este utilă folosirea pe server de programe ca denyhosts sau fail2ban care să blocheze accesul ip-urilor care încearcă de mai multe ori conexiunea cu date incorecte.

Sunt și multe alte metode de sporire a securității, acestea sunt însă cele mai la îndemână. Apoi, fiecare e liber să folosească orice alte unelte și/sau combinații de aplicații.

© 2009-2019 Alex. Burlacu
%d bloggers like this: