iptables防止ddos(cc)
基本上发行版都是自带的,轻量级,不需要额外下载
Fail2Ban也可以但是需要额外下载
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
参数 作用
-I INPUT 将规则插入到 INPUT 链的最前面
-p tcp --dport 80 匹配目标端口为 80 的 TCP 流量
-m state --state NEW 仅匹配 新建连接(如 TCP 的 SYN 包)
-m recent --set 将来源 IP 记录到 recent 模块的默认列表(/proc/net/xt_recent/DEFAULT)iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 100 -j DROP
参数 作用
-m recent --update --seconds 60 --hitcount 100 检查 IP 在 60 秒内是否发起超过 100 次新连接
-j DROP 若超限,直接丢弃数据包
效果图,到指定次数自动丢弃数据包,端口不通,到达指定时间自动恢复


经过测试 --hitcount 大于20 会报错

解决办法
echo options xt_recent ip_pkt_list_tot=200 > /etc/modprobe.d/xt.conf
modprobe -r xt_recent && modprobe xt_recent 重新加载
查看 lsmod |grep xt ;cat /sys/module/xt_recent/parameters/ip_pkt_list_tot 对应 xt.conf
额外补充
若其他规则也使用 recent 默认列表,可能导致误判,可以通过--name 指定名称分类
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name HTTP_CC
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 --name HTTP_CC -j DROP
则 /proc/net/xt_recent/HTTP_CC 叫 HTTP_CC
额外更新

iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1
iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.2
iptables -A FORWARD -j ACCEPT && net.ipv4.ip_forward = 1
MASQUERADE 只能 POSTROUTING
DNAT 只能 PREROUTING/OUTPUT
SNAT 只能 INPUT/POSTROUTING
选 项 功 能
-A 添加防火墙规则
-D 删除防火墙规则
-I 插入防火墙规则
-F 清空防火墙规则
-L 列出添加防火墙规则
-R 替换防火墙规则
-Z 清空防火墙数据表统计信息
-P 设置链默认规则
iptables 命令常用匹配参数及各自的功能如表 3 所示。
参 数 功 能
[!]-p 匹配协议,! 表示取反
[!]-s 匹配源地址
[!]-d 匹配目标地址
[!]-i 匹配入站网卡接口 INPUT/POSTROUTING
[!]-o 匹配出站网卡接口 PREROUTING/OUTPUT
[!]--sport 匹配源端口
[!]--dport 匹配目标端口
[!]--src-range 匹配源地址范围
[!]--dst-range 匹配目标地址范围
[!]--limit 四配数据表速率
[!]--mac-source 匹配源MAC地址
[!]--sports 匹配源端口
[!]--dports 匹配目标端口
[!]--stste 匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
[!]--string 匹配应用层字串
iptables 命令触发动作及各自的功能如表 4 所示。
触发动作 功 能
ACCEPT 允许数据包通过
DROP 丢弃数据包
REJECT 拒绝数据包通过
LOG 将数据包信息记录 syslog 曰志
DNAT 目标地址转换
SNAT 源地址转换
MASQUERADE 地址欺骗
REDIRECT 重定向
第一种情况:入站数据流向
从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包 的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通 过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。
第二冲情况:转发数据流向
来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网 关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地 址等)进行处理。
第三种情况:出站数据流向
防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。
只要是来自于172.16.0.0/16网段的都允许访问我本机的172.16.100.1的SSHD服务
定义进来的: iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 22 -j ACCEPT
定义出去的: iptables -t filter -A OUTPUT -s 172.16.100.1 -d 172.16.0.0/16 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -d 192.168.1.100:
-
- 这个命令将一条规则添加到
INPUT链,表示它针对的是进入本机的流量(即发往本机的流量)。 -d 192.168.1.100指定目标地址为192.168.1.100。这条规则会匹配所有发送到192.168.1.100的流量。
- 这个命令将一条规则添加到
iptables -A OUTPUT -d 192.168.1.100:
-
- 这个命令将一条规则添加到
OUTPUT链,表示它针对的是离开本机的流量(即从本机发出的流量)。 -d 192.168.1.100指定目标地址为192.168.1.100。这条规则会匹配所有从本机发往192.168.1.100的流量
- 这个命令将一条规则添加到
更多推荐

所有评论(0)