<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archiwa fail2ban - soban</title>
	<atom:link href="https://soban.pl/pl/category/fail2ban-pl/feed/" rel="self" type="application/rss+xml" />
	<link>https://soban.pl/pl/category/fail2ban-pl/</link>
	<description>IT, Linux, Servers, Security</description>
	<lastBuildDate>Thu, 26 Feb 2026 12:07:40 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>Fail2Ban: jak wyłapać recydywistów i banować ich na tydzień (recidive)</title>
		<link>https://soban.pl/pl/fail2ban-recidive-nginx-wordpress/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 12:07:40 +0000</pubDate>
				<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=748</guid>

					<description><![CDATA[<p>Jeśli korzystasz z Fail2Ban przy Nginx i WordPress, to prędzej czy później zauważysz jedną rzecz: te same adresy IP wracają. Dostają bana na kilka minut albo godzinę, znikają… i po chwili znowu próbują /.env, /wp-login.php, /phpmyadmin czy inne popularne ścieżki ataku. Rozwiązaniem nie jest agresywne podkręcanie filtrów. Rozwiązaniem jest recidive — drugi poziom ochrony w [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/fail2ban-recidive-nginx-wordpress/">Fail2Ban: jak wyłapać recydywistów i banować ich na tydzień (recidive)</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="688" src="https://soban.pl/wp-content/uploads/2026/02/image-3-1024x688.png" alt="" class="wp-image-749" style="width:566px;height:auto" srcset="https://soban.pl/wp-content/uploads/2026/02/image-3-1024x688.png 1024w, https://soban.pl/wp-content/uploads/2026/02/image-3-300x201.png 300w, https://soban.pl/wp-content/uploads/2026/02/image-3-768x516.png 768w, https://soban.pl/wp-content/uploads/2026/02/image-3.png 1157w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>Jeśli korzystasz z Fail2Ban przy Nginx i WordPress, to prędzej czy później zauważysz jedną rzecz: te same adresy IP wracają. Dostają bana na kilka minut albo godzinę, znikają… i po chwili znowu próbują <code>/.env</code>, <code>/wp-login.php</code>, <code>/phpmyadmin</code> czy inne popularne ścieżki ataku.</p>



<p>Rozwiązaniem nie jest agresywne podkręcanie filtrów. Rozwiązaniem jest <strong>recidive</strong> — drugi poziom ochrony w Fail2Ban, który analizuje historię banów i długoterminowo blokuje recydywistów.</p>



<h2 class="wp-block-heading">Nawiązanie do wcześniejszej konfiguracji</h2>



<p>Jeśli nie masz jeszcze podstawowej konfiguracji Fail2Ban dla Nginx i WordPress, opisałem ją tutaj:</p>



<p><a href="https://soban.pl/pl/fail2ban-nginx-wordpress-setup/" target="_blank" rel="noopener">Fail2Ban + Nginx + WordPress – konfiguracja podstawowa</a></p>



<p>W tamtym artykule konfigurujemy jail’e typu <code>nginx-exploit</code>, <code>nginx-secure</code> czy <code>sshd</code>. Recidive nie zastępuje tej konfiguracji — on ją wzmacnia.</p>



<h2 class="wp-block-heading">Jak znaleźć recydywistów w logach</h2>



<p>Najpierw warto sprawdzić, czy problem faktycznie występuje. Wyciągamy z logów Fail2Ban listę IP, które były banowane najczęściej:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">grep "Ban " /var/log/fail2ban.log | awk '{print $NF}' | sort | uniq -c | sort -nr | head</pre></div>



<p>Przykładowy wynik (adresy częściowo anonimizowane):</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">13 204.76.203.18
9 41.142.XXX.XXX
8 64.89.XXX.XXX
8 50.82.XXX.XXX
8 35.243.XXX.XXX
8 34.24.XXX.XXX
7 45.166.XXX.XXX
7 34.83.XXX.XXX
7 176.42.XXX.XXX
6 49.36.XXX.XXX</pre></div>



<p>Jeśli widzisz liczby typu 8, 9, 13 — to znaczy, że te IP wracają po zdjęciu bana. Krótki <code>bantime</code> jest dla nich tylko przerwą techniczną.</p>



<h2 class="wp-block-heading">Dlaczego recidive jest lepszy niż zwiększanie bantime</h2>



<ul class="wp-block-list">
<li>Nie musisz banować każdego na 24h za jedną literówkę w URL.</li>



<li>Nie zwiększasz ryzyka blokady normalnych użytkowników.</li>



<li>Kara jest progresywna i dotyczy tylko powracających adresów.</li>
</ul>



<p>Recidive analizuje <code>/var/log/fail2ban.log</code> i liczy, ile razy dane IP zostało zbanowane przez inne jail’e. Dzięki temu “dobić” można tylko tych, którzy już wcześniej wielokrotnie trafiali na blokadę.</p>



<h2 class="wp-block-heading">Konfiguracja recidive (5 banów w 24h = 7 dni bana)</h2>



<p>Dodaj poniższy blok do <code>/etc/fail2ban/jail.local</code>:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">nano /etc/fail2ban/jail.local</pre></div>



<p>Na końcu pliku wklej:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">[recidive]
enabled  = true
logpath  = /var/log/fail2ban.log
bantime  = 7d
findtime = 1d
maxretry = 5</pre></div>



<p>Zapisz plik i zrestartuj Fail2Ban:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">systemctl restart fail2ban</pre></div>



<p>Sprawdź status jaila:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-client status recidive</pre></div>



<h2 class="wp-block-heading">Jak sprawdzić kto jest blisko progu recidive</h2>



<p>Jeśli chcesz zobaczyć IP, które już mają kilka banów i zbliżają się do progu recidive:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">grep "Ban " /var/log/fail2ban.log | awk '{print $NF}' | sort | uniq -c | awk '$1 &gt;= 3 {print}' | sort -nr</pre></div>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p>Recidive to jeden z najprostszych i najbardziej skutecznych sposobów na ograniczenie powracających skanerów i botów. Zamiast agresywnie banować wszystkich — blokujesz tylko tych, którzy wracają wielokrotnie.</p>



<p>W środowisku z wieloma domenami, Nginx reverse proxy i WordPress to praktycznie obowiązkowy element konfiguracji: mniej szumu w logach, mniej powtarzalnych ataków i mniej ręcznej analizy.</p>
<p>Artykuł <a href="https://soban.pl/pl/fail2ban-recidive-nginx-wordpress/">Fail2Ban: jak wyłapać recydywistów i banować ich na tydzień (recidive)</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
