Cum îți securizezi VPS-ul Linux – Pași clari pentru protecție

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.

VPS How to

Articole recente