Bezpieczna konfiguracja SSH – praktyczny poradnik dla administratorów
Linux

Bezpieczna konfiguracja SSH – praktyczny poradnik dla administratorów

 

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

 

Czytaj  Exploity i backdoory – mroczne narzędzia współczesnego hacking
Bezpieczna konfiguracja SSH – praktyczny poradnik dla administratorów
Bezpieczna konfiguracja SSH – praktyczny poradnik dla administratorów

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.

Czytaj  Android i bezpieczeństwo mobilne: VPN, malware i antywirusy – przewodnik techniczny

 


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.

Polecane wpisy
Kradzież tożsamości poprzez luki w Androidzie: Odcisk palca, PIN, wzór – co jest najbezpieczniejsze?
Kradzież tożsamości poprzez luki w Androidzie: Odcisk palca, PIN, wzór – co jest najbezpieczniejsze?

🔓 Kradzież tożsamości poprzez luki w Androidzie: Odcisk palca, PIN, wzór – co jest najbezpieczniejsze? W dobie dynamicznej cyfryzacji, smartfony Czytaj dalej

Konfiguracja zapory dla sieci klastrowych i wysokiej dostępności w Windows Server
Konfiguracja zapory dla sieci klastrowych i wysokiej dostępności w Windows Server

Konfiguracja zapory dla sieci klastrowych i wysokiej dostępności w Windows Server Bezpieczeństwo sieciowe to kluczowy element infrastruktury IT, szczególnie w Czytaj dalej