脚本实现恶意IP登录访问写入iptables

原创 浪子丶刘少  2019-06-14 09:30  阅读 1,726 次 评论 2 条 百度已收录

在我们的环境中,尤其是暴露在公网下的IP,每天都会有大量的IP尝试通过22号端口登入服务器,对于我们运维人员来说在复杂的密码也有可能被破解,所以我实现的办法是,将登入错误四次及以上的IP写入iptables规则,禁止端口访问,当然也有其他办法,如修改ssh服务访问密码等,具体可查看《Linux操作系统安全加固(安全合规性检查和配置)

下面分享shell脚本实现

#!/bin/bash

#定义日志文件
SEC_FILR=/var/log/secure

#截取secure文件恶意IP远程登录ssh链接端口,大于等于4次即写入防火墙,禁止登陆访问。
#egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"是匹配IP的含义
#[0-9]表示任意一个数,{1,3}表示匹配1~3次
IP_ADDR=`tail -n 1000 /var/log/secure | grep "Failed password" | \
egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort -nr | \
uniq -c | awk ' $1>=4 {print $2} '`

IPTABLE_COMF=/etc/sysconfig/iptables
cat << EOF
------------------------------------------------------------------------
++++++++++++++++welcome to use ssh login drop failed ip ++++++++++++++++
------------------------------------------------------------------------
EOF

for i in `echo $IP_ADDR`
do
    #查看iptables配置文件是否含有提取的IP信息
    cat $IPTABLE_COMF | grep $i > /dev/null
if
    [ $? -ne 0 ];then
    #判断iptables配置文件内是否存在以拒绝的IP,如果不存在,即添加
    #sed a参数的意思是匹配之后加入行
    sed -i "/lo/a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dport 22 -j DROP" $IPTABLE_COMF
else
    #如果存在,打印提示信息
    echo  "This is $i is exist in iptables,please exit ..."
fi
done    

#最后重启iptables
/etc/init.d/iptables restart
本文地址:https://www.ezliushao.com/219.html
加入我们:请加入刘少技术博客交流群:扫描二维码刘少技术博客的QQ交流群 | 浪子丶刘少 QQ:1150110267(注:微信暂停添加好友)
版权声明:本文为原创文章,版权归 浪子丶刘少 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

  1. 里维斯社
    里维斯社 【新手】 @回复

    非常好,这个就解决了那些恶意登录的了

  2. 弥雅
    弥雅 【筑基】 @回复

    收藏了,相信不少人会用到的!