În zilele noastre, configurarea unui server pe o găzduire este o chestiune de câteva minute și câteva clicuri de mouse. Dar imediat după lansare, se trezește într-un mediu ostil, pentru că este deschis către întregul Internet ca o fată nevinovată la o discotecă rock. Scanerele îl vor găsi rapid și vor descoperi mii de roboți cu scripturi automate care cercetează rețeaua în căutarea vulnerabilităților și a configurațiilor incorecte. Există câteva lucruri pe care ar trebui să le faceți imediat după lansare pentru a asigura protecția de bază.
Primul lucru pe care trebuie să-l faceți este să creați un utilizator non-root. Ideea este că utilizatorul root privilegii absolute în sistem, iar dacă îi permiteți administrarea de la distanță, atunci veți face jumătate din muncă pentru hacker, lăsându-i un nume de utilizator valid.
Prin urmare, trebuie să creați un alt utilizator și să dezactivați administrarea la distanță prin SSH pentru root.
Un nou utilizator este creat cu comanda useradd:
useradd [options] <username>
Apoi se adaugă o parolă pentru aceasta cu comanda passwd:
passwd <username>
În cele din urmă, acest utilizator trebuie adăugat la un grup care are dreptul de a executa comenzi cu privilegii ridicate sudo. În funcție de distribuția Linux, acestea pot fi grupuri diferite. De exemplu, în CentOS și Red Hat un utilizator este adăugat la un grup wheel:
usermod -aG wheel <username>
Pe Ubuntu este adăugat la grup sudo:
usermod -aG sudo <username>
Chei în loc de parole SSH
Forța brută sau scurgerea parolei este un vector de atac standard, așa că este mai bine să dezactivați autentificarea parolei în SSH (Secure Shell) și să utilizați în schimb autentificarea cu cheie.
Există diferite programe pentru implementarea protocolului SSH, cum ar fi lsh и dropbear, dar cel mai popular este OpenSSH. Instalarea clientului OpenSSH pe Ubuntu:
sudo apt install openssh-client
Instalare server:
sudo apt install openssh-server
Pornirea demonului SSH (sshd) pe un server Ubuntu:
sudo systemctl start sshd
Porniți automat demonul la fiecare pornire:
sudo systemctl enable sshd
Trebuie remarcat faptul că partea de server OpenSSH include partea client. Adică prin openssh-server te poti conecta la alte servere. Mai mult, de pe computerul dvs. client puteți lansa un tunel SSH de la un server la distanță la o gazdă terță parte, iar apoi gazda terță parte va considera serverul la distanță ca fiind sursa solicitărilor. O funcție foarte convenabilă pentru mascarea sistemului. Pentru mai multe detalii, vezi articolul. „Sfaturi practice, exemple și tuneluri SSH”.
De obicei, nu are rost să instalați un server cu drepturi depline pe computerul client pentru a preveni posibilitatea conexiunii de la distanță la computer (din motive de securitate).
Deci, pentru noul dvs. utilizator, trebuie mai întâi să generați chei SSH pe computerul de pe care veți accesa serverul:
ssh-keygen -t rsa
Cheia publică este stocată într-un fișier .pub și arată ca un șir de caractere aleatorii care începe cu ssh-rsa.
Apoi, ca root, creați un director SSH pe server în directorul principal al utilizatorului și adăugați cheia publică SSH la fișier authorized_keysfolosind un editor de text precum Vim:
Pe partea clientului, trebuie să specificați locația cheii secrete pentru autentificare:
ssh-add DIR_PATH/keylocation
Acum vă puteți conecta la server sub numele de utilizator folosind această cheie:
ssh [username]@hostname
După autorizare, puteți folosi comanda scp pentru a copia fișiere, utilitarul sshfs pentru montarea de la distanță a unui sistem de fișiere sau directoare.
Este recomandabil să faceți mai multe copii de rezervă ale cheii private, deoarece dacă dezactivați autentificarea parolei și o pierdeți, nu veți avea deloc cum să vă conectați la propriul server.
După cum am menționat mai sus, în SSH trebuie să dezactivați autentificarea pentru root (din acest motiv am creat un nou utilizator).
Pe CentOS/Red Hat găsim linia PermitRootLogin yes în fișierul de configurare /etc/ssh/sshd_config si schimba-l:
PermitRootLogin no
Pe Ubuntu adăugați linia PermitRootLogin no la fișierul de configurare 10-my-sshd-settings.conf:
După ce verificați dacă noul utilizator este autentificat folosind cheia acestuia, puteți dezactiva autentificarea parolei pentru a elimina riscul de scurgere a parolei sau de forța brută. Acum, pentru a accesa serverul, atacatorul va trebui să obțină cheia privată.
Pe CentOS/Red Hat găsim linia PasswordAuthentication yes în fișierul de configurare /etc/ssh/sshd_config și schimbați-l după cum urmează:
PasswordAuthentication no
Pe Ubuntu adăugați linia PasswordAuthentication no la dosar 10-my-sshd-settings.conf:
Pentru instrucțiuni despre cum să activați autentificarea cu doi factori prin SSH, consultați aici.
Firewall
Firewall-ul asigură că numai traficul de pe porturile pe care le permiteți direct va ajunge la server. Acest lucru protejează împotriva exploatării porturilor care sunt activate accidental de alte servicii, ceea ce reduce foarte mult suprafața de atac.
Înainte de a instala un firewall, trebuie să vă asigurați că SSH este inclus în lista de excluderi și nu va fi blocat. În caz contrar, după pornirea firewall-ului, nu ne vom putea conecta la server.
Distribuția Ubuntu vine cu Uncomplicated Firewall (Wow), și cu CentOS/Red Hat - firewalld.
Serviciu Fail2Ban analizează jurnalele serverului și numără numărul de încercări de acces de la fiecare adresă IP. Setările specifică regulile pentru câte încercări de acces sunt permise într-un anumit interval - după care această adresă IP este blocată pentru o anumită perioadă de timp. De exemplu, permitem 5 încercări nereușite de autentificare prin SSH într-o perioadă de 2 ore, după care blocăm această adresă IP timp de 12 ore.
Programul are două fișiere de configurare: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Restricțiile de interdicție sunt specificate în al doilea fișier.
Jail for SSH este activat în mod implicit cu setările implicite (5 încercări, interval 10 minute, ban timp de 10 minute).
Pe lângă SSH, Fail2Ban poate proteja alte servicii pe serverul web nginx sau Apache.
Actualizări automate de securitate
După cum știți, noi vulnerabilități se găsesc în mod constant în toate programele. După ce informațiile sunt publicate, exploit-urile sunt adăugate la pachetele populare de exploit, care sunt utilizate pe scară largă de hackeri și adolescenți atunci când scanează toate serverele la rând. Prin urmare, este foarte important să instalați actualizări de securitate imediat ce acestea devin disponibile.
Serverele Ubuntu au actualizări automate de securitate activate în mod implicit, deci nu sunt necesari pași suplimentari.
Pe CentOS/Red Hat trebuie să instalați aplicația dnf-automat și pornește cronometrul:
SSH a fost dezvoltat în 1995 pentru a înlocui telnet (portul 23) și ftp (portul 21), așa că autorul programului este Tatu Iltonen a ales implicit portul 22, și a fost aprobat de IANA.
Desigur, toți atacatorii știu pe ce port rulează SSH - și îl scanează împreună cu alte porturi standard pentru a afla versiunea software, pentru a verifica parolele standard de root și așa mai departe.
Schimbarea de mai multe ori a porturilor standard – ofuscarea – reduce volumul traficului de gunoi, dimensiunea jurnalelor și încărcarea pe server și, de asemenea, reduce suprafața de atac. Deși unii critică această metodă de „apărare prin obscuritate” (securitate prin obscuritate). Motivul este că această tehnică este opusă fundamentalului protectie arhitecturala. Prin urmare, de exemplu, Institutul Național de Standarde și Tehnologie din SUA „Ghid de securitate a serverului” indică necesitatea unei arhitecturi de server deschise: „Securitatea unui sistem nu trebuie să se bazeze pe secretul implementării componentelor sale”, se spune în document.
În teorie, schimbarea porturilor implicite este contrară practicilor de arhitectură deschisă. Dar, în practică, volumul traficului rău intenționat chiar scade, așa că aceasta este o măsură simplă și eficientă.
Numărul portului poate fi configurat prin schimbarea directivei Port 22 în fișierul de configurare / Etc / ssh / sshd_config. Este indicat și de parametru -p <port> в ssh. Client SSH și programe sftp suportă și parametrul -p <port>.
Parametru -p <port> poate fi folosit pentru a specifica numărul portului atunci când vă conectați folosind comanda ssh în Linux. ÎN sftp и scp este utilizat parametrul -P <port> (P majusculă). Specificarea acesteia din linia de comandă suprascrie orice valoare din fișierele de configurare.
Dacă există o mulțime de servere, aproape toate aceste acțiuni pentru a proteja un server Linux pot fi automatizate într-un script. Dar dacă există un singur server, atunci este mai bine să controlați manual procesul.
Despre drepturile de publicitate
Comanda si incepe sa lucrezi imediat! Crearea VDS orice configurație și cu orice sistem de operare într-un minut. Configurația maximă vă va permite să vă distrați - 128 de nuclee CPU, 512 GB RAM, 4000 GB NVMe. Destul de epic :)