linux认证端口ddos防护核心是稳住连接入口、压住半开队列、避免攻击卡死内核:需统一设置tcp_max_syn_backlog与somaxconn为65535,启用tcp_syncookies=1,调低tcp_synack_retries=3;配合iptables对22/1812/389等端口限速,并禁用tcp_tw_recycle和低ip_local_port_range。

新手配置Linux网络协议栈防认证端口DDoS,核心是“稳住连接入口、压住半开队列、不让攻击包卡死内核”。重点不是调一堆参数,而是把SYN处理链路的关键几处设对——尤其针对SSH(22)、RADIUS(1812/1813)、LDAP(389/636)这类认证服务端口。
先确认当前状态,别盲目改
执行以下命令,看关键参数是否还在默认低值(很多发行版仍用1024甚至128):
- sysctl net.ipv4.tcp_max_syn_backlog net.core.somaxconn —— 这两个必须一致,且不能低于4096;生产环境建议统一设为65535
- sysctl net.ipv4.tcp_syncookies —— 必须为1(仅在队列溢出时启用,安全可靠);设成2会绕过队列检查,掩盖真实压力
- sysctl net.ipv4.tcp_synack_retries —— 建议改为3(默认5),加快释放异常SYN-RECV状态,减少资源滞留
只改/etc/sysctl.conf还不够,必须生效
编辑/etc/sysctl.conf后,光保存没用。必须执行:
- sudo sysctl -p —— 立即加载配置
- 验证是否生效:sysctl net.ipv4.tcp_max_syn_backlog 输出应与你写的值一致
- 若用systemd,也可检查/etc/sysctl.d/下是否有冲突文件(如99-sysctl.conf被覆盖)
配套iptables规则,专盯认证端口
光调内核不够,得配合防火墙限速。以SSH(端口22)为例:
- 限制每IP每秒最多3个新连接:
sudo iptables -A INPUT -p tcp --dport 22 --syn -m limit --limit 3/s --limit-burst 6 -j ACCEPT - 超出即丢弃:
sudo iptables -A INPUT -p tcp --dport 22 --syn -j DROP - 保存规则(CentOS/RHEL):sudo service iptables save;Ubuntu/Debian用sudo iptables-save > /etc/iptables/rules.v4
禁用危险选项,避免雪上加霜
新手常被旧文档误导,以下两项绝对不要开:
- net.ipv4.tcp_tw_recycle = 1 —— 已从主流内核移除,旧版本开启会导致NAT环境下连接随机失败(比如公司出口、云负载均衡后所有用户掉线)
- net.ipv4.ip_local_port_range最小值别设低于1024 —— 否则可能和sshd、radiusd等服务端口冲突,引发绑定失败
不复杂但容易忽略:改完记得用ss -s观察SYNs和tw数量变化,再模拟少量并发连接测试服务是否仍可正常认证。稳定比激进更重要。











