<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.virusstyle.synology.me/index.php?action=history&amp;feed=atom&amp;title=Ubuntu%2FConfigure_Fail2Ban_for_permanent_and_persistent_bans</id>
	<title>Ubuntu/Configure Fail2Ban for permanent and persistent bans - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.virusstyle.synology.me/index.php?action=history&amp;feed=atom&amp;title=Ubuntu%2FConfigure_Fail2Ban_for_permanent_and_persistent_bans"/>
	<link rel="alternate" type="text/html" href="https://wiki.virusstyle.synology.me/index.php?title=Ubuntu/Configure_Fail2Ban_for_permanent_and_persistent_bans&amp;action=history"/>
	<updated>2026-04-21T12:39:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.virusstyle.synology.me/index.php?title=Ubuntu/Configure_Fail2Ban_for_permanent_and_persistent_bans&amp;diff=97&amp;oldid=prev</id>
		<title>Kaspars: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.virusstyle.synology.me/index.php?title=Ubuntu/Configure_Fail2Ban_for_permanent_and_persistent_bans&amp;diff=97&amp;oldid=prev"/>
		<updated>2026-04-16T08:41:33Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:41, 16 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff:1.41:old-96:rev-97 --&gt;
&lt;/table&gt;</summary>
		<author><name>Kaspars</name></author>
	</entry>
	<entry>
		<id>https://wiki.virusstyle.synology.me/index.php?title=Ubuntu/Configure_Fail2Ban_for_permanent_and_persistent_bans&amp;diff=96&amp;oldid=prev</id>
		<title>Kaspars: Jauna lapa: &lt;div class=&quot;mw-parser-output&quot;&gt;&amp;nbsp;&lt;/div&gt; &lt;div class=&quot;mw-parser-output&quot;&gt; = Configure permanent bans =  ----  This is the easiest part. Ban time can be set either globally (ie: for al...</title>
		<link rel="alternate" type="text/html" href="https://wiki.virusstyle.synology.me/index.php?title=Ubuntu/Configure_Fail2Ban_for_permanent_and_persistent_bans&amp;diff=96&amp;oldid=prev"/>
		<updated>2018-09-20T06:19:38Z</updated>

		<summary type="html">&lt;p&gt;Jauna lapa: &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt; = Configure permanent bans =  ----  This is the easiest part. Ban time can be set either globally (ie: for al...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
= Configure permanent bans =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This is the easiest part. Ban time can be set either globally (ie: for all jails), or per jail. It is controlled through the ‘bantime‘ parameter which defines the number of seconds an IP is banned.&lt;br /&gt;
&lt;br /&gt;
To set a permanent ban, simply set the bantime parameter to a value of&amp;amp;nbsp;-1. Edit the&amp;amp;nbsp;jail.conf&amp;amp;nbsp;file, comment out the existing ‘bantime’ line, and set a new bantime to&amp;amp;nbsp;-1&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# &amp;quot;bantime&amp;quot; is the number of seconds that a host is banned.&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# bantime&amp;amp;nbsp; = 600&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Permanent ban&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;bantime = -1&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Configure persistent bans =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In order for bans to persist across a service restart, they obviously have to be saved somewhere. No fancy database required, a simple text file will do the trick.&lt;br /&gt;
&lt;br /&gt;
The principle is simple: every time Fail2Ban sets a new ban on an IP, we’ll save the information «&amp;amp;nbsp;jail name and IP address&amp;amp;nbsp;» in a file along the way. Next, upon each Fail2Ban service start, we’ll load this file a re-create the corresponding bans. All it takes is two lines in the right configuration file.&lt;br /&gt;
&lt;br /&gt;
Each ban action is defined in a corresponding configuration file. Within this file, there’s two parameters we’re interested in:&lt;br /&gt;
&lt;br /&gt;
#actionstart&amp;amp;nbsp;: here we can define a list of commands that will be executed only once at the start of Fail2Ban. So we’ll add a custom command loading the file&amp;amp;nbsp;/etc/fail2ban/persistent.bans&amp;amp;nbsp;and re-create the corresponding iptables entries. &lt;br /&gt;
#actionban&amp;amp;nbsp;: here we can defined a list of commands that will be executed when banning an IP. So we’ll add a custom command to save the useful information to the file /etc/fail2ban/persistent.bans. &lt;br /&gt;
&lt;br /&gt;
The default action in Fail2Ban is iptables-multiport (as defined in the file jail.conf), so we have to edit the&amp;amp;nbsp;action.d/iptables-multiport.conffile and add the following highlighted lines:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;[Definition]&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Option:&amp;amp;nbsp; actionstart&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Notes.:&amp;amp;nbsp; command executed once at the start of Fail2Ban.&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Values:&amp;amp;nbsp; CMD&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;actionstart = iptables -N fail2ban-&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;iptables -A fail2ban-&amp;lt;name&amp;gt; -j RETURN&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;iptables -I &amp;lt;chain&amp;gt; -p &amp;lt;protocol&amp;gt; -m multiport --dports &amp;lt;port&amp;gt; -j fail2ban-&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span style=&amp;quot;background-color:#FFFF00;&amp;quot;&amp;gt;cat /etc/fail2ban/persistent.bans | awk &amp;#039;/^fail2ban-&amp;lt;name&amp;gt;/ {print $2}&amp;#039; \&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span style=&amp;quot;background-color:#FFFF00;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span style=&amp;quot;background-color:#FFFF00;&amp;quot;&amp;gt;| while read IP; do iptables -I fail2ban-&amp;lt;name&amp;gt; 1 -s $IP -j &amp;lt;blocktype&amp;gt;; done&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Option:&amp;amp;nbsp; actionstop&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Notes.:&amp;amp;nbsp; command executed once at the end of Fail2Ban&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Values:&amp;amp;nbsp; CMD&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;actionstop = iptables -D &amp;lt;chain&amp;gt; -p &amp;lt;protocol&amp;gt; -m multiport --dports &amp;lt;port&amp;gt; -j fail2ban-&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;iptables -F fail2ban-&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;iptables -X fail2ban-&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Option:&amp;amp;nbsp; actioncheck&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Notes.:&amp;amp;nbsp; command executed once before each actionban command&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Values:&amp;amp;nbsp; CMD&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;actioncheck = iptables -n -L &amp;lt;chain&amp;gt; | grep -q &amp;#039;fail2ban-&amp;lt;name&amp;gt;[ \t]&amp;#039;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Option:&amp;amp;nbsp; actionban&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Notes.:&amp;amp;nbsp; command executed when banning an IP. Take care that the&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;#&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; command is executed with Fail2Ban user rights.&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Tags:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; See jail.conf(5) man page&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;# Values:&amp;amp;nbsp; CMD&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;actionban = iptables -I fail2ban-&amp;lt;name&amp;gt; 1 -s &amp;lt;ip&amp;gt; -j &amp;lt;blocktype&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span style=&amp;quot;background-color:#FFFF00;&amp;quot;&amp;gt;echo &amp;quot;fail2ban-&amp;lt;name&amp;gt; &amp;lt;ip&amp;gt;&amp;quot; &amp;gt;&amp;gt; /etc/fail2ban/persistent.bans&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Once done, it is required to restart Fail2Ban in order for those change to be applied.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eee;border:1px solid #ccc;padding:5px 10px;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;service fail2ban restart&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kaspars</name></author>
	</entry>
</feed>