直接改/etc/sysctl.conf不等于生效,必须执行sysctl -p加载;真正起作用的是内核行为调整而非堆参数,核心是关危险默认项、撑关键队列、加快异常连接释放、限制扫描与反射流量。

直接改 /etc/sysctl.conf 不等于生效,必须执行 sysctl -p 才能加载;真正起作用的是内核行为调整,不是堆参数。核心思路是:关掉危险默认项、撑住关键队列、加快异常连接释放、限制扫描与反射流量。
关闭源路由与ICMP重定向,防路径劫持
Linux 默认允许接收源路由包和 ICMP 重定向,攻击者可借此篡改流量路径或伪装网关。云服务器、Web 服务、API 网关等绝大多数场景都无需这些功能。
-
net.ipv4.conf.all.accept_source_route = 0—— 所有接口拒绝源路由包 -
net.ipv4.conf.all.accept_redirects = 0—— 拒绝 IPv4 重定向 -
net.ipv6.conf.all.accept_redirects = 0—— 同上,覆盖 IPv6 -
net.ipv4.conf.all.send_redirects = 0—— 本机不发送重定向,避免被用作反射源
若服务器处于复杂路由环境(如自建骨干网节点),需单独评估;普通业务服务器建议统一关闭。
加固TCP握手流程,缓解SYN Flood
SYN Flood 攻击本质是填满半连接队列,让正常连接无法进入。仅开 tcp_syncookies=1 不够,它只是“最后一道闸”,前提是队列本身得够大、响应得够快。
-
net.ipv4.tcp_syncookies = 1—— 必开,启用 SYN Cookie 保命机制 -
net.ipv4.tcp_max_syn_backlog = 65535—— 增大半连接队列(SYN-RECV 状态) -
net.core.somaxconn = 65535—— 同步调大全连接队列上限,避免应用层accept()卡住 -
net.ipv4.tcp_synack_retries = 3—— 减少 SYN-ACK 重传次数,加速丢弃伪造连接
验证方式:sysctl net.ipv4.tcp_max_syn_backlog net.core.somaxconn,确认值已更新;攻击初期若 dmesg 还出现 “Possible SYN flooding” 提示,说明队列仍不够或未生效。
禁用广播响应,切断Smurf类放大链路
攻击者常利用系统对广播地址(如 255.255.255.255 或子网广播)的 ICMP 响应实施 Smurf 放大攻击。仅靠防火墙拦截不够,必须从内核层面禁止回应。
-
net.ipv4.icmp_echo_ignore_broadcasts = 1—— 完全忽略目标为广播地址的 ping 包 -
net.ipv4.conf.all.rp_filter = 1—— 启用反向路径过滤,防源IP伪造包进入协议栈
临时生效:sudo sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1;永久生效:写入 /etc/sysctl.d/99-security.conf 并运行 sudo sysctl -p /etc/sysctl.d/99-security.conf。
优化TIME_WAIT管理,避免端口耗尽
高并发短连接场景下,大量 TIME_WAIT 会占满本地端口、拖慢新建连接。重点不是“回收”,而是“复用”和“释放”。
-
net.ipv4.tcp_tw_reuse = 1—— 允许 TIME_WAIT 套接字复用于主动发起的 outbound 连接(如服务器调第三方 API),安全且有效 -
net.ipv4.tcp_fin_timeout = 30—— 缩短 FIN_WAIT_2 超时,加快连接终结 -
net.ipv4.ip_local_port_range = "1024 65535"—— 扩大可用端口范围,最小值别低于 1024
注意:net.ipv4.tcp_tw_recycle 已在较新内核中废弃,且在 NAT 环境下极易引发连接失败,**严禁开启**。

















