利用shell脚本拒绝TCP连接数大于20的IP

简介:   最近服务器频繁遭到CC攻击,抓包、分析连接数后,发现单台服务器的并发连接数达到5万多,本想利用iptables的connlimit模块对连接数据进行限制的,无奈我接手的这几台服务器都没打此...

  最近服务器频繁遭到CC攻击,抓包、分析连接数后,发现单台服务器的并发连接数达到5万多,本想利用iptables的connlimit模块对连接数据进行限制的,无奈我接手的这几台服务器都没打此补丁,决定利用shell脚本对于一些连接数过大的IP进行屏蔽

 
vi /opt/drop_tcp.sh
 
#!/bin/sh
netstat-nat -n > /opt/netstat-net.log
file=/opt/drop_ip.log
//判断连接数大于20的IP
/bin/awk -F: '/tcp/{a[$(NF-2)]++}END{for(i in a)if(a[i]>20)print i}' /opt/netstat-net.log > $file
drop_ip=`cat $file |awk '{print $2}'`
for iptables_ip in $drop_ip
do
//如果iptables的PREROUTING链中,没有出现过这个IP,则直接用iptables丢弃所有来自这个IP地址发送的请求
        if [ $iptables_ip != $0 ] && [ -z "` iptables -nvL -t nat|grep $iptables_ip`" ];then
        /sbin/iptables -t nat -I PREROUTING -s $iptables_ip -j DROP
        fi
done
 
//定期执行此脚本
crontab -e
*/5 * * * * sh /opt/drop_tcp.sh
 
       这样对于单IP连接数超过20的进行屏蔽
 
       为了避免iptables规则过于臃肿,也要对已经屏蔽IP进行解封
 
vi /opt/drop_iptables.sh
 
#!/bin/sh
iptables=/opt/iptables.log
iptables-save > $iptables
drop_ip1=`cat $iptables |awk /DROP/'{print $4}'`
for iptables_ip1 in $drop_ip1
do
        /sbin/iptables -t nat -D PREROUTING -s $iptables_ip1 -j DROP
done
 
//定期执行此脚本
crontab -e
* */3 * * * sh /opt/drop_iptables.sh
目录
相关文章
|
1天前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
|
7天前
|
Shell
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
13 1
|
19天前
|
监控 Shell Linux
Linux的Shell脚本详解
Linux的Shell脚本详解
|
23天前
|
Shell
shell脚本
shell脚本
18 2
|
3天前
|
移动开发 网络协议 Shell
查看IP访问量的shell脚本汇总
查看IP访问量的shell脚本汇总
|
8天前
|
Shell 调度
Shell脚本中的if条件判断语句
Shell脚本中的if条件判断语句
|
8天前
|
Shell
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
6 0
|
1月前
|
Ubuntu Java Linux
Linux centos7 ubuntu 一键安装Java JDK 脚本 shell 脚本
Linux centos7 ubuntu 一键安装Java JDK 脚本 shell 脚本
42 2
|
9天前
|
机器学习/深度学习 Unix Java
技术笔记:Linux之Shell脚本编程(一)
技术笔记:Linux之Shell脚本编程(一)
14 0
|
1月前
|
Shell Linux
shell linux中shell脚本编写俄罗斯方块
shell linux中shell脚本编写俄罗斯方块
23 1