使用iptables阻止DDoS攻击可以通过多种方式实现,以下是一些常见的方法:
通过限制每个IP地址的连接速率,可以防止大量的恶意连接。
# 限制每秒最多5个新连接
iptables -A INPUT -p tcp --syn -m limit --limit 5/s -j ACCEPT
# 限制每分钟最多300个新连接
iptables -A INPUT -p tcp --syn -m limit --limit 300/m -j ACCEPT
通过丢弃来自特定IP地址或端口的流量,可以减少攻击的影响。
# 丢弃来自特定IP地址的流量
iptables -A INPUT -s 192.168.1.100 -j DROP
# 丢弃特定端口的流量
iptables -A INPUT -p tcp --dport 80 -j DROP
SYN Cookies是一种防止SYN Flood攻击的技术,通过让内核在收到SYN包时生成一个cookie,而不是立即分配资源。
# 启用SYN Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
通过限制每个IP地址的最大连接数,可以防止大量的恶意连接。
# 限制每个IP地址最多10个连接
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 -j DROP
fail2ban是一个监控日志文件并根据规则禁止恶意IP地址的工具。
首先,安装fail2ban:
sudo apt-get install fail2ban
然后,配置fail2ban以监控特定的日志文件和端口。例如,监控SSH登录失败:
# 编辑fail2ban配置文件
sudo nano /etc/fail2ban/jail.local
# 添加以下内容
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
最后,重启fail2ban服务:
sudo systemctl restart fail2ban
IPset是一个集合工具,可以用来管理大量的IP地址,适用于阻止大量IP地址的攻击。
首先,安装IPset:
sudo apt-get install ipset
然后,创建一个IPset集合并添加需要阻止的IP地址:
# 创建IPset集合
sudo ipset create blacklist hash:ip
# 添加IP地址到集合
sudo ipset add blacklist 192.168.1.100
最后,使用iptables规则将IPset集合中的IP地址丢弃:
# 阻止IPset集合中的IP地址
iptables -I INPUT -m set --match-set blacklist src -j DROP
通过以上方法,可以有效地使用iptables阻止DDoS攻击。