Language: ro
Securitatea VPS de la zero: chei SSH, firewall și Fail2ban
Un VPS nou nu trebuie considerat sigur imediat după instalarea Ubuntu. Înainte să configurați accesul, serverul este deja vizibil pentru scanere: acestea încearcă parole SSH, caută panouri de administrare expuse și verifică vulnerabilități comune. În acest ghid vom parcurge pașii de bază pentru securizarea unui VPS de la zero: crearea unui utilizator separat, configurarea autentificării cu cheie SSH, restricționarea porturilor de rețea cu UFW și adăugarea Fail2ban. Toți pașii funcționează cu Ubuntu 22.04 și 24.04 atunci când comenzile sunt rulate de un utilizator cu privilegii sudo.
Înainte de a începe: faceți o listă a porturilor
Nu deschideți porturi „pentru orice eventualitate”. Un server web tipic are nevoie de:
22/tcp— SSH; ideal, restricționați-l după IP sau mutați-l pe alt port doar ca măsură suplimentară;80/tcp— HTTP; de obicei este necesar pentru redirecționarea la HTTPS și validarea unui certificat;443/tcp— HTTPS.
Un port de aplicație precum 3000, 8080 sau 9000 nu ar trebui să fie accesibil de pe internet dacă Nginx sau Caddy rulează în fața lui. Legați aplicația la 127.0.0.1 sau permiteți portul doar în rețeaua internă. Mai întâi aflați ce ascultă pe server:
sudo ss -tulpnDupă instalarea Docker, verificați separat regulile iptables: publicarea -p 3000:3000 poate expune un port în afara configurației așteptate. Pentru un serviciu public, este mai sigur să folosiți un proxy HTTPS și să păstrați portul intern ascuns.
Pasul 1. Actualizați sistemul și creați un administrator
Conectați-vă la VPS folosind datele de acces primite și instalați actualizările:
sudo apt update
sudo apt full-upgrade -y
sudo apt install -y ufw fail2ban unattended-upgradesCreați un utilizator personal. Înlocuiți alex cu numele dvs.:
sudo adduser alex
sudo usermod -aG sudo alexNu eliminați accesul inițial până când nu ați testat noul cont într-o fereastră de terminal separată. Aceasta este o regulă importantă: o greșeală SSH se repară mai ușor cât timp sesiunea curentă este încă deschisă.
Pasul 2. Creați o cheie SSH și instalați-o pe server
Pe computerul dvs. cu Linux, macOS sau Windows PowerShell, rulați:
ssh-keygen -t ed25519 -C "alex@my-computer"Apăsați Enter pentru a salva cheia în fișierul implicit, apoi setați o parolă pentru cheie. Nu trimiteți niciodată cheia privată într-un chat, nu o puneți într-un repository și nu o copiați pe VPS. Doar fișierul cu extensia .pub trebuie transferat pe server:
ssh-copy-id alex@SERVER_IPDacă ssh-copy-id nu este disponibil, afișați cheia publică folosind Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub în PowerShell, apoi adăugați-o pe server:
sudo install -d -m 700 -o alex -g alex /home/alex/.ssh
sudo nano /home/alex/.ssh/authorized_keys
sudo chown alex:alex /home/alex/.ssh/authorized_keys
sudo chmod 600 /home/alex/.ssh/authorized_keysLipiți cheia pe o singură linie și testați autentificarea înainte de a dezactiva parolele:
ssh alex@SERVER_IP
sudo whoamiRezultatul așteptat al ultimei comenzi este root. Dacă clientul SSH nu găsește cheia, specificați-o explicit: ssh -i ~/.ssh/id_ed25519 alex@SERVER_IP.
Pasul 3. Dezactivați autentificarea root și prin parolă
Faceți o copie de siguranță a configurației SSH:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_configAsigurați-vă că fișierul conține acești parametri:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
MaxAuthTries 3În Ubuntu, setările pot fi localizate în /etc/ssh/sshd_config.d/*.conf, așa că verificați configurația efectivă:
sudo sshd -t
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|maxauthtries'Dacă sshd -t raportează o eroare, nu reporniți serviciul până când nu remediați sintaxa. După ce verificarea reușește, aplicați setările:
sudo systemctl reload sshPăstrați vechea conexiune SSH deschisă și testați autentificarea cu cheie într-o fereastră nouă. Dezactivarea parolelor fără o cheie verificată este cea mai frecventă modalitate de a pierde accesul la un server.
Pasul 4. Configurați UFW fără a bloca SSH
UFW este o interfață convenabilă peste regulile de rețea Linux. Mai întâi setați valorile implicite sigure, apoi permiteți SSH și porturile web:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enableConfirmați activarea numai după ce ați adăugat regula SSH. Verificați rezultatul:
sudo ufw status verbose
sudo ufw status numberedPentru un IP de birou permanent, puteți restricționa SSH la acea adresă:
sudo ufw delete allow 22/tcp
sudo ufw allow from YOUR.PUBLIC.IP to any port 22 proto tcp comment 'SSH office'Folosiți această opțiune numai cu un IP permanent și acces la consola furnizorului: dacă adresa se schimbă, vă puteți bloca accesul.
Cum deschideți temporar un port de aplicație
Dacă trebuie să verificați direct un serviciu, creați o regulă cu sursa restricționată:
sudo ufw allow from YOUR.PUBLIC.IP to any port 8080 proto tcpDupă testare, ștergeți regula folosind numărul afișat de ufw status numbered:
sudo ufw delete RULE_NUMBERNu folosiți sudo ufw allow 1:65535/tcp: o asemenea regulă transformă firewall-ul într-o simplă formalitate.
Pasul 5. Activați Fail2ban pentru SSH
Fail2ban analizează jurnalele și adaugă o regulă temporară de blocare după mai multe încercări eșuate de autentificare. Nu înlocuiește cheile SSH sau firewall-ul, dar reduce zgomotul produs de încercările automate de tip brute force.
Creați o configurație locală pentru ca actualizările pachetului să nu vă suprascrie setările:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localSetați valori rezonabile în secțiunea [DEFAULT]:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
banaction = ufw
[sshd]
enabled = true
port = 22Porniți serviciul și verificați jail-ul:
sudo systemctl enable --now fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshdÎn rezultatul pentru sshd, verificați numărul încercărilor eșuate și al adreselor blocate. Nu adăugați propriul IP în lista de interdicții. Pentru o excepție permanentă, folosiți ignoreip = 127.0.0.1/8 YOUR.PUBLIC.IP în [DEFAULT].
Pasul 6. Activați actualizările automate
Actualizările automate sunt utile pentru pachetele de securitate, însă repornirile de kernel trebuie gestionate în continuare:
sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status unattended-upgradesO dată pe săptămână verificați dacă este necesară o repornire:
test -f /var/run/reboot-required && echo 'Требуется перезапуск'Înainte de o repornire manuală, asigurați-vă că aveți o cheie funcțională și acces la consola VPS-ului. După repornire, verificați serviciile aplicației, Nginx, UFW și Fail2ban.
Pasul 7. Verificați rezultatul din exterior
Verificați protecția de pe alt computer, nu doar citind configurația:
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no alex@SERVER_IPComanda trebuie să se încheie cu o respingere. Testați separat autentificarea funcțională cu cheie:
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 alex@SERVER_IPPe VPS verificați adresele de ascultare și regulile:
sudo ss -lntup
sudo ufw status numbered
sudo fail2ban-client status sshdPortul aplicației ar trebui să asculte pe 127.0.0.1 dacă nu este destinat accesului direct. De pe o gazdă externă puteți folosi nmap SERVER_IP, dar scanați doar propriul server: verificarea infrastructurii altcuiva fără permisiune poate încălca legea și regulile furnizorului.
Backup și recuperare
Protecția SSH nu apără împotriva datelor șterse, a unei greșeli de administrator sau a unei aplicații compromise. Păstrați copiile bazei de date, configurației și fișierelor utilizatorilor separat de VPS. O configurație minimă înseamnă un backup zilnic, mai multe versiuni din zilele anterioare și teste periodice de recuperare.
Nu scrieți parole sau tokenuri în scripturi text necriptat. Dacă un secret este expus, revocați-l imediat și creați unul nou.
Cum alegeți un VPS pentru un proiect sigur
Securitatea începe cu controlul asupra infrastructurii. Pe un VPS puteți alege sistemul de operare, regulile firewall-ului, metoda de acces, backup-urile și amplasarea serviciilor. Pentru un site sau API mic, o rețea stabilă, stocarea SSD și o consolă de recuperare sunt mai importante decât un surplus de nuclee virtuale.
Când lansați un proiect pe un VPS la tropic.host, definiți dinainte punctele sale publice de intrare: în majoritatea cazurilor, SSH, HTTP și HTTPS sunt suficiente. Păstrați baza de date și panourile de control în rețeaua internă. Pe măsură ce proiectul crește, instanțe VPS separate pentru aplicație, baza de date și monitorizare ajută la izolarea domeniilor de defectare.
Greșeli frecvente
- Dezactivarea parolelor înainte de testarea autentificării cu cheie. Păstrați sesiunea curentă deschisă și testați separat o autentificare nouă.
- Lăsarea portului
22/tcpdeschis pentru întreaga lume, deși ar putea fi permis doar pentru adrese de încredere. - Publicarea directă a porturilor Docker. Verificați mai întâi regulile Docker și UFW.
- Instalarea Fail2ban fără a mai verifica jurnalele. Revizuiți
journalctl -u sshși starea jail-ului după modificări.
Concluzie
Protecția de bază a VPS-ului nu necesită mult timp când pașii sunt efectuați în ordinea corectă: creați un utilizator separat, instalați o cheie SSH, verificați accesul, dezactivați autentificarea root și parolele, activați UFW, configurați Fail2ban și setați actualizări automate. Apoi adăugați backup-uri, jurnalizare și monitorizare externă.
Acești pași nu fac serverul invulnerabil, dar elimină cele mai frecvente greșeli de configurare inițială. Următorul pas este adaptarea profilului de securitate la aplicația concretă: actualizați dependențele, restricționați permisiunile serviciilor, protejați panourile de administrare și verificați regulat porturile deschise.
FAQ
Trebuie să schimb portul SSH implicit?
Nu neapărat. Mutarea portului reduce zgomotul automat, dar nu înlocuiește cheile, parolele dezactivate, UFW sau Fail2ban. Dacă schimbați portul, actualizați regula firewall-ului și parametrul port din jail-ul Fail2ban.
Ce fac dacă pierd accesul după configurarea UFW?
Folosiți consola web sau de recuperare a furnizorului, apoi verificați regula SSH și configurația sshd. Nu închideți sesiunea veche funcțională până când noua autentificare nu a fost confirmată.
Este Fail2ban suficient pentru protejarea SSH?
Nu. Fail2ban reacționează la încercări eșuate de autentificare care au avut deja loc. Baza trebuie să fie formată din chei SSH, autentificare prin parolă dezactivată, permisiuni minime pentru utilizatori și un firewall restricționat.
Pot permite SSH de la o singură adresă IP?
Da, dacă adresa este permanentă: adăugați o regulă UFW allow from pentru acel IP. Pregătiți dinainte accesul la consola furnizorului sau o altă alternativă, deoarece conexiunea va fi blocată după schimbarea IP-ului.
Cât de des ar trebui să verific securitatea VPS-ului?
După fiecare modificare a SSH, firewall-ului sau publicării porturilor Docker, efectuați o verificare a porturilor și testați autentificarea. Ca întreținere de rutină, analizați actualizările și jurnalele cel puțin o dată pe săptămână și testați periodic recuperarea din backup.
