Când pornești un VPS nou și i se atribuie o adresă IP publică, cronometrul pornește. În minute, bot-urile de scanare automatizată încearcă să se autentifice prin SSH, să exploateze servicii expuse sau să testeze credențiale implicite. Am văzut în jurnalele auth.log încercări de autentificare eșuate apărea în mai puțin de trei minute de la pornirea instanței — mult înainte ca administratorul să reușească să se conecteze prima dată. Un VPS nu vine „închis” din fabrica; responsabilitatea de a-l hardening aparține integral echipei care îl administrează. În acest ghid parcurgem pașii esențiali, de la configurarea inițială a accesului până la monitorizarea continuă, cu comenzi concrete și practicile pe care le aplicăm zilnic pe serverele dedicate și VPS-urile gestionate prin dedicated-servers.ro și serverspan.ro.
1. Eliminarea accesului root și implementarea autentificării pe chei SSH
Primul pas, executat înainte de orice altă configurare, este dezactivarea autentificării directe ca root și a parolelor simple. Editează /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Generează o pereche de chei Ed25519 pe stația de lucru a administratorului (ssh-keygen -t ed25519 -a 100), apoi copiază cheia publică pe VPS cu ssh-copy-id user@vps-ip. Restartează serviciul SSH (systemctl reload sshd) și verifică că te poți conecta doar cu cheia privată. Această abordare elimină vectorul principal de atac bruteforce și este standardul pe care îl aplicăm pe toate instanțele proiectate pentru clienții noștri.
2. Firewall-ul ca perimetru principal: nftables sau UFW cu politică default-deny
Un firewall bine configurat blochează tot traficul care nu este explicit permis. Pe distribuții moderne (Debian 12, Ubuntu 24.04, Rocky Linux 9) recomandăm nftables pentru control granular; pe sisteme mai vechi sau pentru echipe mai puțin experimentate, UFW rămâne o alternativă solidă.
Pentru mai multe detalii despre această parte a subiectului, vezi CUPS RCE pe VPS Linux: CVE-2026-34980 se înlănțuie până la root — verifică dacă ești expus chiar acum.
Exemplu minim nftables (/etc/nftables.conf):
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif "lo" accept
ct state established,related accept
tcp dport { 22, 80, 443 } accept
icmp type echo-request limit rate 5/second accept
}
chain forward { type filter hook forward priority 0; policy drop; }
chain output { type filter hook output priority 0; policy accept; }
}
Aplică cu nft -f /etc/nftables.conf și activează serviciul la boot (systemctl enable --now nftables). Regula de limitare ICMP previne flood-ul ping păstrând diagnostica funcțională. Pe serverele noastre dedicăm reguli separate pentru porturile de management (ex. 8443 pentru paneluri) accesibile doar din CIDR-urile administrativе.
3. Fail2Ban și detecția intrușiei la nivel de aplicație
Firewall-ul filtrează la nivel de pachet, dar fail2Ban acționează la nivel de log-uri, blocând IP-urile care manifeste comportament suspect. Instalează și configurează o jail pentru SSH:
# /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
findtime = 10m
backend = systemd
Activează și pornește: systemctl enable --now fail2ban. Pentru medii cu trafic legitim variabil (ex. API-uri publice), combinăm fail2Ban cu crowdsec sau suricata în mod IDS/IPS, corelând evenimentele în SIEM-ul intern. Această stratificare reduce falsul-pozitiv și oferă vizibilitate istorică a atacatorilor recurenți.
4. Actualizări automate, audit de pachete și monitorizare continuă
Un sistem neactualizat este un target. Configurează unattended-upgrades (Debian/Ubuntu) sau dnf-automatic (RHEL/Fedora) pentru securitate exclusiv:
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
Complementar, rulează apt list --upgradable săptămânal în cron și auditează pachetele instalate cu debsecan sau oscap pentru CVE-uri nenunțate. Log-urile critice (/var/log/auth.log, /var/log/syslog, jurnalele aplicațiilor) trebuie aggregate centralizat — folosim rsyslog → logstash → elasticsearch sau soluții managed precum Graylog. Alertele pentru evenimente critice (ex. modificări sudoers, noi utilizatori, mount-uri neașteptate) ajung pe Slack/Telegram prin webhook-uri dedicate.
Pași practici immediati (checklist post-deploy)
- Schimbă hostname-ul și configurează FQDN corect (
hostnamectl set-hostname vps-prod-01.example.ro). - Creează utilizator non-root cu acces
sudolimitat (usermod -aG sudo deploy; editează/etc/sudoers.d/deploycu comenzi specifice). - Dezactivează servicii nefolosite (
systemctl disable --now cups bluetooth avahi-daemon). - Setează timezone UTC și NTP (
timedatectl set-timezone UTC; systemctl enable --now systemd-timesyncd). - Configurează backup-uri zilnice incrementale și săptămânale complete (ex.
borgbackupcătre storage off-site). - Documentează toate regulile de firewall, jail-urile fail2Ban și cheile SSH într-un repo GitOps privat.
Concluzie
Securizarea unui VPS nu este un eveniment unic, ci un proces continuu de hardening, monitorizare și adaptare la noile vectoruri de atac. Începând cu eliminarea accesului root prin parolă, trecând prin firewall-ul default-deny, detecția comportamentală cu fail2Ban și încheind cu actualizările automate și auditul constant, construiești o postură defensivă stratificată care face diferența între un server compromis și unul care rulează neîntrerupt ani de zile. Echipa noastră aplică aceste principii pe fiecare instanță aprovizionată, asigurând că infrastructura ta pornește de pe o bază solidă — gata să scaleze, să servească trafic și să reziste presiunii automatizate a internetului modern.
Ghid ServerSpan relevant: Ghid practic pentru securizarea VPS: 15 pași esențiali de securitate pentru servere Linux.