一键屏蔽恶意IP!保护你的服务器免受攻击

news/发布时间2024/5/20 23:34:04
一键屏蔽恶意IP!保护你的服务器免受攻击
原创 脚本家园 脚本家园 2024-04-29 13:21 云南 听全文
在当今互联网高速发展的时代,服务器安全显得尤为重要。恶意访问、SSH暴力破解等网络安全威胁层出不穷,如何有效地保护我们的服务器免受攻击成为了每个运维人员和网络管理员必须面对的问题。今天,我们就来分享一些实用的脚本,帮助你轻松屏蔽恶意IP,提升服务器的安全性!
 
图片
 
一、屏蔽每分钟访问超过200的IP
 
面对恶意的频繁访问,我们可以采取屏蔽IP的策略。以下是通过分析Nginx访问日志来屏蔽恶意IP的脚本:
 
#!/bin/bash  
 
DATE=$(date +%d/%b/%Y:%H:%M)  
  
# 通过tail读取最新的5000行Nginx访问日志,筛选出当前时间的记录,并统计每个IP的访问次数  
# 若某个IP的访问次数超过100次(可根据实际需求调整),则视为异常IP  
ABNORMAL_IP=$(tail -n5000 access.log | grep $DATE | awk '{a[$1]++}END{for(i in a)if(a[i]>100)print i}')  
  
# 遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则  
# 若不存在,则添加屏蔽规则,阻止该IP的访问  
for IP in $ABNORMAL_IP; do  
    if [ $(iptables -vnL | grep -c "$IP") -eq 0 ]; then  
        iptables -I INPUT -s $IP -j DROP  
    fi  
done
脚本解析:
 
首先,我们通过date命令获取当前的日期和时间,以便后续筛选日志。
 
 
使用tail命令读取Nginx访问日志的最新5000行,通过grep和awk筛选出当前时间的记录,并统计每个IP的访问次数。若某个IP的访问次数超过设定的阈值(这里为100次),则将其视为异常IP。
 
遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则。若不存在,则使用iptables命令添加屏蔽规则,阻止该IP的访问。
 
二、屏蔽每分钟SSH尝试登录超过10次的IP
 
对于SSH暴力破解等恶意登录行为,我们也可以采取类似的策略进行屏蔽。以下是通过分析SSH登录日志来屏蔽恶意IP的脚本:
 
方法1:通过lastb获取登录状态
 
由于篇幅限制,这里仅展示部分关键代码。你可以通过lastb命令获取最近的登录记录,然后筛选出当前时间的记录,并统计每个IP的登录尝试次数。若某个IP的登录尝试次数超过设定的阈值(如10次),则将其视为异常IP,并进行屏蔽。
 
 
方法2:通过日志获取登录状态
 
对于使用OpenSSH的服务器,你可以通过分析/var/log/auth.log日志来屏蔽恶意IP。以下是相应的脚本示例:
 
#!/bin/bash  
 
DATE=$(date +"%b %d %H")  
  
# 通过tail读取最新的10000行SSH登录日志,筛选出当前时间的记录,并统计每个IP的登录尝试次数  
# 若某个IP的登录尝试次数超过5次(可根据实际需求调整),则视为异常IP  
ABNORMAL_IP="$(tail -n10000 /var/log/auth.log | grep "$DATE" | awk '/Failed/{a[$(NF-3)]++}END{for(i in a)if(a[i]>5)print i}')"  
  
# 遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则  
# 若不存在,则添加屏蔽规则,并记录操作日志  
for IP in $ABNORMAL_IP; do  
    if [ $(iptables -vnL | grep -c "$IP") -eq 0 ]; then  
        iptables -A INPUT -s $IP -j DROP  
        echo "$(date +"%F %T") - iptables -A INPUT -s $IP -j DROP" >> ~/ssh-login-limit.log  
    fi  
done
脚本解析:
 
与前面类似,我们首先通过date命令获取当前的日期和时间。
 
使用tail命令读取SSH登录日志的最新10000行,通过grep和awk筛选出当前时间的记录,并统计每个IP的登录尝试次数。若某个IP的登录尝试次数超过设定的阈值(这里为5次),则将其视为异常IP。
 
遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则。若不存在,则使用iptables命令添加屏蔽规则,阻止该IP的访问,并将操作记录到日志文件中。
 
总结:
 
通过以上两个脚本示例,你可以轻松地屏蔽那些频繁访问或尝试SSH登录的恶意IP地址。这些脚本可以根据你的实际需求进行调整和优化。同时,请注意定期检查和更新你的iptables规则以及相关的日志文件以确保服务器的安全。在网络安全日益重要的今天希望这些实用的小技巧能帮助你更好地保护你的服务器免受攻击!
 
 
 
 
脚本家园
 
阅读 6446
 
 
人划线
 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/44083240.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

定时将系统时间更新在日志文件中

获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建V1.0 2024年5月9日 发布于博客园实现:设计程序,获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,…

iceoryx源码阅读(一)——全局概览

一、什么是iceoryx iceoryx是一套基于共享内存实现的进程间通信组件。 二、源码结构 iceoryx源码包括若干工程,整理如下表所示:下图展示了主要项目之间的依赖(FROM:iceoryx(冰羚)-Architecture):三、iceoryx应用程序结构 iceoryx应用程序有三类进程,分别为Publisher、Su…

再探URLDNS链(手搓exp)

夜深了,想着还需要沉淀自己的基础能力,于是乎没有继续往CC链里爬,通过研究了一下ysoserial里的URLDNS链,决定自己尝试写一个类似却有些不同的exp,使自己的基础更加牢固一些,故有了今天这篇文章。 ysoserial里的URLDNS链我就不再多说,有兴趣的话自己可以去看下面这篇文章…

《编译原理》阅读笔记:p4-p17

《编译原理》学习第 2 天,p4-p17总结,总计 14 页。 一、技术总结 1.structure of compiler 编译器组成包括:Lexical Analyzer -> Syntax Analazer -> Semantic tree -> Intermediate Code Generator -> Machine-Independent Code Optimizer -> Code Genera…

Homework 7

1.尝试建模电梯的状态图2.学校规定:一个学生可选修多门课,一门课有若干学生选修; 一个教师可讲授多门课,一门课只有一个教师讲授; 一个学生选修一门课,仅有一个成绩。 学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。 要求:根据…

团队作业4——项目冲刺 第3篇 Scrum 冲刺博客

这个作业属于哪个课程 软件工程这个作业要求在哪里 团队作业4——项目冲刺这个作业的目标 团队完成任务的分配,明确团队每个人在接下来七天敏捷冲刺的目标其他参考文献这个作业所属团队 SuperNewCode团队成员 张楠 曾琳备 黄铭涛 张小宇 周广1.每日举行站立时会议2.燃尽图3.每…