从 Fail2Ban 更新硬件防火墙规则?

从 Fail2Ban 更新硬件防火墙规则?

我是一名系统管理员,我想知道是否可以使用脚本或理想情况下使用内置功能来更新由 fail2ban 生成的规则中的硬件防火墙禁止 IP 列表。我对 fail2ban 进行了一些研究,似乎如果我可以自动禁止硬件防火墙上的暴力攻击 IP,这将节省我相当多的时间。有没有人有这样做的经验?这是一个合理的想法吗?

编辑:防火墙是运行 ScreenOS 6.2 的 Juniper SSG20

答案1

这取决于您的防火墙支持什么以及它具有哪些接口来进行此类更新。有些防火墙具有用于配置上传的上传(tftp、http 等)接口,有些只有 Web 接口,有些有 API。如果您得到的防火墙只有 Web 接口,那么您就有点倒霉了。

答案2

这是我解决问题的方法并且成功了 :) 我将其设置为每 10 分钟运行一次的 cron。

#!/bin/sh
##This Script Requires expect to be installed!!
##Grab Logs and Filter Information
cat /var/log/fail2ban.log|grep -a "Ban"|grep -v "Unban">/tmp/banned.txt
##Move last line to file
tail -n 1 /tmp/banned.txt>/tmp/lastlogline.txt
##Extract the Date and IP of the Banned IPs
cat /tmp/lastlogline.txt | cut -c 1-10,61-72 --output-delimiter=':'> /tmp/filtered.txt
## Variable Assignment and Excessive Space Removal
cat /tmp/filtered.txt|cut -d: -f 1|sed 's/^[\t]*//;s/[\t]*$//'>/tmp/date.txt
cat /tmp/filtered.txt|cut -d: -f 2|sed 's/^[\t]*//;s/[\t]*$//'>/tmp/IP.txt
date=`cat /tmp/date.txt`
IP=`cat /tmp/IP.txt`
## Get User Name and Password from /[Passdir]
username=`cat /filepathto/passwords|cut -d: -f 1`
password=`cat /filepathto/passwords|cut -d: -f 2`
##Set Firewall IP as Variable
firewall="[IPofFirewallHere]"
namescheme="$date"_"$IP"
command1="set address untrust $namescheme $IP/32"
command2="set group address untrust Group_Banned_IPS add $namescheme"
##Firewall Conector and Rule Enforcer
VAR=$(expect -c "
spawn ssh $username@$firewall
expect \"password:\"
send \"$password\r\"
expect \"\\\\>\"
send \"$command1\r\n\"
expect \"\\\\>\"
send \"$command2\r\"
expect -re \"$username.*\"
send \"logout\"
")
echo "==============="
echo "$VAR"
## Clean up extra text files
rm /tmp/banned.txt /tmp/IP.txt /tmp/date.txt /tmp/filtered.txt /tmp/lastlogline.txt

相关内容