🔐 Hardenowanie SSH w systemie Linux – wyłączanie root login, zmiana portu, logowanie kluczem
SSH (Secure Shell) to brama do Twojego systemu. Niewłaściwa konfiguracja może pozwolić atakującym na:
- próby logowania jako root,
- brute-force na dowolne konta,
- wykrywanie standardowego portu SSH.
W tym poradniku wzmocnimy bezpieczeństwo SSH w 3 krokach:
- wyłączymy logowanie jako root,
- zmienimy domyślny port,
- wymusimy logowanie przez klucz publiczny.
🛠️ Krok 1: Edycja pliku konfiguracyjnego SSH
Plik:
/etc/ssh/sshd_config
Zrób kopię bezpieczeństwa:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
🚫 Krok 2: Wyłączenie logowania jako root
Znajdź linię:
PermitRootLogin yes
Zmień na:
PermitRootLogin no
Dlaczego to ważne? Konto root jest najczęściej atakowane w pierwszej kolejności. Jeśli nie można się na nie zalogować, atakujący musi najpierw zdobyć inne konto z uprawnieniami sudo.

🔁 Krok 3: Zmiana portu SSH
Domyślny port to 22 – łatwy do wykrycia.
Zmień:
Port 22
Na inny, np.:
Port 2222
📌 Uwaga: port powinien być >1024, jeśli nie używasz root’a.
📌 Po zmianie upewnij się, że Twój firewall (np. ufw, nftables) pozwala na połączenia do nowego portu.
🔑 Krok 4: Wymuszenie logowania przez klucz publiczny
Zamień:
PasswordAuthentication yes
Na:
PasswordAuthentication no
Dzięki temu tylko użytkownicy posiadający klucz prywatny będą mogli się zalogować.
Jak wygenerować klucz SSH?
Na komputerze klienta (np. lokalnym laptopie):
ssh-keygen -t ed25519 -C "nazwa-klucza"
Domyślnie utworzy:
- klucz prywatny:
~/.ssh/id_ed25519 - klucz publiczny:
~/.ssh/id_ed25519.pub
Skopiuj klucz na serwer:
ssh-copy-id -p 2222 user@server
(Lub ręcznie dodaj zawartość pliku .pub do ~/.ssh/authorized_keys na serwerze).
🔄 Krok 5: Zrestartuj usługę SSH
Po zapisaniu zmian:
sudo systemctl restart sshd
🔍 Upewnij się, że nowa konfiguracja działa. Przetestuj logowanie w drugim terminalu, zanim wylogujesz się z obecnej sesji!
📋 Dodatkowe ustawienia bezpieczeństwa (opcjonalne)
Dodaj te linie, by wzmocnić konfigurację:
LoginGraceTime 30
MaxAuthTries 3
MaxSessions 2
Możesz też ograniczyć dostęp do SSH tylko dla wybranych użytkowników:
AllowUsers admin backupuser
🛡️ Firewall – nie zapomnij!
Jeśli używasz ufw:
sudo ufw allow 2222/tcp
Dla nftables, dodaj regułę do łańcucha input.
✅ Podsumowanie
Poprawiając konfigurację SSH:
✔️ Zatrzymujesz możliwość logowania się jako root
✔️ Minimalizujesz ryzyko ataków brute-force
✔️ Utrudniasz skanowanie portów i automatyczne ataki
✔️ Zwiększasz bezpieczeństwo przez klucze publiczne






