从内核协议栈参数、TCP 加固、IP 层防护、应用侧、边界防护、监测审计几个维度整理,偏向可落地的生产环境方案,兼顾 Linux 为主,附带通用原理。
一、Linux 内核 TCP/IP 协议栈安全调优(sysctl)
修改
/etc/sysctl.conf,sysctl -p生效
1. 防 SYN 洪水攻击(SYN Flood)
# 开启SYN cookie,半连接队列打满时启用
net.ipv4.tcp_syncookies = 1
# 增大半连接队列长度
net.ipv4.tcp_max_syn_backlog = 2048
# SYN+ACK重试次数,减少等待时间
net.ipv4.tcp_synack_retries = 2
注意:tcp_syncookies 开启后部分 TCP 选项会失效,正常业务不要一直依赖,优先配合防火墙限流。
2. 关闭 IP 源路由、重定向报文
# 禁止接收源路由包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 禁止ICMP重定向,防止路由劫持
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
3. ICMP 安全控制(防 Ping 扫描、Smurf 攻击)
# 忽略广播ping,防止Smurf
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 拒绝错误ICMP错误报文,防护恶意ICMP
net.ipv4.icmp_ignore_bogus_error_responses = 1
不建议直接完全禁 ping,会影响故障排查;可在防火墙限制 ping 源 IP。
4. TCP 连接超时加固,释放僵死连接
# TCP保持探测时间,单位秒
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
# FIN_WAIT2超时,快速关闭半关闭连接
net.ipv4.tcp_fin_timeout = 30
# 减少TIME_WAIT占用,高并发场景
net.ipv4.tcp_tw_reuse = 1
# 【谨慎】tcp_tw_recycle 不推荐开启,NAT环境会导致断连
net.ipv4.tcp_tw_recycle = 0
5. 端口与连接限制
# 本地端口范围,按需扩大
net.ipv4.ip_local_port_range = 1024 65000
# 全局最大文件句柄/连接数配套
net.core.somaxconn = 4096
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = "4096 87380 16777216"
net.ipv4.tcp_wmem = "4096 65536 16777216"

二、TCP 协议层面安全加固
禁用 TCP 时间戳劫持风险
net.ipv4.tcp_timestamps = 0利弊:关闭后可防止某些 TCP 序列号预测攻击;缺点是无法更好的 RTT 估算,高延迟业务谨慎。现代环境更推荐防火墙防护而不是直接关闭。
保护 TCP 序列号 Linux 默认序列号随机化,不要手动关闭
tcp_sequence相关随机算法。禁止 TCP SACK (可选,对抗某些 DoS)
net.ipv4.tcp_sack = 0代价:丢包场景传输性能下降,带宽高、丢包多业务不要关。
启用 TCP MD5 签名(BGP 等路由协议) 用于 TCP 会话校验,防止路由 TCP 会话劫持,普通业务很少使用。
三、IP 层安全优化
启用反向路径校验 rp_filter
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
严格模式(rp_filter=1):报文源 IP 从收到报文的网卡路由回去才放行;防 IP 欺骗。多网卡复杂路由场景可设为 2。
IP 转发最小化 服务器不是路由器:
net.ipv4.ip_forward = 0;只有网关 / 容器节点才开启。隔离 IP 分片 恶意大分片包可做 DoS,在 iptables/nftables 限制分片报文速率。
四、防火墙 / 边界防护(iptables /nftables)
最小权限原则:默认策略 DROP,只放行业务端口。
连接状态跟踪:
-m state --state RELATED,ESTABLISHED放行已有连接,拦截新建陌生入站。速率限制:对 SYN、ICMP、新建连接做限流,抵御端口扫描、CC、SYN 洪水。
阻止异常报文:拦截畸形 TCP 包(无 flag、FIN+SYN 等非法组合)。
# 示例:拦截非法TCP标志组合
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
限制源 IP:重要服务绑定白名单源地址。
五、应用层与业务侧 TCP 安全
启用 TLS 加密(HTTPS/TLS) TCP 本身明文,所有业务流量尽量 TLS,规避会话劫持、中间人嗅探;优先 TLS1.2/1.3,禁用 SSLv3、TLS1.0/1.1。
应用层连接管理
业务侧设置合理 SO_RCVBUF/SO_SNDBUF,不要无限扩大缓冲区(防内存耗尽 DoS)
业务代码设置读写超时,避免僵死连接占满文件句柄
服务端 backlog 不要设置过大,配合内核 somaxconn
端口暴露收敛 不要把数据库、内部 RPC 直接公网暴露;用 VPN、专线、跳板机。

六、监测与审计
监控指标:SYN 队列溢出、TIME_WAIT、半连接数量、重传率
工具:
ss、netstat、tcpdump、wireshark,内核日志dmesg看 TCP 错误入侵检测:IDS/IPS(Suricata)识别 TCP 端口扫描、异常连接、畸形报文
七、IPv6 配套安全(如有启用)
IPv6 同样要禁用源路由、限制 ICMPv6 类型(邻居发现防护)
开启 rp_filter 对应 ipv6 参数
防火墙同时管控 IPv6,不要只防护 IPv4
风险提醒(避坑)
参数调优是辅助防护,不能替代防火墙、WAF、应用安全;协议栈加固只能缓解网络层 DoS、IP 欺骗。
调优前做压测,
tcp_tw_recycle很多 NAT 环境会导致客户端无法建立连接,生产慎用。内核参数改动前备份配置,灰度验证。
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