利用 CentOS 的 iptables 防止 DDoS 攻击可以通过多种方式实现,包括限制连接速率、阻止可疑 IP 地址以及实施其他安全措施。以下是一些常见的方法:
通过限制每个 IP 地址在一定时间内的连接数,可以有效防止 DDoS 攻击。
# 限制每分钟最多5个新连接
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 5 -j DROP
如果你有已知的攻击源 IP 地址,可以直接将它们加入黑名单。
# 阻止特定 IP 地址
iptables -A INPUT -s 1.2.3.4 -j DROP
iptables 的 recent 模块recent 模块可以用来跟踪连接,并根据规则对连接进行操作。
# 阻止在短时间内多次尝试连接的 IP
iptables -A INPUT -p tcp --syn -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --syn -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
限制对某些端口的访问,尤其是那些常被攻击的端口(如 80、443)。
# 限制对端口 80 和 443 的访问速率
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 100 -j DROP
iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 100 -j DROP
SYN Cookies 可以帮助防御 SYN Flood 攻击。
# 启用 SYN Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
确保在系统重启后规则仍然有效。
# 保存 iptables 规则
service iptables save
定期检查 iptables 日志,监控异常流量。
# 查看 iptables 日志
tail -f /var/log/messages | grep iptables
Fail2Ban 是一个更高级的工具,可以自动检测并禁止恶意 IP 地址。
# 安装 Fail2Ban
yum install fail2ban -y
# 启动 Fail2Ban 服务
service fail2ban start
# 配置 Fail2Ban
# 编辑 /etc/fail2ban/jail.local 文件,添加自定义规则
通过结合使用这些方法,你可以显著提高 CentOS 系统对 DDoS 攻击的防御能力。