Skip to main content

Cyber AI România

Cum faci hardening de bază pe un server Ubuntu fără să blochezi serviciile legitime

Hardening-ul nu înseamnă să activezi toate restricțiile găsite într-un checklist și să speri că aplicația continuă să funcționeze. Scopul este să reduci suprafața de atac păstrând serviciile necesare: SSH pentru administrare, Nginx sau Apache, PHP-FPM, baza de date, backup-ul și monitorizarea.

Ubuntu recomandă o abordare pe mai multe niveluri, fără a depinde de un singur mecanism de protecție. Începe cu inventarierea sistemului, apoi aplică modificările pe rând și verifică funcționarea după fiecare etapă.

Creează un punct de revenire

Înainte să modifici firewall-ul, SSH sau serviciile, creează un snapshot al VPS-ului ori un backup verificat. Salvează separat configurațiile importante:

sudo tar -czf /root/config-before-hardening.tar.gz \
  /etc/ssh \
  /etc/nginx \
  /etc/ufw \
  /etc/apt

Ține deschisă sesiunea SSH curentă pe durata schimbărilor. Dacă o regulă nouă refuză conexiunea, sesiunea existentă îți poate permite să revii la configurația anterioară.

Inventariază serviciile și porturile

Mai întâi stabilește ce trebuie să ruleze pe server:

systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service --state=enabled
sudo ss -lntup

Pentru un server web obișnuit, porturile publice pot fi:

22/tcp    SSH
80/tcp    HTTP
443/tcp   HTTPS

O bază de date locală ar trebui, în mod normal, să asculte pe 127.0.0.1, nu pe 0.0.0.0. Verifică fiecare port necunoscut înainte să oprești procesul:

sudo lsof -nP -iTCP:PORT -sTCP:LISTEN
systemctl status nume-serviciu

Păstrarea unui număr minim de pachete și servicii reduce suprafața de atac, însă eliminarea trebuie făcută numai după confirmarea rolului lor.

Instalează actualizările înainte de alte modificări

Rulează:

sudo apt update
sudo apt upgrade
sudo dpkg --audit
systemctl --failed

Dacă apar erori APT, pachete neconfigurate sau servicii eșuate, rezolvă-le înainte să continui. Pentru actualizările automate de securitate:

sudo apt install unattended-upgrades
sudo unattended-upgrade --dry-run --debug

Ubuntu Server activează în mod normal instalarea zilnică a actualizărilor de securitate, dar configurația și logurile trebuie verificate în /etc/apt/apt.conf.d/ și /var/log/unattended-upgrades/.

Configurează UFW fără să pierzi accesul

UFW este disponibil pe Ubuntu, dar nu este neapărat activ. Înainte să îl pornești, adaugă toate serviciile legitime.

Pentru un server web:

sudo ufw default deny incoming
sudo ufw default allow outgoing

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

sudo ufw show added
sudo ufw enable
sudo ufw status verbose

Testează imediat SSH, site-ul și HTTPS dintr-un alt terminal. Dacă ai un IP fix de administrare, poți restrânge ulterior SSH:

sudo ufw allow from IP_ADMIN to any port 22 proto tcp

Adaugă și testează regula limitată înainte să elimini regula generală OpenSSH. Verifică separat firewall-ul furnizorului VPS, deoarece regulile cloud și UFW funcționează independent. Ubuntu documentează folosirea UFW pentru controlul traficului și limitarea accesului după adresă și port.

Întărește SSH în ordinea corectă

Generează cheia pe calculatorul de administrare:

ssh-keygen -t ed25519 -C "administrare-server"
ssh-copy-id utilizator@IP_SERVER

Testează autentificarea într-un terminal nou. Abia apoi creează:

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf

Adaugă:

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

Verifică înainte de aplicare:

sudo sshd -t
sudo sshd -T | grep -E \
'pubkeyauthentication|passwordauthentication|permitrootlogin'

sudo systemctl reload ssh

Ubuntu permite configurări modulare în sshd_config.d și subliniază importanța testării configurației înainte de reîncărcarea serviciului.

Verifică AppArmor, nu îl dezactiva

AppArmor este instalat și încărcat implicit pe Ubuntu. Verifică:

sudo aa-status
sudo journalctl -k --since today |
grep 'apparmor="DENIED"'

AppArmor limitează capabilitățile aplicațiilor prin profiluri individuale. Dacă un serviciu legitim este blocat, analizează evenimentul și ajustează profilul; nu dezactiva protecția la nivelul întregului sistem.

Fă verificarea finală

După fiecare etapă și din nou la final:

systemctl --failed
sudo ss -lntup
sudo ufw status verbose
sudo aa-status
sudo journalctl -p err -b --no-pager
curl -I http://localhost

Testează autentificarea SSH, site-ul, aplicația, baza de date, backup-ul și monitorizarea. Nu aplica automat un profil CIS sau DISA-STIG peste un server existent cu servicii deja configurate: Canonical avertizează că scripturile complete de conformitate pot modifica setări esențiale și pot întrerupe aplicații.

Hardening-ul sigur se face incremental: modificare mică, test, documentare și posibilitate de rollback. Astfel reduci riscurile fără să transformi protecția serverului într-o cauză de downtime.

Surse folosite

Ubuntu Server Documentation — Introduction to security
Ubuntu Server Documentation — Firewall și UFW
Ubuntu Server Documentation — OpenSSH Server
Ubuntu Server Documentation — Automatic updates
Ubuntu Server Documentation — AppArmor
Ubuntu Security Documentation — Unnecessary packages și Ubuntu Security Guide

Facebook
X
WhatsApp

Te-ar putea interesa si: