Cookie Consent by Free Privacy Policy website Fail2ban - jak přidat celý rozsah do ignoreip? - jetoonas.cz

Fail2ban - jak přidat celý rozsah do ignoreip?


Timeout (doba expirace blokovaných IP adres) ve Fail2ban závisí na nastavení několika parametrů – nejdůležitější jsou:

  • bantime – doba, po kterou zůstane IP adresa zabanována.

  • findtime – časové okno, ve kterém musí dojít k porušení pravidel.

  • maxretry – kolikrát může IP selhat během findtime, než bude zabanována.

Pokud tě zajímá konkrétně, kdy vyprší blokace u již zabanované IP, můžeš to zjistit několika způsoby:


🛠️ 1. Použití příkazu fail2ban-client

Nejjednodušší způsob je:

sudo fail2ban-client status <jailname>

Např.:

sudo fail2ban-client status sshd

Výstup vypadá třeba takto:

Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| `- Total failed: 12
`- Actions
|- Currently banned: 2
| `- IP list: 203.0.113.45 198.51.100.23
`- Total banned: 5

To ti ukáže seznam aktuálně blokovaných IP, ale ne kdy přesně skončí blokace.


🧪 2. Zjistit přesný čas vypršení přes databázi (fail2ban.sqlite3)

Pokud používáš novější verzi Fail2ban (obvykle ≥ 0.11), ukládá si data do databáze /var/lib/fail2ban/fail2ban.sqlite3.
Můžeš ji prozkoumat takto:

sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT jail, ip, timeofban, bantime FROM bans;"

Výstup např.:

sshd|203.0.113.45|1729061200|3600
  • timeofban je Unix timestamp, kdy došlo k blokaci

  • bantime je délka blokace v sekundách

Můžeš si i rovnou vypočítat čas expirace:

sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT jail, ip, datetime(timeofban + bantime, 'unixepoch') AS expires FROM bans;"

To vrátí čitelný čas, kdy blokace vyprší.


📜 3. Ručně vypočítat podle logu

Pokud sqlite databázi nemáš (např. starší verze Fail2ban), můžeš dohledat čas blokace v logu:

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

Uvidíš něco jako:

2025-10-16 08:12:45,234 fail2ban.actions [1234]: NOTICE [sshd] Ban 203.0.113.45

Pokud víš, že bantime je např. 3600 s (1 hodina), prostě k času přičti 1 hodinu → to je okamžik expirace.


📦 4. Zjistit výchozí bantime (pokud nevíš)

Zkontroluj konfiguraci:

grep -R "bantime" /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Nebo přímo pro daný jail:

sudo fail2ban-client get <jailname> bantime

Shrnutí:

Cíl Příkaz
Zjistit aktivní bany sudo fail2ban-client status <jail>
Zjistit čas expirace (nové verze) sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT jail, ip, datetime(timeofban + bantime, 'unixepoch') FROM bans;"
Zjistit čas blokace (starší verze) grep "Ban" /var/log/fail2ban.log
Zjistit délku bantime sudo fail2ban-client get <jail> bantime

💡 Tip: Pokud chceš mít expirace vždy přehledně po ruce, můžeš si udělat krátký alias:

alias fail2ban-expire='sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT jail, ip, datetime(timeofban + bantime, '\''unixepoch'\'') AS expires FROM bans;"'

Do ignoreip se dá přidat libovolný počet jednotlivých adres, rozsahů i celých podsítí (CIDR) — jen je potřeba dodržet správný formát a upravit to ve správném souboru.

Postup 👇


🛠️ 1. Otevři konfigurační soubor jailu

Nejčastěji:

sudo nano /etc/fail2ban/jail.local

Pokud ho nemáš, vytvoř si ho z výchozího (jail.conf se nemění!):

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

📥 2. Najdi nebo přidej sekci [DEFAULT]

V této sekci je globální nastavení, které platí pro všechny jail-y:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.0.0/16
  • 127.0.0.1/8 – všechny loopback adresy

  • ::1 – IPv6 loopback

  • 192.168.0.0/16celý rozsah všech 192.168.x.x adres (celá privátní síť)