标签:
网上看到一篇安全方面的文章,常用的网站收藏无法收藏,于是放这里先。具体功能还未测试,请慎用。
下面是博客原文转载,感谢作者辛苦劳动:
服务器在互联网中,每天都有些没事儿干的人在你的机器端口扫来扫去,让管理员非常烦恼。本文描述一个方法,利用本文介绍的脚本结合iptables服务一并使用,用来防止公网计算机通过ssh进行用户口令暴力破解。目前稳重脚本已经在其他项目的实际运营环境中得到验证。
脚本内容:
#!/bin/bash # 防SSH密码暴力破解脚本 # 通过分析secure日志文件使用iptables拒绝恶意登入IP # by WangJun CaoYinSheng 2014.01.27 source /root/.bash_profile #脚本运行环境变量 FILE_DIR=/opt/security_tools #程序执行路径 LOG_FILE=/var/log/secure #日志路路径 SAVE_FILE=$FILE_DIR/belialIP #保存iptables拒绝IP文件名 SAVE_TEMP_FILE=${SAVE_FILE}.temp #临时保存拒绝IP文件名,比较用 IP_REPEAT=15; #允许尝试登入次数 #二次正则是考虑日志文件过大导致sort排序过慢的问题 ip=`cat $LOG_FILE | awk -F":" ‘{print $1":"$2":"$3":"$4""$7}‘ |sed -n -e ‘/.*Failed password.*/p‘ | sort | uniq -c | awk -v nnm=$IP_REPEAT ‘{if($1 > num) print $0;}‘ | sed -n -e ‘s/.*Failed password.*from[ ]\(.*\)[ ]port.*/\1/p‘| awk ‘{a[$0]++}END{for(i in a){print i}}‘`; backIFS=$IFS; IFS="\n"; if [ -e $SAVE_FILE ] then echo $ip > $SAVE_TEMP_FILE; differ=`comm -13 $SAVE_FILE $SAVE_TEMP_FILE`; tmp=`cat $SAVE_FILE`; echo -e $differ"\n"$tmp | uniq | sort > $SAVE_FILE; else differ=$ip; echo $ip > $SAVE_FILE; fi if [ ${differ} ] then IFS=$backIFS; ips=`echo $differ | tr "\n" ‘ ‘ | tr -s ‘ ‘`; for dip in $ips; do iptables -A INPUT -s $dip -j DROP done; fi
部署方法:
1、在/opt/security_tools目录下创建文件killer.sh,并将脚本内容粘贴到文件中;
2、运行killer脚本:
#sh -x ./killer.sh
找到root运行脚本的环境变量可能如下:
########输出内容 开始############ PATH=/usr/local/ImageMagick-6.8.8-2/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/root/bin ########输出内容 结束#############
#crontable -e
将上述环境变量粘贴到crontable的最顶端一行;
3、创建crontable计划
#crontable -e
在crontable配置文件中添加如下信息:
########添加内容 开始############ */10 * * * * /bin/sh /opt/security_tools/killer.sh & #每隔10分钟运行一次killer.sh脚本 01 22 * * 2,6 /bin/sh /opt/security_tools/killer.sh & #没周二周六晚上22点01分运行一次killer.sh脚本 * 22 * * 2,6 service iptables restart & #没周二周六晚上22点整运行一次iptables服务重启 ########添加内容 结束#############
4、测试
10分钟后查看iptables –list 观察是否已经有被干掉的地址。
标签:
原文地址:http://my.oschina.net/lxrm/blog/479913