Difference between revisions of "Fail2ban Vuurmuur"

From MS Computech
Jump to: navigation, search
 
Line 3: Line 3:
 
nano /etc/fail2ban/action.d/vuurmuur.conf</pre>
 
nano /etc/fail2ban/action.d/vuurmuur.conf</pre>
 
<pre>
 
<pre>
#Fail2Ban configuration file
+
# Author: Nick Shobe
 
#
 
#
 +
 +
[Definition]
 +
 +
# Option:  actionstart
 +
# Notes.:  command executed once at the start of Fail2Ban.
 +
# Values:  CMD
 
#
 
#
 
+
# Create a zone in vuurmuur called fail2ban... this script will add the "<name>" network and all the hosts... you can use a custom rule in vuurmuur to block ports by network
[Definition]
+
# You can make multiple rules that block specific ports if you don't want to globally block an ip... Do this like any customized rules.
 
+
actionstart = vuurmuur_script --create --network <name>.fail2ban
#Option:  actionban
+
      vuurmuur_script --modify --network <name>.fail2ban --variable ACTIVE --set Yes
#Notes.:  command executed when banning an IP. Take care that the
+
      vuurmuur_script --modify --network <name>.fail2ban --variable NETWORK --set 0.0.0.0
 +
      vuurmuur_script --modify --network <name>.fail2ban --variable NETMASK --set 0.0.0.0
 +
      append=''
 +
      for int in `vuurmuur_script --list --interface all`; do vuurmuur_script --modify --network <name>.fail2ban $append --variable INTERFACE --set $int ; append='--append' ; done
 +
      vuurmuur_script --create --group <group>.<name>.fail2ban
 +
      vuurmuur_script --modify --group <group>.<name>.fail2ban --variable ACTIVE --set Yes
 +
 +
# Option:  actionstop
 +
# Notes.:  command executed once at the end of Fail2Ban
 +
# Values:  CMD
 +
#
 +
actionstop = for group in `vuurmuur_script --list --group <name>.fail2ban`; do vuurmuur_script --delete --group $group; done
 +
      for host in `vuurmuur_script --list --host <name>.fail2ban`; do vuurmuur_script --delete --host $host; done
 +
      vuurmuur_script --delete --network <name>.fail2ban
 +
      vuurmuur_script --create --network <name>.fail2ban
 +
              vuurmuur_script --modify --network <name>.fail2ban --variable ACTIVE --set Yes
 +
              vuurmuur_script --modify --network <name>.fail2ban --variable NETWORK --set 0.0.0.0
 +
              vuurmuur_script --modify --network <name>.fail2ban --variable NETMASK --set 0.0.0.0
 +
              append=''
 +
              for int in `vuurmuur_script --list --interface all`; do vuurmuur_script --modify --network <name>.fail2ban $append --variable INTERFACE --set $int ; append='--append' ; done
 +
      vuurmuur_script --create --group <group>.<name>.fail2ban
 +
              vuurmuur_script --modify --group <group>.<name>.fail2ban --variable ACTIVE --set Yes
 +
      vuurmuur_script --reload
 +
   
 +
# Option:  actioncheck
 +
# Notes.:  command executed once before each actionban command
 +
# Values:  CMD
 +
#
 +
actioncheck = vuurmuur_script --list --host <name>.fail2ban | tr '-' '.'
 +
 +
# Option:  actionban
 +
# Notes.:  command executed when banning an IP. Take care that the
 
#          command is executed with Fail2Ban user rights.
 
#          command is executed with Fail2Ban user rights.
#Tags:    <ip>  IP address
+
# Tags:    <ip>  IP address
 
#          <failures>  number of failures
 
#          <failures>  number of failures
 
#          <time>  unix timestamp of the ban time
 
#          <time>  unix timestamp of the ban time
#Values:  CMD
+
# Values:  CMD
 
#
 
#
actionban = vuurmuur_script --block <ip> --apply
+
actionban =     vuurmuur_script --create --host `echo <ip> | tr '.' "-"`.<name>.fail2ban
 
