脚本禁止登录尝试

脚本禁止登录尝试

需求

有ip不停的尝试登录,可以通过防火墙进行屏蔽

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cat /var/log/secure |grep failure|awk '{for (i=1;i<=NF;i++){if ($i ~/rhost/) {print $i}}}'| sort | uniq|awk -F"=" '{print $2}' >> black.list

cat black.list|sort|uniq > black.list.tmp
rm -rf black.list
mv black.list.tmp black.list

firewall-cmd --list-rich-rules > blackiprule.list
all=`cat blackiprule.list`

for ip in `cat black.list|sort|uniq`
do
if [[ $all =~ $ip ]]
then
:
else
echo "不包含"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='$ip' reject"
fi
done

cat blackiprule.list|wc -l
firewall-cmd --reload

定期执行脚本即可

上面的脚本存在一个问题,如果机器上面拒绝的ip太多了话,这个防火墙的列表会非常的大,而下面的这个就没有这个问题,建议用下面的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@VM-4-7-centos ~]# cat blackdeny.sh
#! /bin/sh
cat /var/log/secure |grep failure|awk '{for (i=1;i<=NF;i++){if ($i ~/rhost/) {print $i}}}'| sort | uniq|awk -F"=" '{print $2}' >> /root/black.list

cat /root/black.list|sort|uniq > /root/black.list.tmp
rm -rf /root/black.list
mv /root/black.list.tmp /root/black.list

> /etc/hosts.deny
for ip in `cat black.list|sort|uniq`
do
echo ALL:$ip >> /etc/hosts.deny
done

cat black.list|wc -l