脚本自动封掉并发数过高的 IP
防止扫描器对服务器恶意扫描,可以对 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的更多相关文章
- 普通用户su 到root,无需密码方式,及iptables封掉本机某个端口,core文件配置
一. 普通用户su到root无需密码: 随着服务器越来越多,普通用户转到root下,去查密码表是个很繁琐的事,发现有如下方式比较方便(需要root操作) vi /etc/pam.d/su 将 aut ...
- 高并发实时弹幕系统 并发数一定是可以进行控制的 每个需要异步处理开启的 Goroutine(Go 协程)都必须预先创建好固定的个数,如果不提前进行控制,那么 Goroutine 就随时存在爆发的可能。
小结: 1.内存优化1.一个消息一定只有一块内存使用 Job 聚合消息,Comet 指针引用. 2.一个用户的内存尽量放到栈上内存创建在对应的用户 Goroutine(Go 程)中. 3.内存由自己控 ...
- Windows Server 脚本记录Apache、Mysql 每分钟并发数
打开windows server 计划任务管理器.定时执行如下的Bat脚本即可. 在D盘新建一个monitor文件夹,创建ApacheMysql.bat文件.内容如下: 在monitor文件夹中新建m ...
- Linux Shell多进程并发以及并发数控制
1. 基础知识准备 1.1. linux后台进程 Unix是一个多任务系统,允许多用户同时运行多个程序.shell的元字符&提供了在后台运行不需要键盘输入的程序的方法.输入命令后,其后紧跟&a ...
- 【转载】nginx 并发数问题思考:worker_connections,worker_processes与 max clients
注:这个文章主要是作者一直在研究nginx作为http server和反向代理服务器时候所谓最大的max_clients和 worker_connections的计算公式, 其实最后的结论也没有卡上公 ...
- ssh访问控制,多次失败登录即封掉IP,防止暴力破解
ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b
用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 ...
- 项目在tomcat里运行一段时间总是自动崩掉的问题排查与解决
最近的检验系统上线一段时间后,发现系统访问不了,tomcat总是会自动崩掉,一般遇到这种问题,程序员的第一反应都肯定是内存溢出. 确实是,但是java里内存分好几种,堆内存.栈内存.静态内存区等等,下 ...
- Unity VS 创建脚本自动添加头注释-时间-描述-作者等信息
Unity生成脚本自动添加头注释 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心 ...
随机推荐
- 逻辑回归为什么用sigmoid函数
Logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷. 因此,使用logistic函数(或称作sigmoid函数)将自 ...
- MySQL数据库性能优化思路与解决方法(一转)
1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越 小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设 ...
- asp.net core Api配置swagger
这个很简单的一篇文章用来记录以下使用swagger的过程,以后有用. 1.nuget 下载install-package Swashbuckle.AspNetCore 2.startup里面confi ...
- 工程下CmakeLists.txt
2.工程下Cmake 本小节的任务是让上一小结的程序更像一个工程: 为工程添加一个子目录 src,用来放置工程源代码 : 添加一个子目录doc,用来放置这个工程的文档 hello.txt: 在工程目录 ...
- cpp11_thread线程
一.进程与线程 cpu一般有m核n线程的说法,那么该cpu只能同时运行n个线程(线程中没有sleep). #include <thread> #include <mutex> ...
- Laravel 的十八个最佳实践
本文翻译改编自 Laravel 的十八个最佳实践 这篇文章并不是什么由 Laravel 改编的 SOLID 原则.模式等. 只是为了让你注意你在现实生活的 Laravel 项目中最常忽略的内容. ...
- 关于vagrant一个虚拟机搭建多个项目配置(总结)
问题1:执行vagrant status命令,报错,没有找到命令,翻译:“vargrant bash命令没有找到.” 解答:因为在/home目录中,所有无法执行该命令,需要切换到外部进行执行 问题2: ...
- Django Rest framework 框架
一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...
- linux上如何让other用户访问没有other权限的目录
目前遇到一个问题,一个other用户要访问一个目录,他需要在这个目录下创建文件,因此这个目录需要一个写权限,于是就给了这个目录777的权限,这样这个权限有点太大了,很容易出现安全问题,那我们应该怎么办 ...
- linux audit审计(3)--audit服务配置
audit守护进程可以通过/etc/audit/auditd.conf文件进行配置,默认的auditd配置文件可以满足大多数环境的要求. local_events = yes write_logs = ...