, ,

Securizarea unui Linux Server după instalare: ghid complet

👁 4 vizualizări


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

  1. Actualizează toate pachetele.
  2. Verifică toate porturile cu ss -tulpn.
  3. Creează un utilizator administrativ separat.
  4. Configurează SSH cu chei.
  5. Dezactivează login-ul root prin SSH unde este posibil.
  6. Dezactivează autentificarea prin parolă după testarea cheilor.
  7. Configurează firewall-ul.
  8. Limitează serviciile administrative la IP-uri sau VPN.
  9. Configurează Fail2ban dacă profilul serverului o justifică.
  10. Păstrează SELinux sau AppArmor active.
  11. Configurează actualizările de securitate.
  12. Verifică periodic logurile de autentificare.
  13. Auditează utilizatorii și accesul sudo.
  14. Protejează cheile și fișierele sensibile.
  15. Elimină sau dezactivează serviciile inutile.
  16. Nu expune baza de date inutil.
  17. Configurează backup extern.
  18. Testează restaurarea.
  19. 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.