一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

怎样通过 iptables 防火墙设置 Linux 入站访问过滤规则

时间:2026-07-02 10:16:45 编辑:袖梨 来源:一聚教程网

iptables设置入站规则核心是合理配置INPUT链,默认策略设为DROP、优先放行lo和ESTABLISHED连接、按需开放端口、最后持久化保存。

直接设置入站访问过滤规则,核心是控制 INPUT 链的流量走向。关键不在“加多少条”,而在于顺序、默认策略和状态匹配是否合理。下面分四块说清楚:

先设默认拒绝策略

不设默认策略,所有规则都可能失效。执行以下命令,让 INPUT 和 FORWARD 链默认丢弃所有未明确允许的入站包:

  • sudo iptables -P INPUT DROP
  • sudo iptables -P FORWARD DROP
  • OUTPUT 一般保持 ACCEPT(sudo iptables -P OUTPUT ACCEPT),确保本机可正常发请求

注意:这条命令要最先执行,否则后续添加的 ACCEPT 规则可能被隐式放行覆盖。

必须放行的基础连接

设了 DROP 后,连 SSH 都连不上——所以得立刻补上两条保命规则:

  • 本地回环通信:sudo iptables -A INPUT -i lo -j ACCEPT
  • 已建立/关联连接:sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

这两条放在最前(用 -A 追加即可,因默认策略在链首生效,它们实际排在 DROP 前面),保证你不会被锁在服务器外。

按需开放服务端口

只开真正需要的端口,避免宽泛放行。常用写法:

  • SSH(限制来源更安全):sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
  • HTTP/HTTPS:sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
  • 自定义端口(如 8080):sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

如果只给特定 IP 访问某端口,把 -s x.x.x.x 加在对应规则里即可;不要用 -j ACCEPT 放行整个网段,除非真有必要。

保存规则并验证

iptables 规则重启即失效,必须持久化:

  • Debian/Ubuntu 系统:sudo netfilter-persistent save(需先安装 iptables-persistent
  • CentOS/RHEL:sudo service iptables savesudo iptables-save > /etc/sysconfig/iptables

验证是否生效:

  • 查规则列表:sudo iptables -L -n --line-numbers
  • 看计数是否增长:sudo iptables -L -v -n(观察 pkts 列)
  • 测试端口连通性(从另一台机器 telnet 或 curl)

热门栏目