我的专用服务器无法处理超过 4Mbits/s 的带宽。超过 4Mbits/s 之后,服务器就无法再 ping 通。我的提供商告诉我这是因为我的服务器配置不当。
当我查看日志(系统日志)时,我发现这可能是端口 8085 上的 syn 洪水攻击。因此,我配置了 iptable 来限制每个 IP 的连接数
iptables -I INPUT -p tcp -m connlimit --connlimit-above 50 -j REJECT --reject-with tcp-reset
和
iptables -A INPUT -p tcp --dport 8085 -m state --state NEW -m recent --name BLACKLIST --set iptables -A INPUT -p tcp --dport 8085 -m state --state NEW -m recent --name BLACKLIST --update --seconds 10 --hitcount 10 --rttl -j DROP
我激活了 syn cookie:
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
为确保万无一失,我安装了 fail2ban。但这个端口上的流量并不大……
有什么想法吗?谢谢
答案1
为了防止 syn flood,你最好使用如下 iptables 命令iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
这将对每秒的 syn 数量设置配额。超出配额的 syn 将被删除。
答案2
首先,我建议您进行数据包捕获,以了解网络上发生了什么。这还将为您提供一些数字,说明服务器正在获得多少连接以及这些连接来自何处。这应该可以帮助您确定是否受到攻击,以及在 IPTables 中设置哪些限制可能合适(如果需要设置)。
您之前是否体验过更大的服务器带宽?4 Mbit/s 确实很低,我认为您可能遇到了驱动程序问题,这导致了您遇到的问题。