防止扫描器对服务器恶意扫描,可以对 iptables 规则做了比较严格的配置。

以下配置可作为参考:

#lo
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
#Established
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#http/https
-A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
#ssh
-A INPUT -p tcp --dport [sshport] -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport [sshport] -m state --state ESTABLISHED -j ACCEPT
#manage
-A INPUT -p tcp --dport [manageport] -j ACCEPT
-A OUTPUT -p tcp --dport [manageport] -j ACCEPT
#anti-ddos
-A INPUT -p tcp --dport 80 -m limit --limit 200/minute --limit-burst 2000 -j ACCEPT
#protect-port
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
#max-conn
-A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 60 --connlimit-mask 32 -j REJECT -- reject-with icmp-port-unreachable
#log
-A INPUT -m limit --limit 40/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A OUTPUT -m limit --limit 40/min -j LOG --log-prefix "iptables denied: " --log-level 7
#default
-A INPUT -j DROP
-A OUTPUT -j DROP
-A FORWARD -j DROP

需要自动将并发数高的IP屏蔽使用以下代码:

#!/bin/sh
status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" -- '{print $1}' |sort -n|uniq -c |sort -n|tail -n `
NUM=`echo $status|awk '{print $1}'`
IP=`echo $status|awk '{print $2}'`
result=`echo "$NUM > 60" | bc`
if [ $result = -a $IP != "54.68.xxx.xxx" ]
then
echo IP:$IP is over $NUM, BANNED! $(date "+%x %r") >> bannedIP.txt
/sbin/iptables -I INPUT -s $IP -j DROP
fi

iptables Code

备注:

要封停一个 IP,使用下面这条命令:
#iptables -I INPUT -s ***.***.***.*** -j DROP
要解封一个 IP,使用下面这条命令:
#iptables -D INPUT -s ***.***.***.*** -j DROP

如果要想清空封掉的 IP 地址,可以输入:
#iptables --flush
要添加 IP 段到封停列表中,使用下面的命令:
#iptables -I INPUT -s 121.0.0.0/8 -j DROP

脚本自动封掉并发数过高的 IP的更多相关文章

  1. 普通用户su 到root,无需密码方式,及iptables封掉本机某个端口,core文件配置

    一. 普通用户su到root无需密码: 随着服务器越来越多,普通用户转到root下,去查密码表是个很繁琐的事,发现有如下方式比较方便(需要root操作) vi /etc/pam.d/su  将 aut ...

  2. 高并发实时弹幕系统 并发数一定是可以进行控制的 每个需要异步处理开启的 Goroutine(Go 协程)都必须预先创建好固定的个数,如果不提前进行控制,那么 Goroutine 就随时存在爆发的可能。

    小结: 1.内存优化1.一个消息一定只有一块内存使用 Job 聚合消息,Comet 指针引用. 2.一个用户的内存尽量放到栈上内存创建在对应的用户 Goroutine(Go 程)中. 3.内存由自己控 ...

  3. Windows Server 脚本记录Apache、Mysql 每分钟并发数

    打开windows server 计划任务管理器.定时执行如下的Bat脚本即可. 在D盘新建一个monitor文件夹,创建ApacheMysql.bat文件.内容如下: 在monitor文件夹中新建m ...

  4. Linux Shell多进程并发以及并发数控制

    1. 基础知识准备 1.1. linux后台进程 Unix是一个多任务系统,允许多用户同时运行多个程序.shell的元字符&提供了在后台运行不需要键盘输入的程序的方法.输入命令后,其后紧跟&a ...

  5. 【转载】nginx 并发数问题思考:worker_connections,worker_processes与 max clients

    注:这个文章主要是作者一直在研究nginx作为http server和反向代理服务器时候所谓最大的max_clients和 worker_connections的计算公式, 其实最后的结论也没有卡上公 ...

  6. ssh访问控制,多次失败登录即封掉IP,防止暴力破解

    ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...

  7. iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b

    用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 ...

  8. 项目在tomcat里运行一段时间总是自动崩掉的问题排查与解决

    最近的检验系统上线一段时间后,发现系统访问不了,tomcat总是会自动崩掉,一般遇到这种问题,程序员的第一反应都肯定是内存溢出. 确实是,但是java里内存分好几种,堆内存.栈内存.静态内存区等等,下 ...

  9. Unity VS 创建脚本自动添加头注释-时间-描述-作者等信息

    Unity生成脚本自动添加头注释 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心 ...

随机推荐

  1. OSS网页上传和断点续传(OSS配置篇)

    OSS网页上传和断点续传主要根据BrowserJS-SDK和相关文档整理而得,快速构建OSS上传应用 一.Bucket设置 浏览器中直接访问OSS需要开通Bucket的CORS设置 将allowed ...

  2. P124黎曼可积性刻画 的两个备注

    1.这里为什么是开集?   2.请问为什么说了是开集马上就说是有界可测函数? 开集为可测集

  3. eclipse如何添加web dynamic project

    很多eclipse版本是不能直接新建web dynamic project的,需要从网上找插件或更新. 比较方便的是在Help → Install-New-Software,点击add按钮,在Loca ...

  4. Booth乘法

    先看一个例子,结合疑问看算法. 1.已知X=+0.0011 Y=-0.1011 求[XY]补 解:[x]补 =0.0011 , [-x]补 =1.1101,[y]补 =1.0101 部分积      ...

  5. html问题汇总

    1.textarea换行 textarea中无法使用<br/>换行,需要使用\n 2.textarea无法提交 我们知道表单中的元素需要设置name属性才能够提交,但是如果设置了disab ...

  6. Pyspider上手

    pyspider安装: pip3 install Pyspider 启动服务操作 1.打开cmd:输入        pyspider  --help 回车,可以查看帮助信息,pyspider all ...

  7. React Native之倒计时组件的实现(ios android)

    React Native之倒计时组件的实现(ios android) 一,需求分析 1,app需实现类似于淘宝的活动倒计时,并在倒计时结束时,活动也结束. 2,实现订单倒计时,并在倒计时结束时,订单关 ...

  8. Sqlserver tablediff的简单使用

    1. 先列举一下自己简单的比较语句 tablediff -sourceserver 10.24.160.73 -sourcedatabase cwbasemi70 -sourceschema lcmi ...

  9. word的"bug"

    发表博客发现,从word复制文本到chrome浏览器上的博客时, 如果复制完后立即关闭word,那么将无法粘贴到通过chrome浏览器访问的博客上,也无法粘贴到记事本上: 但是复制完立即关闭word后 ...

  10. js尾递归函数

    普通递归: function fac(n) { if (n === 1) return 1; return n * fac(n - 1); } fac(5) // 120 这是个阶乘.但是占用内存,因 ...