拦截相同IP连接数过大的会话请求

拦截相同IP连接数过大的会话请求

系统环境:Centos 6.5 x64

为避免Linux主机遭受攻击,需要定时查看主机上的会话连接数。对于同一IP会话数过高的,肯定判断为不正常。可以通过shell脚本定时把不正常的IP加入进防火墙中,来DROP掉它。

[[email protected] ssh]# vi /etc/ssh/blockip

#!/bin/bash

#auto drop IP ,IP address greater than 10

#by authors evanli 2017-6-15

ip_regex="[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}"

netstat -na --tcp| grep ESTABLISHED | awk ‘{ if ( index($4,":"‘"$port_num"‘"") ) print $5}‘ | awk -F ‘:‘ ‘{print $1}‘ | sort > /var/log/IPLIST

IP_ADDR=`tail -n 100 /var/log/IPLIST | egrep -o  $ip_regex | sort -nr | uniq -c | awk ‘$1>=10 {print $2}‘`

IPTABLES_CONF=/etc/sysconfig/iptables

for i in `echo $IP_ADDR`

do

cat $IPTABLES_CONF |grep $i >/dev/null

if

[ $? -ne 0 ];then

sed -i "5 a -A INPUT -s $i/32 -j DROP" $IPTABLES_CONF

else

echo "This is $i is exist in iptables,please exit ....."

fi

done

给脚本可执行权限

[[email protected] ssh]# chmod +x /etc/ssh/blockip


添加到排程任务,每30分钟执行一次

[[email protected] ssh]# vi /etc/crontab

*/30 * * * * root /etc/ssh/blockip


脚本说明:

1、首先生成所有连接数IP的文件/var/log/IPLIST

2、在IPLIST文件中统计出现数次大于10的IP。awk ‘$1>=10 (此10数字可修成你需要的数字)

3、将出现数次大于10的IP加入到防火墙DROP掉。

4、判断防火墙中是否存在该IP,如果有了,出现提示This is IP is exist in iptables,please exit .....

5、vi /etc/sysconfig/iptables 查看DROP掉的IP是否有加入进来。

6、查检没问题,最后需要重起防火墙,设定才会生效。

附件为脚本,可以直接运行

以上脚本测试完成于2017.06.15,by evan.li

时间: 2024-08-28 08:33:38

拦截相同IP连接数过大的会话请求的相关文章

nginx与apache 限制ip连接数和带宽方法

今天有个人问我,nginx怎么限制ip连接数,突然想不起来了,年龄大了,脑子不怎么好使了.还要看一下配置才想起了.那个人又问我,你测试过的吗?一下子把我问蒙了,我真没测试过了,也不知道启作用了没有. 1,配置nginx.conf  代码如下 复制代码 http{.............limit_zone   one  $binary_remote_addr  10m;  //我记得默认配置就有,只不过是注释掉了,如果没有加一下.............. server{ ..........

查看服务器IP连接数

1.查看服务器IP连接数: netstat -tun | awk '{print $5}' | cut -d: -f1 |sort | uniq -c | sort -nr 2.查看nginx日志一天访问量最多的前10位IP zcat access_nginx.api130.log.20160518.16.gz | awk '{print $1}' | sort | uniq -c | sort -nr -k1 |less

iptables限制同一IP连接数,防防CC/DDOS攻击

启动sftp本机的iptables防火墙功能,限制每个ip连接22端口(sftp连接端口即是ssh端口)最大为50个,当超过50后的连接数的流量就会被DROP掉! 同时iptables需要开放50000-65535范围的端口的访问(linux系统最大的端口为65535) [[email protected] ~]# cat /etc/sysconfig/iptables # Firewall configuration written by system-config-firewall # Ma

使用UFW防火墙拦截特定IP地址

UFW(Uncomplicated Firewall)是一个iptables的前端应用程序,尤其适合作为单台服务器或主机的防火墙.它已成为Ubuntu Linux系统默认的防火墙配置工具.对于系统管理员来讲,UFW工具真是简单易用.它是一种创建基于IPv4或IPv6防火墙的快捷方法. 一.拦截特定IP地址 语法: sudo ufw deny from {ip-address-here} to any为拦截或拒绝来自192.168.1.5的所有数据包,可以输入: sudo ufw deny fro

大并发大数据量请求的处理方法

大并发大数据量请求一般会分为几种情况: 1.大量的用户同时对系统的不同功能页面进行查找,更新操作 2.大量的用户同时对系统的同一个页面,同一个表的大数据量进行查询操作 3.大量的用户同时对系统的同一个页面,同一个表进行更新操作 对于第一种情况一般处理方法如下: 一.对服务器层面的处理 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Advanced Settings Queue Length : 6

阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。

1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,可以看看,没怎么看懂,呵呵,要细细读下. 2.需要开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中有一个如下的AccessLogValve 日志纪录功能,当配置中的pattern=common时,对应的日志是如下,无论正常请求和非法请求都会记录. <Valve className="org.apach

在ASP.NET MVC下限制同一个IP地址单位时间间隔内的请求次数

有时候,当用户请求一个Controller下的Action,我们希望,在单位时间间隔内,比如每秒,每分钟,每小时,每天,每星期,限制同一个IP地址对某个Action的请求次数.如何做呢? stefanprodan的MvcThrottle能很好地解决这个问题,以及其它类型的IP限制问题.在这里:https://github.com/stefanprodan/MvcThrottle 把项目从GitHub下载下来,在本地打开. 找到MvcThrottle类库,打开ThrottlingFilter这个类

获取客户端ip访问网站的次数和请求页面脚本

获取客户端ip访问网站的次数和请求页面 #/bin/bash cd /data/iplog/$1/pv txt=$(ls -l|awk '{print $NF}'|sed '1d') for n in $txt do ip=$(cat /root/iplist) for n1 in $ip do grep $n1 $n >>/opt/txt01/$n1-$1-cpv.txt done done rep_txt=$(cd /opt/txt01/&&ls -l *cpv.txt|a

linux中Iptables限制同一IP连接数防CC/DDOS攻击方法

1.限制与80端口连接的IP最大连接数为10,可自定义修改.  代码如下 复制代码 iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP 2.使用recent模块限制同IP时间内新请求连接数,recent更多功能请参考:Iptables模块recent应用.  代码如下 复制代码 iptables -A INPUT -p tcp --dport 80 --syn -m recent --name