linux下利用iptables防Ddos攻击配置

使用iptables 设定单个客户机的指定时间内发起最大连接数请求,超过限制的直接DROP

 代码如下 复制代码

iptables -A INPUT -p tcp –dport 80 -m state –state NEW -m recent –set –name WEB
iptables -A INPUT -p tcp –dport 80 -m state –state NEW -m recent –update –seconds 30 –hitcount 20 –rttl –name WEB -j DROP

上例??0秒内20次

配置相应的iptables脚本

 代码如下 复制代码

#!/bin/sh
## define some vars
MAX_TOTAL_SYN_RECV="1000"
MAX_PER_IP_SYN_RECV="20"
MARK="SYN_RECV"
PORT="80"
 
LOGFILE="/var/log/netstat_$MARK-$PORT"
LOGFILE_IP="/var/log/netstat_connect_ip.log"
DROP_IP_LOG="/var/log/netstat_syn_drop_ip.log"
## iptables default rules: accept normailly packages and drop baleful SYN* packages
iptables -F -t filter
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p ALL -m state --state INVALID -j DROP
iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
## initialize
if [ -z $MARK ];then
MARK="LISTEN"
fi
if [ -z $PORT ];then
SPORT="tcp"
else
SPORT=":$PORT"
fi
######################## end
## save the results of command netstat to specifal file
netstat -atun|grep $MARK|grep $SPORT 2>/dev/null >$LOGFILE

REPEAT_CONNECT_IP=`less $LOGFILE|awk '{print $5}'|cut -f1 -d ':'|sort|uniq -d |tee > $LOGFILE_IP`

if [ -f $DROP_IP_LOG ];then
for i in `less $DROP_IP_LOG`;do
iptables -A INPUT -p ALL -s $i -j DROP
done
fi

for i in `less $LOGFILE_IP`;do
REPEAT_CONNECT_NUM=`grep $i $LOGFILE|wc -l`
## count repeat connections ,if the accout is large than default number,then drop packages
if [ $REPEAT_CONNECT_NUM -gt $MAX_PER_IP_SYN_RECV ];then
echo "$i####$REPEAT_CONNECT_NUM" >> $DROP_IP_LOG
iptables -A INPUT -p ALL -s $i -j DROP
fi
done

ALL_CONNECT=`uniq -u $LOGFILE|wc -l`
#echo $ALL_CONNECT
## count repeat connections ,if the accout is large than default number,then drop packages
if [ $ALL_CONNECT -gt $MAX_TOTAL_SYN_RECV ];then
#echo $ALL_CONNECT
exit
fi

3.利用shell脚本

1、Shell脚本

 代码如下 复制代码

#!/bin/bash
/bin/netstat -na |grep ESTABLISHED |awk ‘{print $5}’ |awk -F : ‘{print $1}’ | sed ‘/^$/d’ |sort|uniq -c|sort -rn|head -n 10|grep -v -E ’192.168|127.0′ |sed ‘/^$/d’ |awk ‘{if ($2!=null && $1>10);{print $2}}’>/tmp/dropip

for i in $(cat /tmp/dropip)
do
/sbin/iptables -A INPUT -s $i -j DROP
echo “$i kill at `date`”>>/var/log/ddos
done

2.增加执行权限

 代码如下 复制代码
chmod +x /root/bin/dropip.sh

3.添加到计划任务,每分钟执行一次

 代码如下 复制代码
crontab -e
*/1 * * * * /root/bin/dropip.sh

说明:
以上脚本比较简单,但很实用,最重要的是第二行,获取ESTABLISHED连接数最多的前10个ip并写入临时文件/tmp/dropip,排除了内部ip段192.168|127.0开头的.通过for循环将dropip里面的ip通过iptables全部drop掉,然后写到日志文件/var/log/ddos

时间: 2024-10-02 12:53:11

linux下利用iptables防Ddos攻击配置的相关文章

Linux下的vps被ddos攻击的解决办法

  连接vps 输入第一个命令 netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 这里我们查看SYN_RECV这些,看他的连接数高不高,好几百,就有可能被ddos了 接下来追查是来自哪个ip发出syn的 指令:netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more 接下来继续看下,输入指令 net

