Pierwsze ataki w homelabie: od Kali Linux do analizy logów i Fail2ban

Arkadiusz Kulewicz Opublikowano: 25.01.2026 r.

W ostatnim wpisie podałem przykład homelabu do nauki cyberbezpieczeństwa dla początkujących. Po skonfigurowaniu środowiska z maszynami wirtualnymi przechodzimy do praktyki. Na początek zrobimy coś prostego — przeprowadzimy atak na SSH z Kali Linux na jedną z maszyn w sieci, dokonamy analizy śladów w logach oraz wdrożymy Fail2ban jako jeden z możliwych sposobów obrony przed intruzami.

Przygotowanie środowiska

Do symulacji ataku potrzebujemy dwóch maszyn. Posłużę się środowiskiem opisanym w ostatnim poście dotyczącym utworzenia pierwszego homelabu. Wykorzystamy dwie maszyny wirtualne:

  • atakujący — VM z Kali Linux (IP 192.168.1.108)
  • ofiara — VM z Ubuntu Server (IP 192.168.1.20)

Na Ubuntu musi być uruchomiona usługa SSH. Jeśli nie jest zainstalowana, wykonaj polecenie:

sudo apt update && sudo apt install openssh-server

Atak z Kali Linux

Kali Linux to dystrybucja systemu Linux oparta na Debianie, zaprojektowana głównie do testów penetracyjnych i audytów bezpieczeństwa. Wykorzystuje się ją do symulowania ataków, wyszukiwania luk w zabezpieczeniach, analizy ruchu sieciowego oraz testowania odporności systemów i aplikacji w kontrolowanym środowisku. W standardowej instalacji zawiera setki przydatnych narzędzi.

Do naszego ataku użyjemy jednego z nich — Hydra. Jest to narzędzie służące do automatyzowania ataków na loginy i hasła do różnych usług sieciowych, takich jak SSH.

Do przeprowadzenia ataku będzie nam potrzebna lista haseł. W katalogu domowym tworzymy plik passwords.txt, zawierający przykładowe hasła:

password123
tajnehaslo23
Kasia23
Adam2026
jestemhackerem
1haslo2
adam_mickiewicz
hero1999
1q2w3e4
asdefghjkl

Jak już mamy gotową listę haseł, możemy przejść do ataku:

hydra -l root -P passwords.txt ssh://192.168.1.20 -t 4

Hydra próbuje zalogować się przez SSH na maszynę znajdująca się pod adresem 192.168.1.20 jako użytkownik root, używając kolejnych haseł z listy.

Analiza logów na Ubuntu

Teraz przechodzimy na maszynę ofiary i szukamy śladów świadczących o próbie włamania. Próby połączenia przez OpenSSH są rejestrowane w dzienniku autoryzacji, znajdującym się w pliku /var/log/auth.log. I właśnie w tym miejscu należy szukać śladów nieudanego logowanie. W tym celu wydajemy polecenie:

sudo tail -n 50 /var/log/auth.log | grep "Failed password"

Logi zawierają datę, godzinę oraz adres IP źródła ataku. Oczywiście, jeśli w logach znajdują się 2-3 nieudane próby logowania, to może świadczyć o tym, że ktoś po prostu źle wpisał hasło. Ale jeśli tych prób jest więcej, to mamy temat, którym trzeba się zająć.

Wdrażamy ochronę

Sposobów na prewencję i odcinanie tego typu ataków jest wiele. Można np.:

  • zmienić port, na którym nasłuchuje SSH (domyślnie jest to port 22),
  • wyłączyć możliwość nawiązywania połączenia SSH przez użytkownika root,
  • wyłączyć możliwość uwierzytelniania się za pomocą haseł na rzecz kluczy,
  • ustawić na firewallu możliwość łączenia się przez SSH z wybranych adresów IP,
  • jeśli korzystasz z Wazuh możesz ustawić tzw. Active Response, które odetnie atakującego.

Ja natomiast skupię się na Fail2ban, stanowiącym dodatkową warstwę zabezpieczającą.

Instalacja Fail2ban jest stosunkowo prosta. Najpierw należy zainstalować pakiet:

sudo apt install fail2ban

Konfiguracja Fail2ban polega na utworzeniu pliku konfiguracyjnego. W tym celu wydajemy polecenie:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

W pliku jail.local znajdziemy kilka ustawień, które należy skonfigurować. Opcja banetime określa na jaki czas intruz zostanie zablokowany przez Fail2ban. Domyślnie jest to 10 min.

bantime = 10m

Ważnym ustawieniem jest opcja maxretry, która określa po ilu nieudanych próbach nastąpi reakcja ze strony Fail2ban:

maxretry = 5

Przydatnych ustawień jest więcej, dlatego gorąco zachęcam do zapoznania się z całym plikiem konfiguracyjnym. Na nasze dzisiejsze potrzeby te dwa ustawienia wystarczą.

Po dokonaniu zmian w plikach konfiguracyjnych należy zrestartować Fail2ban i sprawdzić jego status:

sudo systemctl restart fail2ban
sudo systemctl status -l fail2ban

Testujemy ochronę

Przyszedł czas na weryfikację skuteczności Fail2ban. W tym celu wracamy na VM z Kali Linux i ponownie uruchamiamy Hydrę:

hydra -l root -P passwords.txt ssh://192.168.1.20 -t 4

Następnie próbujemy połączyć się przez SSH z maszyną ofiary:

Odpowiedź będzie następująca:

ssh: connect to host 192.168.1.20 port 22: Connection refused

Zostaliśmy zablokowani.

Teraz wracamy na maszynę ofiary i sprawdzamy, co się zadziało. Śladów znajdziemy kilka.

W pierwszej kolejności sprawdzamy logi Fail2ban:

sudo grep "Ban" /var/log/fail2ban.log

Lista zbanowanych adresów:

sudo fail2ban-client banned

Przykładowy wynik:

[{'sshd': ['192.168.1.108']}]

Możemy jeszcze zweryfikować, co się zadziało na firewallu:

sudo iptables -L
Chain f2b-sshd (1 references)
target     prot opt source               destination
REJECT     all  --  192.168.1.108        anywhere             reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

Na koniec sprawdźmy jeszcze, co się stanie po upływie czasu określonego w banetime. Po upływie 10 minut ponownie próbujemy połączyć się przez SSH z maszyną ofiary:

Tym razem połączenie powinno zostać nawiązane bez żadnego problemu.

Podsumowanie

Przeszliśmy dziś prosty, aczkolwiek pełny scenariusz: od symulacji ataku na SSH, przez analizę logów, aż po wdrożenie i przetestowanie Fail2ban. Zachęcam gorąco do robienia tego typu ćwiczeń w homelabie. Z nauką cyberecurity jest trochę, jak z wojskiem - nauka taktyki jest ważna, ale na nic się zda bez porządnego poligonu. Podobnie jest u nas - książki, tutoriale i podcasty są mega istotne, ale bez przećwiczenia tego w warunkach pligonowych (czyli naszym homelabie) czeka nas porażka :)