Jak zabezpieczyć serwer Linux VPS: Klucze Ed25519, blokada hasła i konfiguracja Fail2Ban

· 6 min czytania

Każdy serwer podłączony do publicznego adresu IPv4 w ciągu pierwszych kilkunastu minut staje się celem zautomatyzowanych botnetów skanujących domyślny port 22 w poszukiwaniu podatnych haseł. Pozostawienie domyślnej konfiguracji SSH z możliwością logowania użytkownika root na hasło to jedno z największych zagrożeń dla bezpieczeństwa infrastruktury.

1. Generowanie nowoczesnej pary kluczy kryptograficznych Ed25519

Algorytm Ed25519 (oparty na krzywej eliptycznej Curve25519) jest obecnie znacznie bezpieczniejszy, szybszy i bardziej odporny na ataki czasowe niż tradycyjne klucze RSA 2048/4096-bitowe. Wygeneruj klucz na swoim komputerze lokalnym:

ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_server

Następnie prześlij klucz publiczny na serwer docelowy za pomocą narzędzia ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519_server.pub user@twoj-adres-ip

2. Twarda konfiguracja demona OpenSSH (sshd_config)

Otwórz plik konfiguracyjny /etc/ssh/sshd_config.d/security.conf (lub główny /etc/ssh/sshd_config) i wprowadź następujące restrykcje:

# Wyłączenie logowania bezpośredniego na konto root
PermitRootLogin no

# Całkowity zakaz uwierzytelniania hasłem (tylko klucze publiczne)
PasswordAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes

# Ograniczenie liczby prób autoryzacji
MaxAuthTries 3

# Wyłączenie przestarzałych mechanizmów
X11Forwarding no
KbdInteractiveAuthentication no

Przed zrestartowaniem usługi upewnij się w drugim oknie terminala, że klucz działa poprawnie, po czym przeładuj usługę:

sudo sshd -t && sudo systemctl restart sshd

3. Ochrona przed skanowaniem portów za pomocą Fail2Ban

Fail2Ban analizuje pliki dziennika systemowego (np. /var/log/auth.log) i automatycznie blokuje adresy IP w zaporze sieciowej (iptables / nftables) po wykryciu wielokrotnych nieudanych prób logowania.

Zainstaluj pakiet w systemie Debian/Ubuntu:

sudo apt update && sudo apt install fail2ban -y

Utwórz kopię konfiguracyjną w /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 86400
Wskazówka bezpieczeństwa: Wartość bantime = 86400 powoduje zbanowanie atakującego IP na pełne 24 godziny już po 3 nieudanych próbach w ciągu 10 minut.

Zobacz także