linux中防DDOS攻击软件DDoS-Deflate详解

DDoS-Deflate安装及配置 1.安装  代码如下 复制代码 wget http://www.inetbase.com/scripts/ddos/install.sh chmod 0700 install.sh ./install.sh 2.配置 配置文件是 /usr/local/ddos/ddos.conf ,默认有如下配置  代码如下 复制代码 FREQ=1 NO_OF_CONNECTIONS=150 APF_BAN=0 KILL=1 EMAIL_TO="test@qq.com&quo

linux下防DDOS攻击软件及使用方法详解

  互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事.在没有硬防的情况下,寻找软件代替是最直接的方法,比如用 iptables,但是iptables不能在自动屏蔽,只能手动屏蔽. 一.什么是DDOS攻击? DDoS也就是分布式拒绝服务攻击.它使用与普通的拒绝服务攻击同样的方法,但是发起攻击的源是多个.通常攻击者使用下载的工具渗透无保护的主机,当获得该主机的适当的访问权限后,攻击者在主机中安装软件的服务或进程(以下简侈怔理).这些代理保持睡眠状态,直到从它们的主控端得到指令,

Linux防DDOS攻击一些方法总结

DDoS deflate介绍 DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本.它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP. DDoS deflate官方网站:http://deflate.medialayer.com/ 如何确认是否受到DDOS攻击?执行:  代码如下 复制代码 netstat -ntu | awk '{print $5}' | cut -d: -f1 |

centOS7 下利用iptables配置IP地址白名单的方法_Linux

编辑iptables配置文件,将文件内容更改为如下,则具备了ip地址白名单功能 #vim /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -N whitelist -A whitelist -s 1.2.3.0/24 -j ACCEPT -A whitelist -s 4.5.6.7 -j ACCEPT -A INPUT -m state --state

为CentOS安装防DDOS攻击软件DDoS-Deflate

DDoS-Deflate是一款非常小巧的防御和减轻DDoS攻击的工具,它可以通过监测netstat来跟踪来创建大量互联网连接的IP地址信息,通过APF或IPTABLES禁止或阻档这些非常IP地址. 我们可以使用netstat命令查看当前系统连接的状态,是否有受到DDOS攻击 [root@localhost ~]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n &http://www.aliyun.

DDoS终结者 测思科防DDoS攻击系统

DDoS(分布式拒绝服务)攻击是利用TCP/IP协议漏洞进行的一种简单而致命的网络攻击,由于TCP/IP协议的这种会话机制漏洞无法修改,因此缺少直接有效的防御手段.大量实例证明利用传统设备被动防御基本是徒劳的,而且现有防火墙设备还会因为有限的处理能力陷入瘫痪,成为网络运行瓶颈.另外,攻击过程中目标主机也必然陷入瘫痪. 国内已经有越来越多的网站(Discuz.IM286等)中招落马,因此本报评测员,协同本地xx电信运营商在重庆市建立的互联网交换中心(IXC),对思科Riverhead防DDoS攻击

xss防御之php利用httponly防xss攻击

 这篇文章主要介绍了xss防御之php利用httponly防xss攻击,下面是PHP设置HttpOnly的方法,需要的朋友可以参考下 xss的概念就不用多说了,它的危害是极大的,这就意味着一旦你的网站出现xss漏洞,就可以执行任意的js代码,最可怕的是攻击者利用js获取cookie或者session劫持,如果这里面包含了大量敏感信息(身份信息,管理员信息)等,那完了...   如下js获取cookie信息:    代码如下: url=document.top.location.href; coo

linux系统防火墙iptables命令规则及配置的示例

linux系统防火墙iptables命令规则及配置的示例(本机IP为172.16.63.7): 1.允许172.16网段内的主机访问: #iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.63.7 -j ACCEPT 译:-t表,默认filter -A追加规则 INPUT进入 -s检查源 -d检查目标 -j处理动作 ACCEPT接受:入栈的目标是本机所以-d是本机IP: 2.以数值格式显示详细信息,列出表中链上的规则: #iptable