在Debian系统中,使用iptables来防止SYN攻击是一种常见的做法。SYN攻击是一种拒绝服务(DoS)攻击,攻击者通过发送大量的SYN请求来耗尽服务器的资源,导致合法用户无法建立连接。以下是一些使用iptables防止SYN攻击的方法:
SYN Cookies是一种防御SYN攻击的技术,它通过在服务器端不立即分配资源,而是在收到客户端的ACK确认后再分配资源。
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
为了使这个设置在系统重启后仍然有效,可以将其添加到/etc/sysctl.conf
文件中:
net.ipv4.tcp_syncookies = 1
然后运行以下命令使设置生效:
sysctl -p
可以使用iptables的limit
模块来限制SYN请求的速率。
# 限制每秒最多10个SYN请求
iptables -A INPUT -p tcp --syn -m limit --limit 10/s -j ACCEPT
# 超过限制的SYN请求将被丢弃
iptables -A INPUT -p tcp --syn -j DROP
conntrack
模块conntrack
模块可以帮助跟踪连接状态,并在检测到异常时采取措施。
# 限制每个IP地址的SYN请求数量
iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -m limit --limit 5/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
可以配置更详细的防火墙规则来防止SYN攻击。
# 允许已建立的连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 允许本地回环接口的流量
iptables -A INPUT -i lo -j ACCEPT
# 允许SSH连接(假设SSH端口是22)
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
# 丢弃所有其他输入流量
iptables -A INPUT -j DROP
fail2ban
fail2ban
是一个入侵防御软件框架,可以监控日志文件并根据配置的规则封禁恶意IP地址。
首先,安装fail2ban
:
sudo apt-get install fail2ban
然后,配置fail2ban
来监控SSH登录失败日志并封禁恶意IP地址:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
在jail.local
文件中添加以下内容:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
保存并退出编辑器,然后启动fail2ban
服务:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
通过以上方法,可以有效地使用iptables和fail2ban来防止SYN攻击,保护Debian系统的安全。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: debian安装casaos需要啥条件