LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1147|回复: 9

有没有这样的脚本,每隔5秒锺就检查一下半连接状态。

[复制链接]
发表于 2005-4-29 12:54:20 | 显示全部楼层 |阅读模式
我这样问的目的在于防止syn-flood攻击。
有没有这样的脚本,每隔5分锺就检查一下半连接状态,如果来自某个IP的连接超过20个,则马上调用iptables规则将其drop掉。

我在网上找了很久都找不到。。。
发表于 2005-4-29 14:15:46 | 显示全部楼层
你这描述基本上都能把程序写下来了。
while true; do
...blabla
...blabla
sleep 5m
done

作为daemon使用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-29 18:22:46 | 显示全部楼层
问题是怎样能够统计到20个想同的IP地址?
netstat -an | grep FIN_WAIT_2
回复 支持 反对

使用道具 举报

发表于 2005-4-29 19:17:50 | 显示全部楼层
这样的程序,最好用C写

比如用BPF可以直接检测非常复杂的IP规则,用libpcap同样也应该能比较容易的完成类似功能
回复 支持 反对

使用道具 举报

发表于 2005-4-30 00:55:57 | 显示全部楼层
Post by wsgtrsys
我这样问的目的在于防止syn-flood攻击。
有没有这样的脚本,每隔5分锺就检查一下半连接状态,如果来自某个IP的连接超过20个,则马上调用iptables规则将其drop掉。

我在网上找了很久都找不到。。。

继续找!
回复 支持 反对

使用道具 举报

发表于 2005-5-12 11:53:10 | 显示全部楼层
for i in `netstat -na|grep FIN_WAIT_2|awk '{print $5}'|awk -F":" '{print $1}'|uniq`
do
WAITIPNU=`netstat -na|grep -c $i`
  if [ $WAITIPNU -ge 20 ];then
不知道可不可以呀
回复 支持 反对

使用道具 举报

发表于 2005-5-12 11:55:13 | 显示全部楼层
iptables 我不会 希望楼主能补全 再贴出来 大家学习一下
回复 支持 反对

使用道具 举报

发表于 2005-5-12 12:38:30 | 显示全部楼层
#!/bin/bash
while :
do
for i in `netstat -na|grep FIN_WAIT_2|awk '{print $4 }'|awk -F":" '{print $1}'|uniq`
do
WAITIPNU=`netstat -na|grep -c $i`
  if [ $WAITIPNU -ge 20 ];then
  iptables -A INPUT -p tcp -d "$i" -j DROP
  else
  continue
  fi
done
done
sleep 5m

不知道对不对 请大家多指教
回复 支持 反对

使用道具 举报

发表于 2005-5-12 13:49:40 | 显示全部楼层
soory 好像sleep放错了
回复 支持 反对

使用道具 举报

发表于 2005-5-14 09:49:34 | 显示全部楼层
我想sleep放哪里都不对,去掉sleep,用系统的job来做,然后把shell放进去,
每5分钟执行一次,shell本身是执行完毕就结束的,应该没有定时器的功能吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表