+
      vuurmuur_script --modify --host `echo <ip> | tr '.' "-"`.<name>.fail2ban --variable IPADDRESS --set <ip>
#Option:  actionunban
+
      vuurmuur_script --modify --host `echo <ip> | tr '.' "-"`.<name>.fail2ban --variable ACTIVE --set Yes
#Notes.:  command executed when unbanning an IP. Take care that the
+
      append=''
 +
      for x in `vuurmuur_script --print --group <name>.fail2ban --variable MEMBER`; do append='--append'; done
 +
      vuurmuur_script --modify --apply --group <group>.<name>.fail2ban $append --variable MEMBER --set `echo <ip> | tr '.' '-'`
 +
      vuurmuur_script --reload
 +
 +
# Option:  actionunban
 +
# Notes.:  command executed when unbanning an IP. Take care that the
 
#          command is executed with Fail2Ban user rights.
 
#          command is executed with Fail2Ban user rights.
#Tags:    <ip>  IP address
+
# Tags:    <ip>  IP address
 
#          <failures>  number of failures
 
#          <failures>  number of failures
 
#          <time>  unix timestamp of the ban time
 
#          <time>  unix timestamp of the ban time
#Values:  CMD
+
# Values:  CMD
 +
#
 +
# If you want to keep known bad ip's around for review and moving to a perm ban list... use "--modify --variable ACTIVE --set No" instead of --delete You may need to change the way hosts are added to account for repeats.
 +
# this script prints all of the current group members, deletes and recreates the group... without the member to be removed.
 +
actionunban =    vuurmuur_script --delete --host `echo <ip> | tr '.' "-"`.<name>.fail2ban
 +
              append='d'
 +
              for member in `vuurmuur_script --print --group <group>.<name>.fail2ban --variable MEMBER`;
 +
              do if [ $append != '--append' ];then
 +
                      vuurmuur_script --delete --group <group>.<name>.fail2ban;
 +
                      vuurmuur_script --create --group <group>.<name>.fail2ban;
 +
                      vuurmuur_script --modify --group <group>.<name>.fail2ban --variable ACTIVE --set Yes;
 +
              fi;
 +
              tmp=`echo $member|grep -E -o "[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}"`;
 +
              if [ -z "$tmp" ]
 +
              then
 +
                      tmp='d';
 +
              fi
 +
              if [ $tmp != `echo <ip> | tr '.' "-"` ];
 +
                      then vuurmuur_script --modify --group <group>.<name>.fail2ban $append --variable MEMBER --set $member;
 +
              fi;
 +
              if [ $append != '--append' ];
 +
              then append='--append';
 +
              fi;
 +
              done
 +
              vuurmuur_script --reload
 +
 +
[Init]
 +
 +
# Defaut name of the chain
 
#
 
#
actionunban = vuurmuur_script --unblock <ip> --apply
+
name = block
</pre>
+
The parameter –apply makes the rule active and reloads vuurmuurs configuration. Open /etc/fail2ban/jail.conf in your favorite editor and search the option banaction and change it as follows:
+
group = blockedhosts
<pre>nano /etc/fail2ban/jail.conf
 
banaction = vuurmuur
 
 
</pre>
 
</pre>
 
