F2B inserts just about all rules at the top of whichever chain it is using. The exceptionis the RETURN rule at the end of each jail chain and this rule is redundant so I have removed it. RETURN is the default action of any custom chain.

I personally think f2b should be reloaded at the end of each firewall restart to guarantee that its rules are at or near the top on the INPUT chain. Things like IPS will insert above it but that does not matter.

Nick

On 30/09/2015 20:46, Harrison Johnson wrote:
Christian,
Iptables has several tables and each table can have several chains. When a packet hits the interface it is sent to one of the tables for example NAT for network address translation or FILTER for packet filtering. The filter table has the INPUT, FORWARD & OUTPUT chains predefined and these chains can have a default policy ACCEPT, DENY or DROP are the most common so when a packet gets to the end of a chain and it has not matched a rule the default policy is applied to the packet.
You or an application like Fail2ban  can define a new chain and and rules for that chain, but user defined rules can't have a default policy. When fail2ban starts it adds a new chain to the filter table and a new rule to the INPUT chain that "jumps" to the new chain. When it bans an IP it adds a new rule to the new chain to block packets from that IP, pretty straight forward stuff.

Where you put the new jump rule is very important, if you put it after a rule that allows the packet, then Iptables will never block that packet because it has already been processed. A packet is only processed for each chain.
if my rules set is:
    -A INPUT -j ACCEPT
    -A INPUT -j blacklist
and I add an IP to the blacklist with:
    -A blacklist -s 70.32.128.0/19 -j DROP

That packet will never be dropped because it matches the INPUT -j ACCEPT before we get to the -j blacklist rule.
But if my rule set is:
    -A INPUT -j blacklist
    -A INPUT -j ACCEPT
Then every packet will be checked by the blacklist chain, additionally if the last rule in the blacklist chain is -j RETURN then the second rule will also be checked, otherwise the packet falls off the end of the chain blacklist and the default policy for the INPUT chain is applied.

Now I don't know how Fail2ban decides which line to put the new jump rule in at. I would hazard a guess that during install it greps your rule set looking for something like ".*-j ACCEPT" and then writes the conf files in the action.d directory with the line "actionstart = iptables -I <chain> X -p <protocol> -j f2b-<name>" with X set to 1 less than the line number for the ACCEPT rule that it found, but that is just a guess on my part. It maybe that the action files are all set to insert the new rule at line number 9. But you can go into the action files and change the line number to match your rules. If other rules are added or removed and you don't adjust the insert position then when Fail2ban starts it will be putting the rule in the wrong place and may not be blocking the offender. I have also had an issue where sqlite was causing problems and Fail2ban just kept adding the jump rule. I think at one point before I disabled the database I had 17,000 lines in my rules. To make it easy for Fail2ban and to block bad packets as quickly as possible.  My first rule is "iptables -A INPUT -j blacklist", this is a list of ip's that I maintain myself then I changed the all the files in the /etc/fail2ban/action.d/ conf files to "iptales -I INPUT 2 -j f2b-<name>". This way all packets that I consider bad based on past behavior are dropped before they have a chance to sneak in. I hope this helps you out some.




------------------------------------------------------------------------------


_______________________________________________
Fail2ban-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fail2ban-users



------------------------------------------------------------------------------
_______________________________________________
Fail2ban-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fail2ban-users

Reply via email to