Instalarea sistemului de operare este doar primul pas în construirea unui server Linux. Înainte ca sistemul să intre în producție, trebuie verificat ce servicii rulează, cine se poate autentifica, ce porturi sunt expuse și cum vor fi aplicate actualizările de securitate.
În acest ghid vom parcurge măsurile de bază pe care le aplicăm după instalarea unui server Ubuntu LTS, Debian, AlmaLinux sau Rocky Linux.
Nu toate serverele au aceleași cerințe. Un server web public are alt profil de risc decât un server de backup accesibil doar prin VPN. Principiul rămâne însă același: expunem doar ceea ce este necesar și păstrăm configurația cât mai simplă și verificabilă.
1. Actualizează sistemul imediat
Prima operație după instalare ar trebui să fie actualizarea pachetelor.
Pentru Ubuntu și Debian:
sudo apt update
sudo apt upgrade
Pentru AlmaLinux și Rocky Linux:
sudo dnf upgrade
După actualizări importante, verifică dacă este necesar un reboot și dacă toate serviciile au revenit în starea normală.
Un server nou instalat nu trebuie considerat automat un server complet actualizat.
2. Verifică serviciile și porturile expuse
Înainte să configurezi firewall-ul trebuie să știi exact ce procese ascultă pe rețea.
sudo ss -tulpn
O ieșire poate conține, de exemplu:
LISTEN 0 128 0.0.0.0:22
LISTEN 0 511 0.0.0.0:80
LISTEN 0 511 0.0.0.0:443
Întreabă-te pentru fiecare port:
- Ce serviciu îl folosește?
- Trebuie să fie accesibil din Internet?
- Poate asculta doar pe
127.0.0.1? - Poate fi limitat la un VPN sau la anumite IP-uri?
Dacă descoperi un serviciu necunoscut, investighează-l înainte să îl oprești:
systemctl status nume-serviciu
systemctl cat nume-serviciu
3. Nu administra zilnic serverul direct ca root
Este preferabil să existe un utilizator administrativ individual, iar privilegiile ridicate să fie obținute cu sudo.
Ubuntu și Debian:
sudo adduser adminuser
sudo usermod -aG sudo adminuser
AlmaLinux și Rocky Linux:
sudo useradd -m adminuser
sudo passwd adminuser
sudo usermod -aG wheel adminuser
Verificare:
id adminuser
4. Securizează accesul SSH
SSH este una dintre cele mai importante suprafețe de atac ale unui server administrat de la distanță.
În primul rând, folosește autentificarea cu chei.
ssh-keygen -t ed25519
Copierea cheii publice:
ssh-copy-id adminuser@server
După ce autentificarea cu cheia a fost verificată într-o sesiune nouă, poți analiza următoarele setări:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Înainte să reîncarci SSH, verifică sintaxa:
sudo sshd -t
Nu închide sesiunea SSH curentă înainte să confirmi că o conexiune nouă funcționează.
Mai multe detalii găsești în ghidul nostru Cum securizezi SSH pe un server Linux.
5. Configurează firewall-ul
O politică simplă pentru un server public este să blochezi implicit conexiunile de intrare și să permiți explicit serviciile necesare.
Ubuntu și Debian cu UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
Pentru un server web:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Verificare:
sudo ufw status verbose
AlmaLinux și Rocky Linux cu firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Vezi configurația activă:
sudo firewall-cmd --list-all
Pentru mai multe exemple UFW: UFW explicat: firewall simplu pe Ubuntu.
6. Limitează SSH la IP-uri cunoscute atunci când este posibil
Dacă serverul este administrat doar dintr-un sediu, VPN sau IP fix, accesul SSH nu trebuie neapărat permis întregului Internet.
Exemplu UFW:
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
În infrastructuri mai complexe este de preferat accesul administrativ prin VPN, bastion host sau rețea privată.
7. Fail2ban ca strat suplimentar
Fail2ban poate analiza logurile și bloca temporar IP-urile care generează prea multe autentificări eșuate.
Ubuntu și Debian:
sudo apt install fail2ban
AlmaLinux și Rocky Linux pot necesita repository-uri suplimentare, în funcție de versiune și configurație.
Verificare:
sudo systemctl status fail2ban
sudo fail2ban-client status
Fail2ban nu înlocuiește firewall-ul sau autentificarea cu chei. Este doar un strat suplimentar.
Vezi și Fail2ban: protecție simplă împotriva atacurilor brute-force.
8. Păstrează SELinux sau AppArmor active
O greșeală frecventă este dezactivarea mecanismelor Mandatory Access Control atunci când o aplicație nu funcționează imediat.
Ubuntu și AppArmor
sudo aa-status
AlmaLinux / Rocky Linux și SELinux
getenforce
În mod normal, pe un server RHEL-like vrem:
Enforcing
Dacă SELinux blochează o operație, investighează cauza și contextul necesar în loc să îl dezactivezi automat.
9. Configurează actualizările de securitate
Actualizările regulate reduc suprafața de atac pentru vulnerabilitățile deja cunoscute.
Pe Ubuntu și Debian poate fi folosit unattended-upgrades:
sudo apt install unattended-upgrades
Verifică înainte politica și ce categorii de pachete sunt instalate automat.
Pentru servere critice poate fi preferabil un proces controlat:
backup / snapshot
↓
actualizare
↓
restart dacă este necesar
↓
verificarea serviciilor
↓
monitorizare
Mai multe detalii: Unattended Upgrades: actualizări automate de securitate pe Ubuntu.
10. Verifică autentificările SSH
Pe Ubuntu și Debian, autentificările SSH pot fi investigate în jurnalul de autentificare:
sudo grep sshd /var/log/auth.log | tail -50
Sau prin systemd:
sudo journalctl -u ssh --since today
Pe unele sisteme serviciul poate apărea ca sshd:
sudo journalctl -u sshd --since today
Vezi și Cum verifici tentativele de autentificare SSH.
11. Verifică utilizatorii și privilegiile
Listează utilizatorii:
cut -d: -f1 /etc/passwd
Conturile cu UID 0:
awk -F: '$3 == 0 {print $1}' /etc/passwd
În mod normal, singurul utilizator cu UID 0 trebuie să fie root.
Verifică și cine are drepturi administrative prin grupurile sudo sau wheel.
12. Verifică permisiunile fișierelor sensibile
Cheile SSH, configurațiile și fișierele care conțin parole sau token-uri trebuie protejate corespunzător.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
Evită chmod 777 ca soluție generică pentru problemele de permisiuni.
Mai multe informații: Permisiunile corecte pentru cheile SSH.
13. Dezactivează serviciile pe care nu le folosești
systemctl --type=service --state=running
Serviciile activate la boot:
systemctl list-unit-files --state=enabled
Înainte să dezactivezi ceva:
systemctl status nume-serviciu
systemctl cat nume-serviciu
14. Nu expune baza de date public fără motiv
Servicii precum MariaDB, MySQL sau PostgreSQL nu trebuie să asculte pe toate interfețele dacă sunt folosite doar de aplicații locale.
sudo ss -tulpn | grep -E ':3306|:5432'
Pentru o aplicație și o bază de date aflate pe același server, folosirea localhost-ului este de obicei suficientă.
15. Monitorizează modificările importante
Pentru servere unde auditul este important, Linux oferă auditd.
Ubuntu / Debian:
sudo apt install auditd
Verificare:
sudo systemctl status auditd
sudo ausearch -ts today
Mai multe exemple: auditd: monitorizarea evenimentelor importante în Linux.
16. Backup-ul face parte din securitate
Securitatea nu înseamnă doar prevenirea accesului neautorizat. Trebuie să poți recupera serverul și după ștergeri accidentale, update-uri problematice, ransomware sau defectarea storage-ului.
- păstrează backup-uri în altă locație;
- nu considera snapshot-ul singurul backup;
- protejează și backup-urile împotriva modificării;
- testează periodic restaurarea.
17. Monitorizare și alerte
Un server securizat trebuie și monitorizat. Urmărește cel puțin:
- CPU și load average;
- RAM și swap;
- spațiul pe disk;
- serviciile importante;
- certificatele TLS;
- erorile din loguri;
- backup-urile;
- disponibilitatea serviciilor publice.
Checklist rapid de securizare Linux Server
- Actualizează toate pachetele.
- Verifică toate porturile cu
ss -tulpn. - Creează un utilizator administrativ separat.
- Configurează SSH cu chei.
- Dezactivează login-ul root prin SSH unde este posibil.
- Dezactivează autentificarea prin parolă după testarea cheilor.
- Configurează firewall-ul.
- Limitează serviciile administrative la IP-uri sau VPN.
- Configurează Fail2ban dacă profilul serverului o justifică.
- Păstrează SELinux sau AppArmor active.
- Configurează actualizările de securitate.
- Verifică periodic logurile de autentificare.
- Auditează utilizatorii și accesul sudo.
- Protejează cheile și fișierele sensibile.
- Elimină sau dezactivează serviciile inutile.
- Nu expune baza de date inutil.
- Configurează backup extern.
- Testează restaurarea.
- Configurează monitorizare și alerte.
Concluzie
Nu există o comandă care să transforme instantaneu un server Linux într-un sistem „sigur”. Securitatea este rezultatul mai multor straturi: actualizări, autentificare corectă, servicii minimale, firewall, controlul accesului, audit, monitorizare și backup.
Pentru Ubuntu LTS și Debian vei întâlni frecvent UFW și AppArmor, în timp ce AlmaLinux și Rocky Linux folosesc în mod natural firewalld și SELinux. Principiile de securitate rămân însă aceleași indiferent de distribuție.
Cea mai bună configurație de securitate este una suficient de simplă încât administratorul să o înțeleagă, să o verifice și să o mențină în timp.
Dacă pornești un server nou, recomandăm să citești mai întâi și ghidul nostru Instalare și configurare Linux Server: ghid și bune practici.