灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2349回复:0

自动拒绝恶意IP远程登录Linux服务器脚本

楼主#
更多 发布于:2013-06-14 13:57
随着整个IT行业的发展,安全对于人们来说非常的重要,小到个人电脑,到IT企业大数据存储,大到整个互联网安全,其实要做好安全,不能光看整体,有时候细节才是最重要的,相对而言,个人电脑的安全,需要我们从多方面来防御,例如使用目前权威主流的360杀毒软件,然后结合自己上网的习惯,不要打开来历不明的东西等等。
  
 
那对于服务器级别的安全,我们该如何来做呢,首先是服务器本身处在的机房环境安全,人为操作安全,以及操作系统方面的安全,禁止不必要的端口和服务、配置服务器自身防火墙,例如iptables,除了这些,服务器就安全了吗,就算我们做到这些,也只是相对的安全。安全是要靠长期和点滴来保证。
 
 
 
说了那么多,呵呵,那我们今天要讨论的是什么呢?今天我们一起来研究一下Linux下如何拒绝恶意IP的攻击,当然这里有很多种方法,我们今天使用脚本来实现。有部分服务器由于业务的需求,配置了外网IP,允许22端口对外访问,(当然我们这里是来讨论这种情况的初步解决方法,我们也可以使用VPN、密钥登录等方式来排除这种直接对外登录的情况发生)
 
 
 
当我们已经配置了iptables防火墙,我们允许22端口对外网所有人访问,当然这也是为了方便,我们在任何地方都连接上,没有做VPN,也没有做ssh密钥验证,但是我们的密码设置得非常复杂,大小写、特殊符、数字 32位,连自己都记不住,就别人扫描没有3-5年是无法攻破的 哈哈。所以每天看/var/log/secure文件里面,全部是恶意攻击的ip,那怎么拒绝这些ip下次再攻击,或者怎么让这些IP尝试3-4次就拒绝访问22端口了,看代码如下:
 
 
 
 1.           #!/bin/sh  
 
 2.           #auto drop ssh failed IP address  
 
 3.           #wugk 2013-1-2  
 
 4.           #定义变量  
 
 5.           SEC_FILE=/var/log/secure
 
 6.           #如下为截取secure文件恶意ip 远程登录22端口,大于等于4次就写入防火墙,禁止以后再登录服务器的22端口  
 
 7.           IP_ADDR=`tail -n 1000 /var/log/secure |grep "Failed password"|awk '{print $11}'|grep "." |sort |uniq -c |sort -nr|awk ' $1>=4 {print $2}'`  
 
 8.           IPTABLE_CONF=/etc/sysconfig/iptables  
 
 9.           echo  
 
 10.       cat <<EOF  
 
 11.       ++++++++++++++welcome to use ssh login drop failed ip+++++++++++++++++  
 
 12.       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
 
 13.       ++++++++++++++++------------------------------------++++++++++++++++++  
 
 14.       EOF  
 
 15.       #打印动态滚动条,参照老男孩博客-数组分析文章  
 
 16.       echo -n "请等待5秒后开始执行 "  
 
 17.       for ((j=0;j<=4;j++)) ;do echo -n "----------";sleep 1 ;done  
 
 18.       echo  
 
 19.        
 
 20.       for i in `echo $IP_ADDR`  
 
 21.        
 
 22.        
 
 23.       do  
 
 24.           #查看iptables配置文件是否含有提取的IP信息
 
 25.           cat $IPTABLE_CONF |grep $i >/dev/null  
 
 26.        
 
 27.       if  
 
 28.           [ $? -ne 0 ];then  
 
 29.           #判断iptables配置文件里面是否存在已拒绝的ip,如何不存在就不再添加相应条目
 
 30.           sed -i "/lo/a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dport 22 -j DROP" $IPTABLE_CONF  
 
 31.       else  
 
 32.           #如何存在的话,就打印提示信息即可
 
 33.           echo  "This is $i is exist in iptables,please exit ......"  
 
 34.        
 
 35.       fi  
 
 36.        
 
 37.       done
 
 38.        
 
 39.       #最后重启iptables生效
 
 40.       /etc/init.d/iptables restart
 
如上脚本编写完毕,如何实现自动添加恶意IP呢,执行如下命令,添加到crontab即可,实现每5分钟自动执行该脚本。
 
 
 
 1.           echo  "*/5 * * * *  /bin/sh /data/sh/auto_deny_Login.sh >>/data/logs/login/login.log 2>&1" >>/var/spool/cron/root  
 
过几天观察,我们会发现IPTABLES配置文件里面发生了如下变化:截图如下,全部是恶意攻击的IP:
 
 
 
自动拒绝恶意IP远程登录Linux服务器脚本
 

 

以上方法仅供参考,根据自己的实际情况修改

喜欢0 评分0
游客

返回顶部