Bezpieczna konfiguracja SSH – praktyczny poradnik dla administratorów 🔒💻
Wprowadzenie – dlaczego bezpieczeństwo SSH jest tak ważne? ⚠️
Protokół SSH (Secure Shell) to podstawa zdalnego zarządzania serwerami Linux, w tym Debian, Ubuntu czy CentOS.
Pozwala administratorom łączyć się z serwerem w sposób zaszyfrowany i wydajny.
Jednak domyślna konfiguracja SSH często pozostawia wiele luk, które mogą zostać wykorzystane przez boty i atakujących.
Dlatego bezpieczna konfiguracja SSH to pierwszy krok w hardeningu systemu Linux.
1. Instalacja i podstawowa konfiguracja SSH 🧰
W systemach Debian i Ubuntu serwer SSH można zainstalować poleceniem:
sudo apt install openssh-server
Po instalacji sprawdź, czy usługa działa:
sudo systemctl status ssh
Konfiguracja znajduje się w pliku:
/etc/ssh/sshd_config
Edytujemy go np. za pomocą nano:
sudo nano /etc/ssh/sshd_config
2. Zmiana domyślnego portu SSH 🔢
Ataki typu brute force często kierowane są na domyślny port 22.
Zmiana portu nie zapewni pełnego bezpieczeństwa, ale ograniczy liczbę automatycznych prób logowania.
W pliku sshd_config znajdź linię:
#Port 22
Odkomentuj ją i zmień na np.:
Port 2222
Zapisz plik i uruchom ponownie usługę:
sudo systemctl restart ssh
Upewnij się, że firewall (np. UFW) przepuszcza nowy port:
sudo ufw allow 2222/tcp

3. Wyłączenie logowania hasłem – tylko klucze 🔑
Najbezpieczniejszym sposobem logowania do serwera jest autoryzacja kluczem publicznym.
Użytkownik posiada klucz prywatny, a na serwerze zapisany jest odpowiadający mu klucz publiczny.
Generowanie klucza:
Na komputerze administratora:
ssh-keygen -t ed25519 -C "admin@twojserwer"
Następnie skopiuj klucz publiczny na serwer:
ssh-copy-id -p 2222 user@adres_serwera
W pliku sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
Dzięki temu tylko osoby z poprawnym kluczem będą mogły się zalogować.
4. Ograniczenie dostępu do SSH dla wybranych użytkowników 👥
W sshd_config możesz wskazać, którzy użytkownicy lub grupy mają prawo do logowania:
AllowUsers admin marek
AllowGroups sshusers
Dzięki temu nikt spoza wskazanej listy nie uzyska dostępu.
Możesz też całkowicie wyłączyć logowanie roota:
PermitRootLogin no
5. Konfiguracja czasu bezczynności i liczby prób logowania ⏳
Aby utrudnić ataki brute-force i zapobiec pozostawieniu otwartych sesji:
LoginGraceTime 30
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
Parametry te oznaczają:
LoginGraceTime– czas na zalogowanie (w sekundach),MaxAuthTries– maksymalna liczba prób logowania,ClientAliveInterval– czas nieaktywności po której SSH wysyła sygnał keepalive,ClientAliveCountMax– ile razy serwer ponowi sygnał przed rozłączeniem.
6. Dodatkowe zabezpieczenia — Fail2Ban i UFW 🧱
Fail2Ban analizuje logi SSH i automatycznie blokuje adresy IP, które próbują się włamać.
📦 Instalacja:
sudo apt install fail2ban
📁 Konfiguracja:
sudo nano /etc/fail2ban/jail.local
Dodaj:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
Uruchom usługę:
sudo systemctl enable fail2ban --now
7. Logowanie przez bastion lub VPN 🔐🌐
Jeśli zarządzasz większą infrastrukturą, warto ograniczyć logowanie SSH tylko z sieci VPN lub przez jump host (bastion).
W firewallu (np. UFW lub iptables) możesz ustawić:
sudo ufw allow from 192.168.10.0/24 to any port 2222
W ten sposób dostęp SSH będzie możliwy tylko z określonego zakresu IP.
8. Weryfikacja i test bezpieczeństwa SSH 🧪
Po każdej zmianie konfiguracji sprawdź poprawność pliku:
sudo sshd -t
Następnie przetestuj połączenie z innego komputera:
ssh -p 2222 user@adres_serwera
Dodatkowo możesz przeskanować porty zdalnego hosta:
nmap -p 2222 adres_serwera
9. Dobre praktyki administratora 🧩
✔️ Używaj kluczy ed25519 zamiast RSA.
✔️ Regularnie aktualizuj system:
sudo apt update && sudo apt upgrade -y
✔️ Włącz logowanie zdarzeń:
LogLevel VERBOSE
✔️ Blokuj podejrzane IP przez Fail2Ban lub firewall.
✔️ Używaj konta nie-root z sudo.
✔️ Ogranicz dostęp przez VPN lub whitelistę adresów.
Podsumowanie 🏁
Zabezpieczenie SSH to jeden z najważniejszych etapów ochrony serwera Linux.
Dzięki kilku zmianom – jak wyłączenie logowania hasłem, zmiana portu, autoryzacja kluczem i konfiguracja Fail2Ban – możesz znacząco zwiększyć poziom bezpieczeństwa systemu.
Warto regularnie monitorować logi i testować konfigurację, aby uniknąć nieautoryzowanych połączeń.
Zadbaj o aktualizacje, kopie zapasowe i spójne zasady bezpieczeństwa w całym środowisku.






