Linux系统基准安全配置核心是调整内核参数以加固网络层:关闭源路由与ICMP重定向防劫持,启用SYN Cookie并增大连接队列缓解SYN Flood,优化TIME_WAIT复用与超时管理,限制ICMP响应速率及conntrack表大小,所有修改须执行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” 提示,说明队列仍不够或未生效。
优化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,防止冲突 -
禁用
tcp_tw_recycle—— 该参数已在 4.12+ 内核移除,旧版开启会导致 NAT/负载均衡环境下连接随机失败,一律不配
观察指标:ss -s | grep -i "tw" 或读取 /proc/net/sockstat 中 tw 数量,持续高于 2 万需结合连接池、keepalive 等应用层优化。
限制ICMP与连接跟踪行为,减少信息泄露和资源耗尽
ICMP 不仅能被用于 Flood,还能暴露系统细节;conntrack 表满则新连接全部被丢弃,是 DDoS 中常见断点。
-
net.ipv4.icmp_ratelimit = 100—— 限制 ICMP 响应速率(单位:包/秒),比直接禁 ping 更合理,保留基础诊断能力 -
net.netfilter.nf_conntrack_max = 655360—— 根据内存适度调大 conntrack 表(例如 128GB 内存可设为 1310720) -
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30—— 缩短 TIME_WAIT 状态在 conntrack 中的超时,加快条目释放 -
net.ipv4.conf.all.rp_filter = 1—— 启用反向路径过滤(需确保路由对称),可拦截部分伪造源 IP 包
注意:nf_conntrack_max 过大会吃内存,建议不超过物理内存的 5%~10%;修改后可用 cat /proc/sys/net/netfilter/nf_conntrack_count 监控实时使用量。

















