当前位置: 首页 > news >正文

shell 拒绝恶意连接脚本 centos7.x拒绝恶意连接脚本

1. crontab -l 脚本频率:

    */2 * * * * /bin/bash /home/shell/deny.sh

2. 脚本:

rm -rf /home/shell/ip_list
cat /var/log/secure | grep "Failed password for" | awk '{print$(NF-3)}' | sort | uniq -c > /home/shell/ip_list
#cat /var/log/secure | grep "Invalid user" | awk '{print$(NF-2)}' | sort | uniq -c > /home/shell/ip_list
# cat /var/log/secure | grep "Received disconnect from " | awk '{print$(NF-4)}' | awk -F: '{print$1}' | sort | uniq -c >> /home/shell/ip_list
DEFINE=20
cat /home/shell/ip_list | while read line
doIP=`echo $line | awk '{print$2}'`NUM=`echo $line | awk '{print$1}'`if [ $NUM -gt $DEFINE ];    thengrep $IP /etc/hosts.deny > /dev/null 2>&1if [ $? -gt 0 ]; thenecho "sshd:$IP:deny # ="`date +%s` >> /etc/hosts.denyfifi
done#封禁段时间的IP进行解封,如果解封时间小于日志文件生成周期,会出现重复封禁、解封情况。特别是有的系统不会按指定时间重新生成secure日志文件。暂未解决重复封禁IP问题
rm -rf /home/shell/list /home/shell/list1     #删除临时文件,如果有的话
TIMES=`date +%s`    #记录当前系统时间,用于跟已经封禁的IP进行对比
cat /etc/hosts.deny | grep "sshd" > /home/shell/list   #检查/etc/hosts.deny文件中是否有已经封禁的IP,如果有,则写入/home/shell/list文件,以供后面筛选
if [ $? -eq 0 ]     #如果上一条命令执行成功(即有被封禁IP),则执行后面的操作
thencat /etc/hosts.deny | awk -F'=' '{print$2}' | sed '/^$/d' > /home/shell/list1  #将所有已经封禁的IP信息进行过滤,过滤出时间信息,写入/home/shell/list1文件cat /home/shell/list1 | while read line    #通过while循环,依次读取时间信息doDATES=$[ TIMES-line ]           #将当前时间跟IP封禁时间进行运算if [ $DATES -ge 604800 ]            #如果封禁IP时间大于指定时间(这里是7天转换后的秒数),则继续执行后面的操作thenlines=` head -n 1 /home/shell/list `   #将符合解封时间的信息写入变量,方便后面删除# sed -i '/'"$line"'/d' /home/shell/list1   #删除时间信息临时文件,这条可要可不要,因为前面是通过while 循环依次读取,不会重复读取第一行sed -i '/'"$lines"'/d' /etc/hosts.deny /home/shell/list    #删除符合解封的IP记录。fidone
elseecho '没有需要解封的IP'exit 0
fi

 3. 使用时,注意编码问题,最好先在服务器建好脚本文件,然后粘贴进去

4.放入cron run即可

http://www.lryc.cn/news/232215.html

相关文章:

  • 【系统架构设计】计算机公共基础知识: 2 计算机系统基础知识
  • 什么是代理模式,用 Python 如何实现 Proxy(代理 或 Surrogate)对象结构型模式?
  • 国内领先的五大API接口供应商
  • 第十九章 Java绘图
  • 【C++面向对象】13. 接口 / 抽象类*
  • LeetCode热题100——二分查找
  • 使用VC++实现分段线性变换,直方图均衡化、锐化处理(使用拉普拉斯算子)
  • react class改hooks写法
  • 桂院校园导航 | 云上高校导航 云开发项目 二次开发教程 1.3
  • sscanf提取相应字符到数组
  • 本地开发环境和服务器传输数据的几种方法
  • LeetCode之二叉树
  • 论文学习——THE USTC SYSTEM FOR ADRESS-M CHALLENGE
  • 第一百七十五回 如何创建放射形状渐变背景
  • vue实现调用手机拍照、录像功能
  • WPF播放视频
  • 交换机如何配置BGP协议
  • 精通Nginx(14)-配置HTTPS
  • 封装一个简单的table组件
  • Avalonia UI框架介绍
  • 【入门篇】1.3 redis客户端之 jedis 高级使用示例
  • 使用CXF调用WSDL(二)
  • list.toArray
  • 2013年11月10日 Go生态洞察:Go语言四周年回顾
  • Ubuntu上使用SSH连接到CentOS系统
  • 【知识增强】A Survey of Knowledge-Enhanced Pre-trained LM 论文笔记
  • shell脚本之函数
  • 订水商城实战教程10-宫格导航
  • 【C++11】lambda表达式 | 包装器
  • 网络安全准入技术之MAC VLAN