[http://wiki.goatpr0n.de/blog/2009/03/07.vuurmuur.and.fail2ban source]
 
[http://wiki.goatpr0n.de/blog/2009/03/07.vuurmuur.and.fail2ban source]

Latest revision as of 10:25, 28 February 2017

Fail2ban + Vuurmuur

apt-get install fail2ban
nano /etc/fail2ban/action.d/vuurmuur.conf
# Author: Nick Shobe
#
 
[Definition]
 
# Option:  actionstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
#
# Create a zone in vuurmuur called fail2ban... this script will add the "<name>" network and all the hosts... you can use a custom rule in vuurmuur to block ports by network
# You can make multiple rules that block specific ports if you don't want to globally block an ip... Do this like any customized rules.
actionstart = vuurmuur_script --create --network <name>.fail2ban
       vuurmuur_script --modify --network <name>.fail2ban --variable ACTIVE --set Yes
       vuurmuur_script --modify --network <name>.fail2ban --variable NETWORK --set 0.0.0.0
       vuurmuur_script --modify --network <name>.fail2ban --variable NETMASK --set 0.0.0.0
       append=''
       for int in `vuurmuur_script --list --interface all`; do vuurmuur_script --modify --network <name>.fail2ban $append --variable INTERFACE --set $int ; append='--append' ; done
       vuurmuur_script --create --group <group>.<name>.fail2ban
       vuurmuur_script --modify --group <group>.<name>.fail2ban --variable ACTIVE --set Yes
 
# Option:  actionstop
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
#
actionstop = for group in `vuurmuur_script --list --group <name>.fail2ban`; do vuurmuur_script --delete --group $group; done
       for host in `vuurmuur_script --list --host <name>.fail2ban`; do vuurmuur_script --delete --host $host; done
       vuurmuur_script --delete --network <name>.fail2ban
       vuurmuur_script --create --network <name>.fail2ban
               vuurmuur_script --modify --network <name>.fail2ban --variable ACTIVE --set Yes
               vuurmuur_script --modify --network <name>.fail2ban --variable NETWORK --set 0.0.0.0
               vuurmuur_script --modify --network <name>.fail2ban --variable NETMASK --set 0.0.0.0
               append=''
               for int in `vuurmuur_script --list --interface all`; do vuurmuur_script --modify --network <name>.fail2ban $append --variable INTERFACE --set $int ; append='--append' ; done
       vuurmuur_script --create --group <group>.<name>.fail2ban
               vuurmuur_script --modify --group <group>.<name>.fail2ban --variable ACTIVE --set Yes
       vuurmuur_script --reload
     
# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
actioncheck = vuurmuur_script --list --host <name>.fail2ban | tr '-' '.'
 
# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
actionban =     vuurmuur_script --create --host `echo <ip> | tr '.' "-"`.<name>.fail2ban
       vuurmuur_script --modify --host `echo <ip> | tr '.' "-"`.<name>.fail2ban --variable IPADDRESS --set <ip>
       vuurmuur_script --modify --host `echo <ip> | tr '.' "-"`.<name>.fail2ban --variable ACTIVE --set Yes
       append=''
       for x in `vuurmuur_script --print --group <name>.fail2ban --variable MEMBER`; do append='--append'; done
       vuurmuur_script --modify --apply --group <group>.<name>.fail2ban $append --variable MEMBER --set `echo <ip> | tr '.' '-'`
       vuurmuur_script --reload
 
# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
# If you want to keep known bad ip's around for review and moving to a perm ban list... use "--modify --variable ACTIVE --set No" instead of --delete You may need to change the way hosts are added to account for repeats.
# this script prints all of the current group members, deletes and recreates the group... without the member to be removed.
actionunban =     vuurmuur_script --delete --host `echo <ip> | tr '.' "-"`.<name>.fail2ban
               append='d'
               for member in `vuurmuur_script --print --group <group>.<name>.fail2ban --variable MEMBER`;
               do if [ $append != '--append' ];then
                       vuurmuur_script --delete --group <group>.<name>.fail2ban;
                       vuurmuur_script --create --group <group>.<name>.fail2ban;
                       vuurmuur_script --modify --group <group>.<name>.fail2ban --variable ACTIVE --set Yes;
               fi;
               tmp=`echo $member|grep -E -o "[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}"`;
               if [ -z "$tmp" ]
               then
                       tmp='d';
               fi
               if [ $tmp != `echo <ip> | tr '.' "-"` ];
                       then vuurmuur_script --modify --group <group>.<name>.fail2ban $append --variable MEMBER --set $member;
               fi;
               if [ $append != '--append' ];
               then append='--append';
               fi;
               done
               vuurmuur_script --reload
 
[Init]
 
# Defaut name of the chain
#
name = block
 
group = blockedhosts

source