首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >shell 脚本监控攻击IP禁止登录服务器

shell 脚本监控攻击IP禁止登录服务器

原创
作者头像
eisc
修改于 2021-01-14 10:19:10
修改于 2021-01-14 10:19:10
2.3K0
举报
代码语言:javascript
复制
# 编写脚本    vi ipssh.sh 
#! /bin/bash
cat /var/log/secure | awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $1"="$2;}' > /usr/local/bin/black.list
							# 查看文件 
							# awk '/Failed/{print $0}'  字段处理,符号 /   / 指定包含 Failed 单词的行,打印 $0 所有列
							# 此处是指定 Failed [fei l d] 失败单词的行,打印 NF-3 指定列倒数第4列,从0开始;  
							# sort 按名称排序 ; uniq -c  计算重复的行个数
							# awk '{print $1  $2 }'  打印 第1 和第 2 列数据。因为 uniq -c 计算后生成一列
							# 存入文件
for i in `cat  /usr/local/bin/black.list`
							# for 循环条件是:循环完(cat 查看 文件里的有行,个数和IP)
do							# 开始循环
  IP=`echo $i |awk -F"=" '{print $2}'`
							# ip的值为 :打印行 awk -F"=" 等号位分隔符,选择 第2列 是 ip
  NUM=`echo $i|awk -F= '{print $1}'`
							# NUM 次数变量的值是: 打印行中 第1列
  if [ ${NUM} -gt 5 ]; then
							# 判断 次数大于 5 就开始  (lt小于)
    grep $IP /etc/hosts.deny > /dev/null
							# 文件 hosts.deny  记录的是拒绝IP访问
							# 过滤IP 的行 到空洞,等于删除
    if [ $? -gt 0 ];then
							# if $? 判断上一条命令执行城 大于0 次就开始
      echo "sshd:$IP:deny" >> /etc/hosts.deny
							# 将规则写入 禁止 IP 访问配置文件
    fi
  fi
done
sed -i "/eisc$IP/d" /etc/crontab	# 先删除计划任务,重新写
echo "
*/5 * * * * sh ~/ipssh.sh        		# eisc$IP
" > /etc/crontab	
							# crontab -e 设置定时任务5s一次,指定脚本文件
echo "被禁止访问的IP 为:"
grep sshd  /etc/hosts.deny 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档