拦截相同IP连接数过大的会话请求
2017-06-16 16:16
253 查看
拦截相同IP连接数过大的会话请求
系统环境:Centos 6.5 x64
为避免Linux主机遭受***,需要定时查看主机上的会话连接数。对于同一IP会话数过高的,肯定判断为不正常。可以通过shell脚本定时把不正常的IP加入进防火墙中,来DROP掉它。
[root@host 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
给脚本可执行权限
[root@host ssh]# chmod +x /etc/ssh/blockip
添加到排程任务,每30分钟执行一次[root@host 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
附件:http://down.51cto.com/data/2366755
系统环境:Centos 6.5 x64
为避免Linux主机遭受***,需要定时查看主机上的会话连接数。对于同一IP会话数过高的,肯定判断为不正常。可以通过shell脚本定时把不正常的IP加入进防火墙中,来DROP掉它。
[root@host 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
给脚本可执行权限
[root@host ssh]# chmod +x /etc/ssh/blockip
添加到排程任务,每30分钟执行一次[root@host 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
附件:http://down.51cto.com/data/2366755
相关文章推荐
- 无法向会话状态服务器发出会话状态请求。请确保已启动 ASP.NET State service,并且客户端和服务器端口保持相同。
- SpringMVC 拦截请求,判断会话是否超时
- 无法向会话状态服务器发出会话状态请求。请确保已启动 ASP.NET State service,并且客户端和服务器端口保持相同。
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE/SYSTEM/Curre
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKE
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKE
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。解决办法:
- 用curl通过相同IP请求不同域名的URL
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。
- struts 2拦截jsp请求
- nginx 拦截请求信息与响应信息并切割日志
- 微信内嵌浏览器sessionid丢失问题,nginx ip_hash将所有请求转发到一台机器
- spring aop实现拦截接口请求打印日志
- IPTABLES可以限制每个ip的最大连接数
- iOS 开发中使用 NSURLProtocol 拦截 HTTP 请求
- Spring AOP拦截对Controller的请求时的配置失败
- 程序模拟浏览器请求及会话保持-python实现
- Retrofit+okhttp3的简单封装实现网络请求和拦截