<?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>fail2ban &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/tag/fail2ban/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Sat, 16 May 2026 13:37:00 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=84134</generator>
	<item>
		<title>fail2ban: bloccare i tentativi di accesso al wp-admin</title>
		<link>https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/</link>
					<comments>https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 20 Jan 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[wp-admin]]></category>
		<category><![CDATA[wp-login.php]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6927</guid>

					<description><![CDATA[Oggi vediamo una semplice regola per fail2ban per bloccare i tentativi multipli di accesso a wordpress. Creiamo un nuovo file chiamato /etc/fail2ban/filter.d/wordpress.conf in cui scriviamo: Ora inseriamo nel file /etc/fail2ban/jail.d/defaults-debian.conf queste righe: (in questo esempio controllo se ci sono almeno 5 tentativi in 1800 secondi (30 minuti), blocco quindi per 3600 secondi (1 ora) riavviamo ... <a title="fail2ban: bloccare i tentativi di accesso al wp-admin" class="read-more" href="https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/" aria-label="Per saperne di più su fail2ban: bloccare i tentativi di accesso al wp-admin">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Oggi vediamo una semplice regola per <strong>fail2ban</strong> per bloccare i tentativi multipli di accesso a wordpress.</p>



<p class="wp-block-paragraph">Creiamo un nuovo file chiamato <code><strong>/etc/fail2ban/filter.d/wordpress.conf</strong></code> in cui scriviamo:</p>



<pre class="wp-block-code"><code>&#91;Definition]
failregex = ^&lt;HOST&gt; -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =</code></pre>



<p class="wp-block-paragraph">Ora inseriamo nel file <strong>/etc/fail2ban/jail.d/defaults-debian.conf</strong> queste righe:</p>



<pre class="wp-block-code"><code>&#91;wordpress]
enabled = true
port = http,https
logpath = %(apache_access_log)s
filter = wordpress
maxretry = 5
findtime = 1800
bantime = 3600</code></pre>



<p class="wp-block-paragraph">(in questo esempio controllo se ci sono almeno 5 tentativi in 1800 secondi (30 minuti), blocco quindi per 3600 secondi (1 ora) riavviamo fail2ban:</p>



<pre class="wp-block-code"><code>systemctl restart fail2ban.service</code></pre>



<p class="wp-block-paragraph">e dopo qualche minuto vediamo come la regola sta funzionando:</p>



<pre class="wp-block-code"><code>fail2ban-client status wordpress</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>fail2ban su Debian 12 con systemd(journald)</title>
		<link>https://blog.smsoft.it/2024/04/02/fail2ban-su-debian-12-con-systemdjournald/</link>
					<comments>https://blog.smsoft.it/2024/04/02/fail2ban-su-debian-12-con-systemdjournald/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[journalctl]]></category>
		<category><![CDATA[journald]]></category>
		<category><![CDATA[systemd]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6265</guid>

					<description><![CDATA[Sull&#8217;attuale versione di Debian 12 (bookworm), come abbiamo detto in qualche articolo precedente, il log sono centralizzati e gestiti da journald e si trovano in dei file binari salvati nella cartella /var/log/journal. Attivando la jail ssh su fail2ban (la prima che troviamo anche preattivata), fail2ban si rifiuta di partire perché non trova il file con ... <a title="fail2ban su Debian 12 con systemd(journald)" class="read-more" href="https://blog.smsoft.it/2024/04/02/fail2ban-su-debian-12-con-systemdjournald/" aria-label="Per saperne di più su fail2ban su Debian 12 con systemd(journald)">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Sull&#8217;attuale versione di Debian 12 (bookworm), come abbiamo detto in qualche articolo precedente, il log sono centralizzati e gestiti da <strong>journald</strong> e si trovano in dei file binari salvati nella cartella /<strong>var/log/journal</strong>.</p>



<p class="wp-block-paragraph">Attivando la jail ssh su fail2ban (la prima che troviamo anche preattivata), fail2ban si rifiuta di partire perché non trova il file con i log degli accessi ssh. Se proviamo ad avviare fail2ban con:</p>



<pre class="wp-block-code"><code>systemctl start fail2ban</code></pre>



<p class="wp-block-paragraph">ci accorgiamo subito che non è partito, il file dei log non viene popolato. Se andiamo a verificare, proprio tra i log di jounald la situazione con:</p>



<pre class="wp-block-code"><code>journalctl -ufail2ban</code></pre>



<p class="wp-block-paragraph">possiamo vedere qualcosa tipo:</p>



<pre class="wp-block-code"><code>ERROR Failed during configuration: Have not found any log file for sshd jail</code></pre>



<p class="wp-block-paragraph">La stessa cosa si può vedere con:</p>



<pre class="wp-block-code"><code>systemctl status fail2ban</code></pre>



<p class="wp-block-paragraph">Ecco, il motivo per cui non si avvia fail2ban ora è chiaro&#8230; Apriamo il file <strong>/etc/fail2ban/jail.d/defaults-debian.conf</strong> ed inseriamo le seguenti direttive:</p>



<pre class="wp-block-code"><code>&#91;DEFAULT]
backend = systemd</code></pre>



<p class="wp-block-paragraph">ora riavviamo <strong>fail2ban</strong> e partirà normalmente. Possiamo verificare che il servizio è attivo con</p>



<pre class="wp-block-code"><code>systemctl status fail2ban</code></pre>



<p class="wp-block-paragraph">oppure con:</p>



<pre class="wp-block-code"><code>fail2ban-client status
fail2ban-client status sshd</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2024/04/02/fail2ban-su-debian-12-con-systemdjournald/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fail2ban e proxy: integrazione con htaccess per bloccare IP tramite apache</title>
		<link>https://blog.smsoft.it/2022/11/22/fail2ban-e-proxy-integrazione-con-htaccess-per-bloccare-ip-tramite-apache/</link>
					<comments>https://blog.smsoft.it/2022/11/22/fail2ban-e-proxy-integrazione-con-htaccess-per-bloccare-ip-tramite-apache/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 22 Nov 2022 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[proxy]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5692</guid>

					<description><![CDATA[Se il nostro server web si trova dietro un proxy, è possibile che l&#8217;IP sorgente non sia quello reale del visitatore finale, ma sia quello del proxy e quindi avremo l&#8217;IP reale in qualche header tipo X-Forwarded-For; intanto potremo configurare apache per loggare l&#8217;IP in modo corretto, usando il modulo remoteip o rpaf in modo ... <a title="Fail2ban e proxy: integrazione con htaccess per bloccare IP tramite apache" class="read-more" href="https://blog.smsoft.it/2022/11/22/fail2ban-e-proxy-integrazione-con-htaccess-per-bloccare-ip-tramite-apache/" aria-label="Per saperne di più su Fail2ban e proxy: integrazione con htaccess per bloccare IP tramite apache">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se il nostro server web si trova dietro un <strong>proxy</strong>, è possibile che l&#8217;IP sorgente non sia quello reale del visitatore finale, ma sia quello del proxy e quindi avremo l&#8217;IP reale in qualche header tipo  <strong>X-Forwarded-For</strong>; intanto potremo configurare apache per loggare l&#8217;IP in modo corretto, usando il modulo <strong>remoteip</strong> o <strong>rpaf</strong> in modo da avere nei log di accesso il corretto IP del visitatore finale, ma se volessimo bloccare tale IP con file2ban non sarebbe possibile direttamente, perché ricordo che l&#8217;IP sorgente delle richieste non è quello del visitatore finale, bensì quello del proxy.</p>



<p class="wp-block-paragraph">In questo caso possiamo limitare i danni (nel senso di bloccare le richieste per taluni IP), creando una regola nel file <strong>.htaccess</strong> posizionato nella nostra <strong>webroot</strong> che vada a bloccare le richieste se l&#8217;IP viene identificato da qualche regola di <strong>fail2ban</strong>.</p>



<p class="wp-block-paragraph">Ipotizziamo che la webroot sia <strong>/var/www/web1/htdocs</strong>  e che vogliamo usare la cartella <strong>blockedip</strong> per contenere i riferimenti per gli IP bloccati.</p>



<p class="wp-block-paragraph">Scriviamo all&#8217;inizio del nel nostro file <strong>.htaccess</strong> le seguenti direttive (le prime due righe non servono ma le lascio perché a qualcuno possono essere utili per farci altro):</p>



<pre class="wp-block-code"><code>RewriteCond %{DOCUMENT_ROOT}/blockedip/%{REMOTE_ADDR} -f
RewriteRule . - F]
RewriteCond %{DOCUMENT_ROOT}/blockedip/%{HTTP:X-FORWARDED-FOR} -f
RewriteRule . - F]</code></pre>



<p class="wp-block-paragraph">Dopo aver fatto la classica configurazione di <strong>fail2ban</strong> in coppia con <strong>nftables</strong>, bisognerà aprire il file <strong>/etc/fail2ban/action.d/nftables.conf</strong> e scrivere, sotto la direttiva <strong>actionban</strong>, la riga:</p>



<pre class="wp-block-code"><code>touch /var/www/web1/htdocs/blockedip/&lt;ip&gt;</code></pre>



<p class="wp-block-paragraph">e sotto la direttiva <strong>actionunban</strong>, la riga:</p>



<pre class="wp-block-code"><code>rm /var/www/web1/htdocs/blockedip/&lt;ip&gt;</code></pre>



<p class="wp-block-paragraph">Bene, ora riavviamo <strong>fail2ban</strong> e non appena ci saranno IP bloccati, li troverete riepilogati nella cartella <strong>/var/www/web1/htdocs</strong> e la regola di rewrite nel file <strong>.htaccess</strong> provvederà a bloccare le richieste per tali IP.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2022/11/22/fail2ban-e-proxy-integrazione-con-htaccess-per-bloccare-ip-tramite-apache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fail2ban ed nftables su Debian 11 Bullseye</title>
		<link>https://blog.smsoft.it/2021/09/28/fail2ban-ed-nftables-su-debian-11-bullseye/</link>
					<comments>https://blog.smsoft.it/2021/09/28/fail2ban-ed-nftables-su-debian-11-bullseye/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 28 Sep 2021 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[nftables]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=5141</guid>

					<description><![CDATA[Fail2ban non ha bisogno di presentazioni, utile per identificare richieste anomale dall&#8217;analisi dei logs di molti servizi e bloccarne le sorgenti. Su Debian 11 Bullseye consiglio di utilizzare nftables, ormai direi il firewall standard per le ultime Debian. Installiamo intanto nftables e fail2ban: apt install fail2ban nftables Copiamo il file con le regole di default, ... <a title="Fail2ban ed nftables su Debian 11 Bullseye" class="read-more" href="https://blog.smsoft.it/2021/09/28/fail2ban-ed-nftables-su-debian-11-bullseye/" aria-label="Per saperne di più su Fail2ban ed nftables su Debian 11 Bullseye">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Fail2ban non ha bisogno di presentazioni, utile per identificare richieste anomale dall&#8217;analisi dei logs di molti servizi e bloccarne le sorgenti.</p>



<p class="wp-block-paragraph">Su Debian 11 Bullseye consiglio di utilizzare nftables, ormai direi il firewall standard per le ultime Debian.</p>



<p class="wp-block-paragraph">Installiamo intanto nftables e fail2ban:</p>



<pre class="wp-block-preformatted">apt install fail2ban nftables</pre>



<p class="wp-block-paragraph">Copiamo il file con le regole di default, da personalizzare secondo le nostre esigenze:</p>



<pre class="wp-block-preformatted">cp /usr/share/doc/nftables/examples/workstation.nft /etc/nftables.conf</pre>



<p class="wp-block-paragraph">Attiviamo nftables per l&#8217;avvio automatico:</p>



<pre class="wp-block-preformatted">systemctl enable nftables.service</pre>



<p class="wp-block-paragraph">in <strong>/etc/fail2ban/jail.conf</strong> verificare che le direttive <strong>banaction</strong> e <strong>banaction_allports</strong> siano:</p>



<pre class="wp-block-preformatted">banaction = nftables-multiport
banaction_allports = nftables-allports</pre>



<p class="wp-block-paragraph">Abilitiamo poi i filtri per i vari servizi in <strong>/etc/fail2ban/jail.d/defaults-debian.conf</strong> e riavviamo:</p>



<pre class="wp-block-preformatted">service fail2ban restart
service nftables restart</pre>



<p class="wp-block-paragraph">Per verificare che la nuova chain sia stata creata:</p>



<p class="wp-block-paragraph"><code>nft list ruleset</code></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2021/09/28/fail2ban-ed-nftables-su-debian-11-bullseye/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comandi utili per fail2ban</title>
		<link>https://blog.smsoft.it/2020/11/17/comandi-utili-per-fail2ban/</link>
					<comments>https://blog.smsoft.it/2020/11/17/comandi-utili-per-fail2ban/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 17 Nov 2020 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[fail2ban]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=4823</guid>

					<description><![CDATA[Oggi una serie di comandi che possono tornare utili nell&#8217;uso di fail2ban. Vedere lo stato generale di fail2ban: Aggiungere il blocco per un IP alla chain sshd: Verificare lo stato della chain sshd: Eliminare un IP alla chain sshd: Aggiungere un IP in whitelist: Rimuovere un IP dalla whitelist: Vedere gli IP in whitelist: Varie: ... <a title="Comandi utili per fail2ban" class="read-more" href="https://blog.smsoft.it/2020/11/17/comandi-utili-per-fail2ban/" aria-label="Per saperne di più su Comandi utili per fail2ban">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Oggi una serie di comandi che possono tornare utili nell&#8217;uso di fail2ban.</p>



<p class="wp-block-paragraph">Vedere lo stato generale di fail2ban:</p>



<pre id="block-be47c672-9582-4373-85b7-a50e16ca3f11" class="wp-block-code"><code>fail2ban-client status</code></pre>



<p class="wp-block-paragraph">Aggiungere il blocco per un IP  alla chain sshd:</p>



<pre class="wp-block-code"><code>fail2ban-client set sshd banip 30.30.30.3</code></pre>



<p class="wp-block-paragraph">Verificare lo stato della chain sshd:</p>



<pre class="wp-block-code"><code>fail2ban-client status sshd</code></pre>



<p class="wp-block-paragraph">Eliminare un IP alla chain sshd:</p>



<pre class="wp-block-code"><code>fail2ban-client set sshd unbanip 30.30.30.3</code></pre>



<p class="wp-block-paragraph">Aggiungere un IP in whitelist:</p>



<pre id="block-3c0c3773-ea4d-43ea-9ab3-6ceeb3013d3b" class="wp-block-code"><code>fail2ban-client set sshd addignoreip 30.30.30.3</code></pre>



<p class="wp-block-paragraph">Rimuovere un IP dalla whitelist:</p>



<pre id="block-3c0c3773-ea4d-43ea-9ab3-6ceeb3013d3b" class="wp-block-code"><code>fail2ban-client set sshd delignoreip 30.30.30.3</code></pre>



<p class="wp-block-paragraph">Vedere gli IP in whitelist:</p>



<pre class="wp-block-code"><code>fail2ban-client get sshd ignoreip</code></pre>



<p class="wp-block-paragraph"></p>


<h2>Varie:</h2>
<p>Per<strong> testare il funzionamento di un filtro</strong>, ad esempio il filtro fail2ban creato prima, basta digitare:</p>
<pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf</pre>


<p class="wp-block-paragraph">Se si vuole testare sia la regexp che l&#8217;ignore filter, va ripetuto due volte il nome del file con il filtro, es:</p>



<pre class="wp-block-code"><code>fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf /etc/fail2ban/filter.d/fail2ban.conf</code></pre>



<p class="wp-block-paragraph">Per vedere i dettagli delle righe rilevate, bisogna aggiungere il parametro <strong>-v</strong>, es:</p>



<pre class="wp-block-code"><code>fail2ban-regex -v /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf</code></pre>



<p class="wp-block-paragraph">Per vedere invece l&#8217;elenco delle righe trovate si usa <strong>&#8211;print-all-matched</strong>:</p>



<pre id="block-fe5a9fbd-6776-450f-83f8-902fa847da11" class="wp-block-code"><code>fail2ban-regex --print-all-matched /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf</code></pre>



<p class="wp-block-paragraph">Per verificare i filtri attivi:</p>



<pre class="wp-block-code"><code>fail2ban-client status</code></pre>



<p class="wp-block-paragraph"><br>Per controllare gli IP bloccati da un determintato filtro:</p>



<pre class="wp-block-code"><code>fail2ban-client status fail2ban</code></pre>



<p class="wp-block-paragraph">Per vedere tutti gli IP bloccati da tutti i filtri non esiste un comando specifico, si può fare in questo modo:</p>



<pre class="wp-block-code"><code>fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a&#91;i])}' | grep "Status\|IP list"</code></pre>



<p class="wp-block-paragraph">Oppure si può controllare il contenuto del database sqlite in /var/lib/fail2ban/fail2ban.sqlite3 ad esempio:</p>



<pre class="wp-block-code"><code>sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip,jail from bips"</code></pre>



<p class="wp-block-paragraph">oppure, per avere tutte le informazioni sul blocco):</p>



<pre class="wp-block-code"><code>sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select * from bips"</code></pre>



<p class="wp-block-paragraph">(dato che lo schema del DB è stato modificato tra le varie versioni, la tabella potrebbe chiamarsi in altro modo, si può verificare con: </p>



<pre class="wp-block-code"><code>sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 '.schema'</code></pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2020/11/17/comandi-utili-per-fail2ban/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian Stretch: fail2ban su nftables</title>
		<link>https://blog.smsoft.it/2017/08/29/debian-stretch-fail2ban-nftables/</link>
					<comments>https://blog.smsoft.it/2017/08/29/debian-stretch-fail2ban-nftables/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 29 Aug 2017 08:30:03 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[nftables]]></category>
		<category><![CDATA[stretch]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=3789</guid>

					<description><![CDATA[Dopo aver installato e configurato (con le classiche impostazioni) fail2ban con nftables su Stretch ho notato che non stava funzionando. Dopo alcuni test, ho verificato che il problema è nel nome della catena (chain) di nftables. Richiamando infatti: nft list ruleset non vengono visualizzate le regole relative alle chain create. Bisogna modificare il file /etc/fail2ban/jail.conf ... <a title="Debian Stretch: fail2ban su nftables" class="read-more" href="https://blog.smsoft.it/2017/08/29/debian-stretch-fail2ban-nftables/" aria-label="Per saperne di più su Debian Stretch: fail2ban su nftables">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Dopo aver installato e configurato (con le classiche impostazioni) <strong>fail2ban</strong> con <strong>nftables</strong> su <strong>Stretch</strong> ho notato che non stava funzionando. Dopo alcuni test, ho verificato che il problema è nel nome della catena (chain) di nftables.</p>
<p>Richiamando infatti:<br />
<code>nft  list ruleset</code><br />
non vengono visualizzate le regole relative alle chain create.</p>
<p>Bisogna modificare il file <strong>/etc/fail2ban/jail.conf</strong> ed in particolare sostituire:<br />
<code>chain     = INPUT</code><br />
con<br />
<code>chain     = input</code></p>
<p>Per verificare che i blocchi di fail2ban siano stati attivati, eseguire:<br />
<code>nft  list ruleset</code></p>
<p>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2017/08/29/debian-stretch-fail2ban-nftables/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Controllare le connessioni ad apache dallo stesso IP in tempo reale</title>
		<link>https://blog.smsoft.it/2015/07/07/controllare-le-connessioni-ad-apache-dallo-stesso-ip-in-tempo-reale/</link>
					<comments>https://blog.smsoft.it/2015/07/07/controllare-le-connessioni-ad-apache-dallo-stesso-ip-in-tempo-reale/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 07 Jul 2015 09:30:41 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[logtop]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=3170</guid>

					<description><![CDATA[Per una serie di motivi potrebbe essere utile sapere in tempo reale quante connessioni vengono fatte ad apache dallo stesso IP in un certo arco di tempo. Ad esempio si potrebbe voler configurare fail2ban per bloccare attacchi DoS e quindi bisogna conoscere quante sono le connesioni che generalmente vengono fatte da ogni IP. Per fare ... <a title="Controllare le connessioni ad apache dallo stesso IP in tempo reale" class="read-more" href="https://blog.smsoft.it/2015/07/07/controllare-le-connessioni-ad-apache-dallo-stesso-ip-in-tempo-reale/" aria-label="Per saperne di più su Controllare le connessioni ad apache dallo stesso IP in tempo reale">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Per una serie di motivi potrebbe essere utile sapere in tempo reale quante connessioni vengono fatte ad apache dallo stesso IP in un certo arco di tempo.</p>
<p>Ad esempio si potrebbe voler configurare fail2ban per bloccare attacchi DoS e quindi bisogna conoscere quante sono le connesioni che generalmente vengono fatte da ogni IP. Per fare questo si deve monitorare il file di log per un po&#8217; di tempo al fine di evitare falsi positivi.</p>
<p>Vi segnalo una semplice concatenazione di comandi che può tornare utile:</p>
<p>           
            <div class="onp-locker-call" style="display: none;" data-lock-id="onpLock316781">
                <p></p><pre class="urvanov-syntax-highlighter-plain-tag">tail -f /var/log/apache2/access.log | awk {'print $1; fflush();'} | logtop</pre><p></p>
            </div>
         

        </p>
<p>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2015/07/07/controllare-le-connessioni-ad-apache-dallo-stesso-ip-in-tempo-reale/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>fail2ban.comm: WARNING Invalid command</title>
		<link>https://blog.smsoft.it/2014/07/22/fail2ban-comm-warning-invalid-command/</link>
					<comments>https://blog.smsoft.it/2014/07/22/fail2ban-comm-warning-invalid-command/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 22 Jul 2014 09:30:06 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[fail2ban]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=2932</guid>

					<description><![CDATA[Oggi ho aggiornato fail2ban e tra le novità ho dovuto indicare un utente alternativo per eseguire lo script. Dopo aver riavviato lo script, ho controllato i log (/var/log/fail2ban.log) per vedere che tutto fosse corretto e mi sono accorto della riga: [crayon-6a41ad7414077841850318/] Per capire meglio cosa genera l&#8217;errore, ho eseguito il comando fail2ban-client con i parametri ... <a title="fail2ban.comm: WARNING Invalid command" class="read-more" href="https://blog.smsoft.it/2014/07/22/fail2ban-comm-warning-invalid-command/" aria-label="Per saperne di più su fail2ban.comm: WARNING Invalid command">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Oggi ho aggiornato <strong>fail2ban</strong> e tra le novità ho dovuto indicare un utente alternativo per eseguire lo script.</p>
<p>Dopo aver riavviato lo script, ho controllato i log (/var/log/fail2ban.log) per vedere che tutto fosse corretto e mi sono accorto della riga:</p><pre class="urvanov-syntax-highlighter-plain-tag">fail2ban.comm: WARNING Invalid command: ['set', 'ssh', 'addlogpath', '/var/log/auth.log']</pre><p></p>
<p>Per capire meglio cosa genera l&#8217;errore, ho eseguito il comando <strong>fail2ban-client</strong> con i parametri indicati nell&#8217;errore:</p><pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-client set ssh addlogpath /var/log/auth.log</pre><p></p>
<p>ed il messaggio è stato molto chiaro:</p><pre class="urvanov-syntax-highlighter-plain-tag">[Errno 13] Permission denied: '/var/log/auth.log'</pre><p></p>
<p>Bene, per ovviare al problema basta far in modo che l&#8217;utente che esegue fail2ban possa accedere al suddetto file di log.</p>
<p>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2014/07/22/fail2ban-comm-warning-invalid-command/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>fail2ban e blocco permanente dopo n tentativi</title>
		<link>https://blog.smsoft.it/2012/12/04/fail2ban-e-blocco-permanente-dopo-n-tentativi/</link>
					<comments>https://blog.smsoft.it/2012/12/04/fail2ban-e-blocco-permanente-dopo-n-tentativi/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 04 Dec 2012 09:40:55 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[fail2ban]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=2129</guid>

					<description><![CDATA[Di fail2ban ho già parlato diverse volte: è un software che effettua un controllo nei vari log di sistema e se rileva qualche anomalia (es tentativi di accesso ssh non autorizzati), provvede a bloccare l&#8217;IP sorgente. Di default, fail2ban, blocca temporaneamente l&#8217;IP sorgente ed il tempo può essere modificato con la direttiva bantime nel file ... <a title="fail2ban e blocco permanente dopo n tentativi" class="read-more" href="https://blog.smsoft.it/2012/12/04/fail2ban-e-blocco-permanente-dopo-n-tentativi/" aria-label="Per saperne di più su fail2ban e blocco permanente dopo n tentativi">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Di fail2ban ho già parlato diverse volte: è un software che effettua un controllo nei vari log di sistema e se rileva qualche anomalia (es tentativi di accesso ssh non autorizzati), provvede a bloccare l&#8217;IP sorgente.</p>
<p>Di default, fail2ban, blocca temporaneamente l&#8217;IP sorgente ed il tempo può essere modificato con la direttiva <strong>bantime</strong> nel file <strong>/etc/fail2ban/jail.conf</strong>.<br /><span id="more-2129"></span><br />Facendo qualche controllo in questi giorni, mi sono accorto che ci sono IP che effettuano continui tentativi di accesso e che riprendono a fare tentativi, dopo averli sbloccati (ovvero dopo che il <strong>bantime</strong> è trascorso).</p>
<p>Ho pensato che sarebbe utile un sistema che provvede a bloccare in modo definitivo un IP che persevera nei tentativi di accesso abusivo. Fail2ban può fare questo per noi, se lo configuriamo opportunamente. L&#8217;idea di base è quella di creare un controllo del file di log di fail2ban /var/log/fail2ban.log e se viene riscontrato il blocco per più di una volta da un qualsiasi filtro attivo, allora viene avviato una nuova azione di blocco definitivo. Vediamo come fare.</p>
<p>Nel file di configurazione <strong>/etc/fail2ban/jail.conf</strong> aggiungiamo:</p>
<pre class="urvanov-syntax-highlighter-plain-tag">[fail2ban]
enabled = true
filter = fail2ban
action = iptables[name=fail2ban]
logpath = /var/log/fail2ban.log
maxretry = 3
# findtime: 1 day
findtime = 86400
# bantime: es 31536000 for 1 year or negative number for permanent block
bantime = -1</pre>
<p>poi creiamo il filtro in <strong>/etc/fail2ban/filter.d/fail2ban.conf</strong> :</p>
<pre class="urvanov-syntax-highlighter-plain-tag"># Fail2Ban configuration file for persistent block
#
# Author: Antonello Alonzi
#
# $Revision: 
#

[Definition]

# Count all bans in the logfile
failregex = fail2ban.actions: WARNING \[(.*)\] Ban &lt;HOST&gt;

# Ignore our own bans, to keep our counts exact.
# In your config, name your jail 'fail2ban', or change this line!
ignoreregex = fail2ban.actions: WARNING \[fail2ban\] Ban &lt;HOST&gt;</pre>
<p>Bene, ora riavviamo fail2ban e dopo 3 blocchi di un IP, verrà attivato il blocco permanente.</p>
<p>Quanto fatto, potrebbe andar bene, ma se dovessimo riavviare fail2ban, gli IP bloccati anche in modo permanente, verrebbero sbloccati. Poco male, perché non credo fail2ban venga riavviato ogni giorno e comunque appena vengono identificati nuovamente blocchi ripetuti, si riattiva il meccanismo di blocco permanente. Per quanto mi riguarda, utilizzando apf-firewall, ho pensato di gestire il blocco permanente con un&#8217;azione specifica, in modo che l&#8217;IP venga memorizzato da apf e quindi gestito autonomamente da quest&#8217;ultimo.</p>
<p>Se volete usare questa soluzione, basterà creare un nuova azione di fail2ban, partendo da quella di shorewall:</p>
<pre class="urvanov-syntax-highlighter-plain-tag">cp /etc/fail2ban/action.d/shorewall.conf /etc/fail2ban/action.d/apf.conf</pre>
<p>e poi modificando le righe di <strong>actionban</strong> ed <strong>actionunban</strong> in <strong>/etc/fail2ban/action.d/apf.conf</strong> come segue:</p>
<pre class="urvanov-syntax-highlighter-plain-tag">actionban = apf --deny</pre>
<pre class="urvanov-syntax-highlighter-plain-tag">actionunban = apf --remove</pre>
<p>Infine andrà modificata l&#8217;action della regola fail2ban in <strong>/etc/fail2ban/jail.conf</strong> da:</p>
<pre class="urvanov-syntax-highlighter-plain-tag">action = iptables[name=fail2ban]</pre>
<p>a</p>
<pre class="urvanov-syntax-highlighter-plain-tag">action = apf[name=fail2ban]</pre>
<h2>Varie:</h2>
<p>Per<strong> testare il funzionamento di un filtro</strong>, ad esempio il filtro fail2ban creato prima, basta digitare:</p>
<pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf</pre>


<p class="wp-block-paragraph">Se si vuole testare sia la regexp che l&#8217;ignore filter, va ripetuto due volte il nome del file con il filtro, es:</p>



<pre class="wp-block-preformatted">fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf /etc/fail2ban/filter.d/fail2ban.conf</pre>



<p class="wp-block-paragraph">Per vedere i dettagli delle righe rilevate, bisogna aggiungere il parametro <strong>-v</strong>, es:</p>



<pre class="wp-block-preformatted">fail2ban-regex -v /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf</pre>



<p class="wp-block-paragraph">Per vedere invece l&#8217;elenco delle righe trovate si usa <strong>&#8211;print-all-matched</strong>:</p>



<pre id="block-fe5a9fbd-6776-450f-83f8-902fa847da11" class="wp-block-preformatted">fail2ban-regex --print-all-matched /var/log/fail2ban.log /etc/fail2ban/filter.d/fail2ban.conf</pre>



<p class="wp-block-paragraph">Per verificare i filtri attivi:</p>



<pre class="wp-block-preformatted">fail2ban-client status</pre>



<p class="wp-block-paragraph"><br>Per controllare gli IP bloccati da un determintato filtro:</p>



<pre class="wp-block-preformatted">fail2ban-client status fail2ban</pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2012/12/04/fail2ban-e-blocco-permanente-dopo-n-tentativi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>fail2ban e mod-security</title>
		<link>https://blog.smsoft.it/2012/11/27/fail2ban-e-mod-security/</link>
					<comments>https://blog.smsoft.it/2012/11/27/fail2ban-e-mod-security/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 27 Nov 2012 09:29:02 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[mod-security]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=2122</guid>

					<description><![CDATA[Sicuramente conoscerete fail2ban (ho già scritto diversi articoli) ed anche mod-security. Il primo effettua controlli periodici nei files di log alla ricerca di particolari messaggi, es errori ripetuti di accesso ssh, e provvede a bloccare l&#8217;IP sorgente creando una regola in iptables. Il secondo invece è un modulo per apache che controlla le richieste fatte ... <a title="fail2ban e mod-security" class="read-more" href="https://blog.smsoft.it/2012/11/27/fail2ban-e-mod-security/" aria-label="Per saperne di più su fail2ban e mod-security">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Sicuramente conoscerete fail2ban (ho già scritto diversi articoli) ed anche mod-security. Il primo effettua controlli periodici nei files di log alla ricerca di particolari messaggi, es errori ripetuti di accesso ssh, e provvede a bloccare l&#8217;IP sorgente creando una regola in iptables. Il secondo invece è un modulo per apache che controlla le richieste fatte al server web alla ricerca di tentativi di intrusione, sql injections, etc.<br />
Normalmente accade che mod-security provvede a scrivere nel file di log i tentativi di exploit, solo che i tentativi potrebbero continuare all&#8217;infinito, finché manualmente non si vanno a controllare i file di log. Potrebbe quindi tornare utile una nuova regola per fail2ban in modo da controllare anche il file di log di mod-security e bloccare gli IP relative alle richieste anomale verso il server web.<br />
<span id="more-2122"></span><br />
Partiamo da una configurazione funzionante di mod-security e fail2ban e vediamo come configurare i due per funzionare insieme.<br />
In mod-security l&#8217;unica cosa da fare è commentare nel file <strong>/etc/apache2/mod-security/modsecurity_crs_10_config.conf</strong>  la direttiva :</p><pre class="urvanov-syntax-highlighter-plain-tag">#SecAuditLogRelevantStatus "^(?:5|4(?!04))"</pre><p></p>
<p>Creiamo un nuovo filtro per fail2ban, scrivendo nel file <strong>/etc/fail2ban/filter.d/mod_sec.conf</strong>:</p><pre class="urvanov-syntax-highlighter-plain-tag"># Fail2Ban configuration file for mod_security

[Definition]
failregex = \[.*?\]\s[\w-]*\s<HOST>\s
ignoreregex =</pre><p></p>
<p>Attiviamo il filtro in <strong>/etc/fail2ban/jail.conf</strong>:</p><pre class="urvanov-syntax-highlighter-plain-tag">[mod_sec]
enabled  = true
filter   = mod_sec
action   = iptables-multiport[name=ModSec, port="http,https"]
#           sendmail-buffered[name=ModSec, lines=5, dest=you@mail.com]
simple-log[name=modsec]
logpath  = /var/log/apache2/modsec_audit.log
#bantime  = 172800
maxretry = 3</pre><p> </p>
<p>Bene, ora possiamo riavviare apache e fail2ban ed i tentativi di richieste anomale al server web verranno bloccati.</p>
<p>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2012/11/27/fail2ban-e-mod-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
