This is my second post on the above subject. I have now started using ipsets to handle blocking of ip addresses at my firewalls. For the purposes of this post, the ipsets will be call F2BLIST for ipv4 and F2BLIST6 for ipv6 address. In the shorewall init file, place the following code:

ipset create F2BLIST hash:ip timeout 300 -exist

This creates an ipset with a default timeout of 300 seconds, and won’t throw an error if it already exists (if you happen to restart shorewall).

Next add a rule to the shorewall rules file like:

?SECTION ALL

DROP:info net:+F2BLIST all

Next, create a new action file under /etc/fail2ban/action.d/ called shorewall-ipset.conf

The beauty of the ipsets is that the kernel handles expiring the entry, so you don’t have to worry about fail2ban expirying an ip that is still supposed to be blocked in the recidive jail. If you issue the following command:

ipset list

it will show the ipset and all the entries in it with the corresponding seconds left for each ip to expire.

I had been happily using HE’s tunnel broker to gain access to the IPv6 internet for some time. A side effect of this was that I would quite often get the US version of the Netflix catalogue. Back in June of 2016, Netflix started actively blocking HE’s subnets because of people using them explicitly to avoid their geo blocking. Consequently, I would get an error when trying to watch Netflix. The solution I had been using was to reject all IPv6 traffic at the firewall for any device that I used to access Netflix. It bothered me to essentially turn off IPv6 for those devices, and I recently found a better solution. I use unbound as my recursive dns resolver, and I found by adding the following code to its configuration file, Netflix has been working without rejecting the IPv6 traffic.

Essentially, any request for AAAA records returns localhost, but all other records are resolved normally. I created the list by checking the unbound log file while devices were trying to access Netflix. If I find any more hostnames to redirect, I will add them to the list.

A quick little note about turning off the internet at a certain time. If you can assign all your kids devices IP addresses in a certain range, then you can easily cut them off the network at a given time with an addition to the shorewall rules file

With the help of squirrel logger I now have Fail2Ban banning IPs from attempted logins of my webmail interface. Configuring squirrel logger was a breeze. I simple send it to syslog, where it is picked up by my mail.info log. I created my own squirrelmail.conf for fail2ban which is below.

I noticed some unusual activity on my webserver recently, and tracked it down to brute force attempts on wordpress installs. I did a little searching and found wp-fail2ban. Without too much tweaking of rsyslog, I got the auth messages to my firewall, where I set about getting fail2ban to monitor for login attempts. I was using the supplied wordpress.conf file that came with the plugin, but it was failing to match the regex due to the 32 character limitation of the syslog tag. Essentially a tag that should be of the form

wordpress(www.example.com)[12345]

would sometimes be truncated to

wordpress(www.longdomainname.com

This would cause a failure of the regex. So if you have long domain names, you may need to modify the wordpress.conf. In my case, I just removed

I have been using Fail2Ban with Shorewall to block brute force attempts against open ports. I noticed that during a recent attack, the attackers were being repeatedly banned, so I decided to turn on the Recidive Jail. Unfortunately, it doesn’t work with the shorewall action – in a nut shell, the short term jail that finally triggers the recidive jail releases the IP even though the recidive jail believes it is still banned. I got around the problem by adding a new action ‘shorewall-recid’ and creating a few short scripts. Essentially, if the recidive jail is triggered, the scripts make sure the ip is unbanned from all other jails before it is banned with the recidive one. If you are interested in the scripts, just let me know.