Jak zintegrować Dockera z Fail2ban lub nftables – praktyczny poradnik
Linux

Jak zintegrować Dockera z Fail2ban lub nftables – praktyczny poradnik

Jak zintegrować Dockera z Fail2ban lub nftables – praktyczny poradnik

Docker domyślnie izoluje kontenery, ale ruch przychodzący do aplikacji (np. Nginx, SSH w kontenerze) przechodzi przez hosta. To oznacza, że Fail2ban i nftables mogą działać na poziomie systemu gospodarza (hosta), chroniąc jednocześnie aplikacje działające w kontenerach.


🔍 Scenariusz: co chcemy osiągnąć?

  • Aplikacja w kontenerze (np. nginx lub SSH) narażona jest na ataki
  • Chcemy, aby Fail2ban wykrywał złośliwy ruch z logów (np. /var/log/nginx/access.log)
  • Chcemy, aby nftables blokował IP źródłowe ataku
  • Wszystko to działało na hoście, a nie wewnątrz kontenera

🛠️ Krok 1: Udostępnienie logów kontenera na hoście

Aby Fail2ban mógł analizować logi kontenera, musimy:

  • przekierować logi kontenera do hosta
  • lub zamontować wolumen z logami

📂 Przykład: logi Nginx z kontenera

Struktura:

/var/log/docker/nginx-access.log

Uruchom kontener z wolumenem:

docker run -d \
  --name nginx \
  -v /var/log/docker/nginx-access.log:/var/log/nginx/access.log \
  nginx

Upewnij się, że nginx loguje do /var/log/nginx/access.log.

 

Jak zintegrować Dockera z Fail2ban lub nftables – praktyczny poradnik
Jak zintegrować Dockera z Fail2ban lub nftables – praktyczny poradnik

🔒 Krok 2: Konfiguracja jail’a Fail2ban

Plik: /etc/fail2ban/jail.d/docker-nginx.conf

[docker-nginx]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/docker/nginx-access.log
maxretry = 5
bantime = 600
findtime = 300
action = nftables[name=docker-nginx]

➡️ Zakładamy, że używasz nftables jako backend (opisywane wcześniej).
➡️ Jeśli nie – możesz użyć iptables-multiport, route, sendmail, itp.


🔧 Krok 3: Upewnij się, że filtr działa

W pliku /etc/fail2ban/filter.d/nginx-http-auth.conf powinien znajdować się odpowiedni regex do wykrywania prób nieautoryzowanego dostępu. Możesz napisać własny filtr, np. dla błędów 401/403:

[Definition]
failregex = ^<HOST> -.* "(GET|POST).*HTTP.*" 401

🧱 Krok 4: Docker a nftables – co warto wiedzieć

Docker tworzy własne reguły NAT i często używa własnych łańcuchów (DOCKER, DOCKER-USER). Dlatego:

Czytaj  Korzystanie z Systemu Linux na Codzień: 10 Praktycznych Zastosowań

🔥 Blokada IP przez nftables działa na poziomie INPUT:

Jeśli ruch z kontenera trafia przez bridge (np. docker0), to możesz zablokować IP przychodzące do hosta, zanim trafi do kontenera.

Użyj własnego łańcucha:

nft add rule inet filter input ip saddr 1.2.3.4 drop

🛡️ Dodatkowa ochrona: DOCKER-USER

Jeśli chcesz mieć pełną kontrolę nad ruchem kontenerów, najlepiej użyć DOCKER-USER (w iptables lub jego odpowiednik w nftables):

iptables -I DOCKER-USER -s 1.2.3.4 -j DROP

Albo:

nft add rule ip filter docker-user ip saddr 1.2.3.4 drop

➡️ Fail2ban może wykonywać takie akcje automatycznie, jeśli dostosujesz actionban.


🔧 Krok 5: Restart usług i test

Po dodaniu jail’a:

sudo systemctl restart fail2ban

Test banowania:

fail2ban-client set docker-nginx banip 1.2.3.4
nft list set inet filter f2b-docker-nginx

✅ Podsumowanie

Dzięki integracji Fail2ban + Docker + nftables:

  • Zabezpieczasz kontenery bez instalowania Fail2ban wewnątrz nich
  • Centralnie zarządzasz bezpieczeństwem na poziomie hosta
  • Blokujesz złośliwy ruch automatycznie i skutecznie

To idealne rozwiązanie dla serwerów produkcyjnych, VPS-ów, a także środowisk testowych, gdzie bezpieczeństwo ma znaczenie.

 

Polecane wpisy
Co to jest SSH i do czego można go wykorzystać?

Co to jest SSH? SSH (ang. Secure Shell) jest to protokół komunikacyjny stosowany w sieciach TCP/IP. Służy to zdalnego łączenia Czytaj dalej

Jak zainstalować i skonfigurować LAMP Web Server na Ubuntu
Jak zainstalować i skonfigurować LAMP Web Server na Ubuntu

Jak zainstalować i skonfigurować LAMP Web Server na Ubuntu? LAMP to akronim, który oznacza zestaw oprogramowania wykorzystywanego do uruchamiania serwerów Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.