iptables防DDOS攻击和CC攻击配置

防范DDOS攻击脚本

#防止SYN攻击 轻量级预防
iptables -N syn-flood
iptables -A INPUT -p tcp –syn -j syn-flood
iptables -I syn-flood -p tcp -m limit –limit 3/s –limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT

#防止DOS太多连接进来,可以允许外网网卡每个IP最多15个初始连接,超过的丢弃
iptables -A INPUT -i eth0 -p tcp –syn -m connlimit –connlimit-above 15 -j DROP
iptables -A INPUT -p tcp -m state –state ESTABLISHED,RELATED -j ACCEPT

#用Iptables抵御DDOS (参数与上相同)
iptables -A INPUT -p tcp –syn -m limit –limit 12/s –limit-burst 24 -j ACCEPT
iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT

##########################################################

防范CC攻击

当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。

1.系统要求

(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。

(2)iptables版本:1.3.7

2. 安装

安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit

3. 配置相应的iptables规则

示例如下:

(1)控制单个IP的最大并发连接数

iptables -I INPUT -p tcp –dport 80 -m connlimit –connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
#默认iptables模块不包含connlimit,需要自己单独编译加载,请参考该地址http://sookk8.blog.51cto.com/455855/280372不编译内核加载connlimit模块

(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数

iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –update –seconds 60 –hitcount 30 -j REJECT iptables -A INPUT -p tcp –dport 80 -m recent –name BAD_HTTP_ACCESS –set -j ACCEPT
#单个IP在60秒内只允许最多新建30个连接

4. 验证

(1)工具:flood_connect.c(用来模拟攻击)

(2)查看效果:

使用

watch ‘netstat -an | grep:21 | grep<模拟攻击客户机的IP>| wc -l’

实时查看模拟攻击客户机建立起来的连接数,

使用

watch ‘iptables -L -n -v | \grep<模拟攻击客户机的IP>’

查看模拟攻击客户机被 DROP 的数据包数。

5.注意

为了增强iptables防止CC攻击的能力,最好调整一下ipt_recent的参数如下:

#cat/etc/modprobe.conf options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60
#记录1000个IP地址,每个地址记录60个数据包 #modprobe ipt_recent

转载于:https://www.cnblogs.com/linuxde/p/8718325.html

<think>好的,我现在需要帮助用户解决如何配置iptables御ICMP Flood攻击的问题。首先,我得回忆一下关于ICMP Flood攻击的基本知识。ICMP Flood通常是通过发送大量的Ping请求(ICMP类型8代码0)来耗尽目标系统的资源,导致服务不可用。因此,御的关键在于限制ICMP请求的速率,止过多的请求涌入。 接下来,我需要参考用户提供的引用内容。引用[2]提到使用iptables的limit模块来限制ICMP包的速率,例如每秒允许2个请求,突发5个。这应该是有效的配置方法。同时,引用[4]中也提到了使用hping3进行ICMP洪水攻击的例子,进一步确认了这种攻击方式的特点。 然后,我需要确保配置步骤正确。首先设置默认策略为DROP,这样可以阻止所有未明确允许的流量。然后,针对ICMP类型8的请求应用limit模块,限制速率。同时,引用[3]中的实验显示,通过查看SYN_RECV状态的数量来验证御效果,这可能也适用于ICMP Flood的情况,但需要具体命令来监控ICMP流量。 另外,需要注意iptables规则的顺序,因为规则是按顺序匹配的。确保ACCEPT规则在DROP之前,否则可能导致规则不生效。引用[1]中提到了设置默认规则为丢弃一切报文,然后添加具体规则,这符合最佳实践。 用户可能需要具体的配置命令验证方法。例如,使用iptables -L -v查看规则是否生效,或者使用tcpdump监控ICMP流量。此外,可能还需要考虑持久化配置,避免重启后规则丢失,这可以通过iptables-saveiptables-restore来实现。 最后,要检查是否有遗漏的步骤,比如是否允许必要的ICMP类型,如目标不可达(类型3)或超时(类型11),这些对于网络诊断是重要的。同时,提醒用户测试配置后的效果,确保不会影响正常业务。 总结一下,配置步骤应包括设置默认策略、限制ICMP请求速率、验证规则持久化配置。同时,提供相关问题帮助用户深入理解御机制其他攻击类型的护。</think>### 如何配置iptables御ICMP Flood攻击 #### 一、ICMP Flood攻击原理 ICMP Flood通过发送大量ICMP请求包(类型8代码0的Ping请求)消耗目标网络带宽或系统资源,形成拒绝服务攻击[^2]。攻击特征表现为单位时间内ICMP包数量异常激增。 --- #### 二、iptables配置步骤 1. **设置默认策略** ```bash # 清除旧规则 sudo iptables -F # 设置默认策略为丢弃所有流量 sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT # 若需严格御可设为DROP ``` 2. **限制ICMP请求速率** ```bash # 允许每秒2个ICMP请求,突发允许5个(缓冲突发流量) sudo iptables -A INPUT -p icmp --icmp-type 8 \ -m limit --limit 2/sec --limit-burst 5 -j ACCEPT # 超出限制的ICMP请求直接丢弃 sudo iptables -A INPUT -p icmp --icmp-type 8 -j DROP ``` 3. **保留必要ICMP类型** 允许关键ICMP类型(如目标不可达、超时报文): ```bash sudo iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT # 目标不可达 sudo iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT # 超时报文 ``` 4. **持久化规则(止重启失效)** ```bash sudo apt-get install iptables-persistent sudo iptables-save > /etc/iptables/rules.v4 ``` --- #### 三、验证配置有效性 1. **查看规则状态** ```bash sudo iptables -L -v -n # 观察ICMP规则包计数是否增长 ``` 2. **模拟攻击检测** 使用`hping3`发起测试攻击: ```bash hping3 --flood -1 目标IP # 发送ICMP洪水攻击[^4] ``` 通过`tcpdump`监控流量: ```bash tcpdump -i eth0 icmp and src 攻击者IP # 观察是否触发限速规则 ``` --- #### 四、进阶优化建议 1. **结合QoS限速** 使用`tc`工具对ICMP流量进行带宽限制: ```bash tc qdisc add dev eth0 root handle 1: htb tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit tc filter add dev eth0 protocol ip parent 1:0 u32 match ip protocol 1 0xff flowid 1:1 ``` 2. **联动日志监控** 记录被丢弃的ICMP包: ```bash sudo iptables -A INPUT -p icmp --icmp-type 8 -j LOG --log-prefix "ICMP Flood: " ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值