请教一个脚本?
#! /bin/bash
# 获取前 1 分钟内的 secure 记录,统计 ssh 认证失败的 IP 和其 失败次数
SCANNER=`grep "`date "+ %e %H:%M" -d "-1min"`" /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $1"="$2;}'`
for i in $SCANNER
do
# 取认证失败次数
NUM=`echo $i|awk -F= '{print $1}'`
# 取其 IP 地址
IP=`echo $i|awk -F= '{print $2}'`
# 若其在失败次数超过 5 次且之前没有被阻断过,那么添加一条策略将其阻断,并记录日志
if [ $NUM -gt 5 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]
then
iptables -I INPUT -s $IP -j DROP
echo "`date` $IP($NUM)" >> /var/log/scanner.log
fi
done
我想问一个下这个脚本具体怎样用?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
支持版主~~~~~~
学无止境
如果还继续让访问 ssh,那这个脚本还有什么意义呢?
在试一个东西之前,最好先明白他的功能,这是最起码的
什么呀,记录是记录了,根本就不让ssh连接了!!!!
在默认状态没有配置IPTABLE时,在第一次就会失败
[ 本帖最后由 lihangel 于 2007-1-17 01:00 编辑 ]
高手高手,我还没有到这个level。
学习ing
用crontab来实现并不好,你可以在脚本中主程序放入一个while的循环里,不断地读取/var/log/secure,然后放在rc.local里
搞定了,原来是用crontab命令.谢谢platinum的帮助。
谢谢LZ的回复,我真的很莱,可不可以说说具体的执行命令?
让这个脚本每分钟执行一次
没人理吗?要不要把这个脚本加到/etc/rc.d/rc.local里?我用ssh登录服务器并且故意输入错的密码,可是在/var/log/scanner.log找不到相关的内容耶.