Cum securizezi un VPS Linux: pași esențiali după instalare
Un VPS îți oferă mai mult control decât un cont de shared hosting, dar vine și cu o responsabilitate importantă: securitatea serverului. Pe un VPS tu controlezi accesul SSH, firewall-ul, utilizatorii, update-urile, serviciile instalate și backupurile.
Un server nou instalat este expus pe internet imediat ce primește o adresă IP publică. De multe ori, încercările automate de autentificare pe SSH apar în primele minute sau ore. De aceea, securizarea de bază nu este un pas opțional, ci unul dintre primele lucruri pe care trebuie să le faci după instalarea VPS-ului.
În acest tutorial îți arătăm pașii de bază pentru securizarea unui VPS Linux, în special pentru distribuții precum Debian și Ubuntu. Vom merge în ordine, cu explicații clare, ca să reduci riscul de a te bloca afară din server.
Ce vom face în acest ghid
Pentru un VPS nou, ordinea recomandată este aceasta:
- păstrezi sesiunea SSH curentă deschisă;
- actualizezi sistemul;
- creezi un utilizator separat, diferit de root;
- configurezi autentificarea prin cheie SSH;
- testezi accesul înainte să dezactivezi parola;
- întărești configurarea SSH;
- activezi firewall-ul;
- instalezi Fail2Ban;
- verifici porturile deschise;
- configurezi update-uri, backup și monitorizare.
Ordinea este importantă. Nu dezactiva autentificarea prin parolă și nu activa firewall-ul fără să testezi mai întâi că te poți conecta în continuare la server.
1. Înainte să începi: nu închide sesiunea SSH curentă
Primul pas nu este o comandă, ci o măsură de siguranță. Când modifici setările SSH sau firewall-ul, există riscul să blochezi accesul la server dacă greșești o regulă sau o opțiune.
De aceea, păstrează sesiunea SSH actuală deschisă și testează schimbările într-o sesiune nouă. Dacă noua conexiune nu funcționează, poți reveni în sesiunea veche și corecta problema.
Recomandare: înainte de modificări importante, verifică dacă ai acces la consola web a VPS-ului din panoul furnizorului. În cazul în care te blochezi afară, consola web te poate ajuta să repari configurarea.
2. Actualizează sistemul de operare
Un VPS nou poate avea pachete vechi sau update-uri de securitate neinstalate. Înainte să instalezi aplicații, panouri de control sau servicii web, pornește de la un sistem actualizat.
Pentru Debian / Ubuntu
sudo apt update
sudo apt upgrade -y
Dacă ești conectat direct ca root și încă nu ai configurat un utilizator cu sudo, rulează comenzile fără sudo:
apt update
apt upgrade -y
Dacă au fost instalate update-uri importante, mai ales pentru kernel sau componente de sistem, este recomandat un restart:
sudo reboot
După restart, conectează-te din nou la server și continuă pașii următori.
3. Creează un utilizator separat pentru administrare
Contul root are control total asupra serverului. Este util, dar nu este recomandat să lucrezi permanent direct ca root. Un utilizator separat, cu drepturi de administrare prin sudo, este o practică mai sigură.
În exemplele de mai jos folosim numele adminuser. Înlocuiește-l cu numele dorit.
adduser adminuser
Instalează sudo, dacă nu este deja instalat:
apt install sudo -y
Adaugă utilizatorul în grupul sudo:
usermod -aG sudo adminuser
Acum testează autentificarea cu noul utilizator într-o sesiune SSH separată:
ssh adminuser@IP_SERVER
După conectare, verifică dacă utilizatorul poate rula comenzi administrative:
sudo whoami
Dacă răspunsul este:
root
atunci utilizatorul este configurat corect.
4. Configurează autentificarea prin cheie SSH
Autentificarea prin parolă este mai expusă la atacuri brute-force. O metodă mai sigură este autentificarea prin cheie SSH. Aceasta folosește două fișiere: o cheie privată, care rămâne pe calculatorul tău, și o cheie publică, pe care o adaugi pe server.
Pe calculatorul tău local, generează o cheie SSH de tip Ed25519:
ssh-keygen -t ed25519 -C "admin@domeniul-tau.ro"
Poți accepta locația implicită. Este recomandat să setezi și o parolă pentru cheia privată, mai ales dacă lucrezi de pe laptop sau de pe un calculator care poate fi pierdut.
Vor fi create două fișiere:
id_ed25519— cheia privată, pe care nu trebuie să o trimiți nimănui;id_ed25519.pub— cheia publică, pe care o poți adăuga pe VPS.
5. Adaugă cheia publică pe VPS
Dacă folosești Linux sau macOS pe calculatorul local, poți folosi:
ssh-copy-id -i ~/.ssh/id_ed25519.pub adminuser@IP_SERVER
Dacă folosești Windows PowerShell, poți copia cheia publică pe server cu:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh adminuser@IP_SERVER "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
După ce ai adăugat cheia, testează conexiunea într-o sesiune nouă:
ssh adminuser@IP_SERVER
Dacă intri fără să ți se ceară parola contului de pe server, autentificarea prin cheie funcționează. Este posibil să ți se ceară passphrase-ul cheii, dacă ai setat una. Acest lucru este normal.
Important: nu dezactiva autentificarea prin parolă până nu ai confirmat că login-ul cu cheia SSH funcționează.
6. Dezactivează login-ul root și autentificarea prin parolă
După ce ai testat cheia SSH, poți întări configurarea SSH. Scopul este să nu mai permiți conectarea directă ca root și să nu mai accepți parole pentru autentificare.
Creează un fișier separat de configurare:
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
Adaugă următoarele linii:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
Salvează fișierul, apoi verifică sintaxa configurării SSH:
sudo /usr/sbin/sshd -t
Dacă nu apare nicio eroare, reîncarcă serviciul SSH:
sudo systemctl reload ssh
Deschide o sesiune nouă și testează din nou:
ssh adminuser@IP_SERVER
Dacă te poți conecta, configurarea este corectă. Dacă nu te poți conecta, folosește sesiunea veche rămasă deschisă pentru a modifica sau șterge fișierul 99-hardening.conf.
7. Activează firewall-ul
Firewall-ul controlează ce conexiuni sunt permise către server. Regula de bază este simplă: blochezi tot ce nu este necesar și permiți doar porturile folosite de serviciile tale.
Pentru Debian și Ubuntu, UFW este o variantă simplă și potrivită pentru multe VPS-uri.
Instalează UFW:
sudo apt install ufw -y
Setează politica implicită:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Permite SSH înainte să activezi firewall-ul:
sudo ufw allow OpenSSH
Dacă folosești un port SSH custom, de exemplu 2222, permite portul respectiv:
sudo ufw allow 2222/tcp
Pentru un server web, permite HTTP și HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Activează firewall-ul:
sudo ufw enable
Verifică regulile active:
sudo ufw status verbose
Dacă serverul este folosit doar pentru administrare SSH momentan, nu deschide porturi precum MySQL, Redis, FTP sau panouri de administrare fără motiv clar.
8. Verifică porturile deschise
După ce ai activat firewall-ul, este bine să verifici ce servicii ascultă pe server. Astfel poți identifica rapid servicii expuse accidental.
sudo ss -tulpn
Vei vedea o listă cu porturi și servicii. Cele mai comune porturi sunt:
| Serviciu | Port uzual | Recomandare |
|---|---|---|
| SSH | 22/tcp sau port custom | Permite doar pentru administrare. Folosește chei SSH. |
| HTTP | 80/tcp | Permite dacă rulezi site-uri web. |
| HTTPS | 443/tcp | Permite pentru site-uri cu SSL. |
| MySQL / MariaDB | 3306/tcp | Nu expune public decât dacă ai un motiv clar și IP-uri restricționate. |
| Redis | 6379/tcp | Nu expune public. Redis trebuie protejat strict. |
| Game server | variază | Deschide doar porturile necesare jocului respectiv. |
Dacă vezi un port pe care nu îl recunoști, verifică ce serviciu îl folosește înainte să îl lași expus.
9. Instalează Fail2Ban
Fail2Ban monitorizează logurile și poate bloca temporar IP-urile care fac prea multe încercări eșuate de autentificare. Este util mai ales pentru SSH, unde atacurile automate sunt foarte comune.
Instalează Fail2Ban:
sudo apt install fail2ban -y
Creează o configurație pentru SSH:
sudo nano /etc/fail2ban/jail.d/sshd.local
Adaugă:
[sshd]
enabled = true
port = ssh
filter = sshd
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h
Dacă ai schimbat portul SSH, înlocuiește:
port = ssh
cu portul folosit, de exemplu:
port = 2222
Activează Fail2Ban:
sudo systemctl enable --now fail2ban
Verifică statusul:
sudo fail2ban-client status
sudo fail2ban-client status sshd
Fail2Ban nu înlocuiește autentificarea prin cheie SSH și nu repară parolele slabe. Este o protecție suplimentară, nu singura măsură de securitate.
10. Protejează serviciile interne
O greșeală frecventă este expunerea serviciilor interne direct pe internet. MySQL, Redis, Elasticsearch, aplicațiile de debug sau panourile de administrare nu ar trebui să fie publice fără motiv clar.
Pentru un VPS de producție, ține cont de următoarele reguli:
- MySQL/MariaDB ar trebui să asculte local, dacă baza de date este folosită doar de aplicația de pe același server;
- Redis nu trebuie expus public;
- panourile de administrare trebuie protejate cu parole puternice și, ideal, acces restricționat pe IP;
- serviciile de debug trebuie dezactivate în producție;
- aplicațiile nu ar trebui să ruleze direct ca root.
Dacă ai nevoie de acces remote la baza de date, permite accesul doar de la IP-uri cunoscute și folosește firewall-ul.
11. Configurează update-uri regulate
Securizarea unui VPS nu se termină după configurarea inițială. Serverul trebuie menținut actualizat, mai ales dacă rulează servicii publice.
Pentru update manual:
sudo apt update
sudo apt upgrade -y
Pentru update-uri automate de securitate:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
Chiar dacă activezi update-uri automate, este bine să verifici periodic serverul. Unele update-uri pot necesita restart sau verificări suplimentare.
12. Configurează backup
Securitatea nu înseamnă doar prevenție. Înseamnă și recuperare. Chiar dacă ai firewall, SSH keys și update-uri, tot poți avea probleme: o comandă greșită, o aplicație compromisă, un update eșuat sau fișiere șterse accidental.
Un backup bun ar trebui să fie:
- automatizat;
- păstrat separat de VPS-ul principal;
- testat periodic;
- ușor de restaurat;
- adaptat aplicației tale: fișiere, baze de date și configurații.
O copie păstrată doar pe același VPS nu este suficientă. Dacă serverul are o problemă majoră, poți pierde și datele, și backupul. Pentru proiecte importante, backupul off-site este recomandat.
13. Monitorizează serverul
Un VPS poate părea în regulă până când rămâne fără spațiu, consumă toată memoria sau un serviciu important se oprește. Monitorizarea te ajută să vezi problemele înainte să afecteze utilizatorii.
Verifică periodic:
- spațiul pe disc;
- consumul de RAM;
- load average;
- serviciile eșuate;
- logurile SSH;
- statusul Fail2Ban;
- backupurile recente;
- certificatele SSL.
Comenzi utile:
df -h
free -m
uptime
systemctl --failed
sudo journalctl -p warning -n 50
sudo fail2ban-client status sshd
14. Greșeli frecvente când securizezi un VPS
Cele mai multe probleme nu apar din lipsă de instrumente, ci din pași făcuți în grabă. Evită următoarele greșeli:
- dezactivezi parola SSH înainte să testezi cheia;
- activezi firewall-ul fără să permiți portul SSH;
- lucrezi permanent direct ca root;
- folosești parole scurte sau refolosite;
- lași porturi deschise fără motiv;
- expui MySQL, Redis sau alte servicii interne public;
- nu instalezi update-uri;
- nu ai backup separat de server;
- nu testezi restaurarea backupului;
- nu verifici logurile și serviciile active.
15. Checklist rapid pentru un VPS nou
La final, VPS-ul tău ar trebui să aibă cel puțin următoarele lucruri configurate:
- sistem actualizat;
- utilizator non-root creat;
- sudo configurat;
- cheie SSH generată și testată;
- login direct ca root dezactivat;
- autentificare prin parolă dezactivată;
- firewall activ;
- doar porturile necesare deschise;
- Fail2Ban instalat și activ;
- servicii interne neexpuse public;
- backup configurat;
- monitorizare de bază pregătită.
Concluzie
Un VPS securizat corect nu înseamnă un server imposibil de atacat. Înseamnă un server configurat responsabil: acces controlat, autentificare prin chei SSH, firewall activ, servicii expuse doar când este necesar, update-uri regulate, Fail2Ban, backup și monitorizare.
Pentru majoritatea VPS-urilor Linux, acești pași oferă o bază solidă. După aceea, securitatea trebuie adaptată în funcție de ce rulezi pe server: site-uri, aplicații web, baze de date, panouri de control, servere de jocuri sau servicii interne.
Cel mai important este să lucrezi ordonat, să testezi fiecare schimbare și să nu închizi sesiunea SSH curentă până nu ești sigur că noul acces funcționează.