核心是只允许外部主动发起的NEW连接进入指定服务端口,同时无条件放行ESTABLISHED和RELATED流量;先放行已建立与关联连接(iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT),再精准开放22、443等端口的NEW入口,最后用--ctstate INVALID -j DROP和-P INPUT DROP兜底,默认拒绝所有未明确允许的入站NEW包。

核心是只允许外部主动发起的 NEW 连接进入指定服务端口,同时无条件放行所有 ESTABLISHED 和 RELATED 流量——这样既保障合法会话持续通信,又杜绝反向入站通道。
先放行已建立与关联连接
这条规则必须排在最前面: iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 它让服务器能正常收到来自已发起连接的响应(如你 curl 外部 API 后返回的数据),也支持 FTP 数据连接、DNS 响应、ICMP 错误报文等依赖 RELATED 的场景。漏掉 RELATED 会导致很多协议功能异常。
再精准开放服务端口的 NEW 入口
只对明确需要对外提供服务的端口放行 NEW 状态包,例如: iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT 不加 -m conntrack --ctstate NEW 容易误放其他状态包;不加协议和端口限制则等于开放全部入站 NEW 流量,失去单向控制意义。
显式拦截无效连接并设默认拒绝
追加两条兜底防护: iptables -A INPUT -m conntrack --ctstate INVALID -j DROP iptables -P INPUT DROP INVALID 包通常是伪造、分片或连接跟踪失败的异常流量,直接丢弃可减少内核负担。默认策略设为 DROP 是安全基线,确保任何未被上述规则覆盖的入站 NEW 包一律被拦。
补充建议提升实战可靠性
- 管理IP优先白名单:用 iptables -I INPUT -s 203.0.113.42 -j ACCEPT 插入链首,避免配置失误锁死自己
- 对 NEW 连接加限速防暴力试探:-m conntrack --ctstate NEW -m limit --limit 5/minute --limit-burst 5 -j ACCEPT
- 确认连接跟踪已启用:cat /proc/sys/net/netfilter/nf_conntrack_enabled 返回 1 才有效
- 本地回环别遗漏:iptables -A INPUT -i lo -j ACCEPT 防止本机服务自断

















