
Cum îți securizezi VPS-ul Linux – Pași clari pentru protecție
1. De ce nu e sigur să te conectezi ca root?
Contul root
are acces complet la sistem. Dacă parola este ghicită prin atacuri bruteforce, atacatorul obține control total. De aceea, nu te conecta direct ca root prin SSH. Creează un utilizator separat și folosește sudo
pentru comenzi administrative.
2. Crearea unui utilizator non-root
Creează utilizatorul și dă-i drepturi de administrare (nu dezactiva încă parola; o vei scoate după ce merge login-ul cu cheie).
# Debian/Ubuntu
sudo adduser nume_user
sudo usermod -aG sudo nume_user
# AlmaLinux/Rocky
sudo useradd -m -s /bin/bash nume_user
sudo passwd nume_user
sudo usermod -aG wheel nume_user
Conectează-te cu noul utilizator (temporar pe portul implicit 22) ca să verifici că accesul funcționează:
ssh nume_user@IP -p 22
3. Autentificare cu chei SSH (recomandat)
Generează cheia pe calculatorul tău, copiaz-o pe server și testează login-ul cu cheie înainte să oprești parolele.
# Pe calculatorul tău (client)
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/mh-vps-ed25519
ssh-copy-id -i ~/.ssh/mh-vps-ed25519.pub nume_user@IP
# Testează autentificarea cu cheie (încă pe portul 22)
ssh -i ~/.ssh/mh-vps-ed25519 nume_user@IP -p 22
Dacă ssh-copy-id
nu este disponibil, urcă manual cheia:
# Pe server (ca nume_user)
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "CONȚINUT_CHEIE_PUBLICĂ" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
4. Pregătirea firewall-ului (nu schimba încă portul!)
Permite atât portul vechi (22), cât și portul nou (ex.: 2222), apoi activează firewall-ul. Așa eviți blocarea accesului când vei schimba portul în SSH.
# Debian/Ubuntu – UFW
sudo apt update && sudo apt install -y ufw
sudo ufw allow 22/tcp comment 'SSH vechi'
sudo ufw allow 2222/tcp comment 'SSH nou'
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw status verbose
# AlmaLinux/Rocky – firewalld (și SELinux)
sudo dnf install -y firewalld policycoreutils-python-utils
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh # 22
sudo firewall-cmd --permanent --add-port=2222/tcp # 2222
sudo firewall-cmd --reload
# Dacă SELinux e Enforcing, declară portul nou pentru sshd
sudo semanage port -a -t ssh_port_t -p tcp 2222 2>/dev/null || \
sudo semanage port -m -t ssh_port_t -p tcp 2222
sestatus # verifică starea SELinux
5. Configurarea SSHD – păstrează temporar ambele porturi
Editează configurarea OpenSSH. Păstrează Port 22
și adaugă Port 2222
până confirmi că poți intra pe noul port. Dezactivează login-ul direct de root și parolele doar după ce login-ul cu cheie funcționează.
sudoedit /etc/ssh/sshd_config # sau: sudo nano /etc/ssh/sshd_config
Adaugă sau modifică liniile:
# Păstrează ambele porturi până confirmi accesul pe 2222
Port 22
Port 2222
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
# (opțional, limitează doar la userul creat)
# AllowUsers nume_user
Verifică sintaxa și aplică fără să rupi sesiunile active (reload, nu restart):
# Test de sintaxă
sudo sshd -t && echo "OK"
# Debian/Ubuntu
sudo systemctl reload ssh
# AlmaLinux/Rocky
sudo systemctl reload sshd
Testează noul port dintr-o sesiune separată:
ssh -i ~/.ssh/mh-vps-ed25519 nume_user@IP -p 2222
6. După ce funcționează pe 2222, oprește 22
După ce te-ai conectat cu succes pe 2222, scoate portul 22 din SSH și din firewall, apoi reîncarcă.
# sshd_config: lasă DOAR noul port
sudo sed -i 's/^Port 22/# Port 22 (dezactivat)/' /etc/ssh/sshd_config
# sau editează manual și păstrează doar: Port 2222
# Aplică în siguranță
# Debian/Ubuntu
sudo systemctl reload ssh
# AlmaLinux/Rocky
sudo systemctl reload sshd
# Debian/Ubuntu – UFW: închide 22
sudo ufw delete allow 22/tcp
# AlmaLinux/Rocky – firewalld: închide 22
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
7. Verificarea porturilor ascultate
Confirmă că doar portul nou este deschis și că SSH ascultă pe el.
sudo ss -tulpen | grep -E ":2222\b|State|LISTEN"
8. Protecție bruteforce și update-uri automate
Instalează fail2ban pentru a bloca tentativele repetate și activează actualizările automate ale sistemului.
# Debian/Ubuntu – fail2ban + updates
sudo apt install -y fail2ban unattended-upgrades
sudo tee /etc/fail2ban/jail.local >/dev/null <<'EOF'
[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 10m
bantime = 1h
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
# activează update-urile automate
sudo dpkg-reconfigure --priority=low unattended-upgrades
# AlmaLinux/Rocky – fail2ban + dnf-automatic
sudo dnf install -y epel-release
sudo dnf install -y fail2ban dnf-automatic
sudo tee /etc/fail2ban/jail.local >/dev/null <<'EOF'
[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 10m
bantime = 1h
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
# update-uri automate
sudo sed -i 's/^apply_updates = .*/apply_updates = yes/' /etc/dnf/automatic.conf
sudo systemctl enable --now dnf-automatic.timer
9. Alte recomandări rapide
- Dezactivează sau elimină servicii nefolosite (Telnet, FTP). Exemple:
sudo systemctl disable --now vsftpd
,sudo apt remove -y telnetd
/sudo dnf remove -y telnet-server
. - Nu expune baze de date direct pe internet; ascultă doar pe 127.0.0.1 sau pe rețea privată.
- Programează backup regulat (fișiere + baze de date) și testează restore.
- Folosește parole unice + manager de parole pentru conturile non-SSH (de ex. aplicații web).
10. Concluzie
Securizarea corectă înseamnă: user non-root, chei SSH, firewall configurat și trecere atentă pe portul nou (testezi întâi, dezactivezi apoi). Cu fail2ban
și update-uri automate, reduci considerabil riscurile pe orice distribuție.