Chinaunix首页 | 论坛 | 博客
  • 博客访问: 871575
  • 博文数量: 204
  • 博客积分: 2433
  • 博客等级: 大尉
  • 技术积分: 2205
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-05 13:32
文章分类

全部博文(204)

分类: LINUX

2016-11-04 18:07:34

目的如题,直接上代码:

#!/bin/bash
#this is for count and block the hack ip for ssh login
ip=`grep “Failed” /var/log/secure | awk ‘{print $(NF-3)}’ | sort | uniq -c | awk ‘{print $1″=”$2}’`
count=”10″
for i in $ip
do
number=`echo $i | awk -F “=” ‘{print $1}’`
blockip=`echo $i | awk -F “=” ‘{print $2}’`
echo “$number$blockip”
if [ $number -gt $count ];then
grep $blockip /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo “sshd:$blockip” >> /etc/host.deny
fi
fi
done

脚本思路如下:

由于/var/log/secure是以星期为轮询的,所以我们每次可以查看这个文件,利用SHELL脚本统计出其中访问失败比较频繁的IP,并定义一个阀值为10,如果大于10的话就将其放进/etc/hosts.deny文件,阻止其继续访问ssh;然后将其写进crontab计划列表里,每隔一段时间进行一次排查,如果下次排查的某IP次数又大于10,首先检查它在不在我们的黑名单,如果在的话就无视过去;如果不在,就继续添加进/etc/hosts.deny文件。

阅读(2124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~