使用iptables防范DDoS攻击可以采取以下几种策略:
通过限制每个IP地址的连接速率,可以防止恶意用户发起大量的连接请求。
# 限制每秒最多5个新连接
iptables -A INPUT -p tcp --syn -m limit --limit 5/s -j ACCEPT
# 限制每秒最多10个数据包
iptables -A INPUT -p tcp --syn -m limit --limit 10/s -j ACCEPT
通过丢弃无效或可疑的包,可以减少服务器的负载。
# 丢弃所有SYN-ACK包
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j DROP
# 丢弃所有ICMP包
iptables -A INPUT -p icmp -j DROP
限制对特定端口的访问,特别是那些常被DDoS攻击利用的端口(如80、443)。
# 限制对80端口的访问
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/s -j ACCEPT
# 限制对443端口的访问
iptables -A INPUT -p tcp --dport 443 -m limit --limit 10/s -j ACCEPT
SYN Cookies是一种防止SYN Flood攻击的技术,通过这种方式,服务器可以在不维护半连接表的情况下处理大量的SYN请求。
# 启用SYN Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
配置防火墙规则以阻止来自特定IP地址或IP范围的流量。
# 阻止来自特定IP地址的流量
iptables -A INPUT -s 1.2.3.4 -j DROP
# 阻止来自特定IP范围的流量
iptables -A INPUT -m iprange --src-range 1.2.3.4-1.2.3.5 -j DROP
Fail2Ban是一个入侵防御软件框架,可以监控日志文件并根据规则阻止恶意IP地址。
# 安装Fail2Ban
sudo apt-get install fail2ban
# 配置Fail2Ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
定期监控服务器的流量和日志文件,以便及时发现和响应DDoS攻击。
# 查看iptables规则
iptables -L -v -n
# 查看系统日志
tail -f /var/log/syslog
通过综合运用上述策略,可以有效地防范DDoS攻击,保护服务器的安全。