Linux防火墙规则如何编写_高频场景实战指导更易上手【指导】

2次阅读

nftable s 是推荐的 linux 新一代 防火墙 框架,遵循“先匹配、先执行、遇匹配即停止”逻辑;需设默认 DROP 策略,再按序添加 accept 规则,注意位置优先级,并及时保存与日志调试。

Linux 防火墙规则如何编写_高频场景实战指导更易上手【指导】

Linux防火墙 规则不难,关键在理解“先匹配、先执行、遇匹配即停止”的逻辑。用 iptablesnftables都行,但当前推荐nftables(替代 iptables 的新一代框架),语法更简洁、结构更清晰。下面直接按高频场景讲怎么写、怎么查、怎么防坑。

开放指定 端口(如 Web 服务)

只允许外部访问本机的 80 和 443端口,其他一律拒绝:

  • 先确保默认策略是 DROP(安全基线):nft add table inet Filternft add chain inet filter input {type filter hook input priority 0 ; policy drop ;}
  • 再添加放行规则:nft add rule inet filter input tcp dport {80, 443} accept
  • 注意:必须把 accept 规则加在 drop 策略之前,否则会被默认策略拦住

仅允许特定 IP 访问ssh(22 端口)

避免暴力破解,限制只有公司办公网(比如 192.168.10.0/24)能连 SSH:

  • nft add rule inet filter input ip saddr 192.168.10.0/24 tcp dport 22 accept
  • 如果还想保留本机自己连(lo接口),加一条:nft add rule inet filter input iifname "lo" accept
  • 别忘了最后加一条记录日志 + 丢弃的兜底规则:nft add rule inet filter input tcp dport 22 log prefix "SSH_BLOCKED: " drop

禁止某 IP 段访问全部服务

发现某个网段(如 203.0.113.0/24)频繁扫描,直接全封:

  • nft add rule inet filter input ip saddr 203.0.113.0/24 drop
  • 建议加在 input 链靠前位置(比如第 2 条),避免被其他 accept 规则绕过
  • 临时封禁可加 counter 方便观察效果:nft add rule inet filter input ip saddr 203.0.113.0/24 counter drop

保存与排查技巧(别重启就失效)

nftables 默认不持久化,重启后规则消失:

  • 保存当前规则:nft list ruleset > /etc/nftables.confdebian/ubuntu系需启用 nftables 服务)
  • 检查规则是否生效:nft list ruleset 或按链查:nft list chain inet filter input
  • 调试时加 log 规则最直观:nft add rule inet filter input log prefix "DEBUG_INPUT: " counter,然后 journalctl -u nftables -f 看日志
  • 误操作锁死 SSH?别慌——多数 云服务 器支持 VNC 或控制台登录,本地终端也建议提前开个 screen 会话留后门

基本上就这些。规则不在多,在准;不在复杂,在可读可维护。写完跑一遍 nft list 确认顺序,加个 log 观察几秒,心里就有底了。

站长
版权声明:本站原创文章,由 站长 2025-12-22发表,共计1307字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources