You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

UFW防火墙规则异常排查:配置特定IP允许80/443端口后仍放行任意IP访问

UFW防火墙规则异常排查:配置特定IP允许80/443端口后仍放行任意IP访问

兄弟,我看了你贴的UFW规则,马上就发现几个可能导致问题的点,咱们一步步来排查和解决:

问题根源分析

首先,UFW的规则是从上到下顺序匹配,只要命中一条规则就会停止后续判断,但更关键的是你的默认入站策略——如果默认策略是ALLOW,那所有没被明确拒绝的流量都会被放行,这很可能就是你80/443端口还能被任意IP访问的核心原因。另外你手动加的80/tcp443/tcp拒绝规则其实有点多余,甚至可能因为协议匹配的问题造成混乱。

修复步骤(最稳妥的方式:重置后重新配置)

我建议你先清空现有规则,重新按规范配置,避免旧规则的干扰:

  1. 重置UFW清除所有规则
    先备份一下现有规则(可选),然后执行重置:

    ufw reset
    

    这个命令会清空所有规则,恢复到初始状态。

  2. 设置安全的默认策略
    把入站默认策略设为拒绝(所有未被允许的流量都进不来),出站默认设为允许(服务器正常对外请求不受影响):

    ufw default incoming deny
    ufw default outgoing allow
    
  3. 添加需要允许的规则
    按需求添加允许特定IP访问的规则,顺序不影响(因为默认是拒绝,只有明确允许的才放行):

    • 允许指定IP访问SSH(22端口):
      ufw allow from 37.*.*.* to any port 22
      ufw allow from 192.46.*.* to any port 22
      
    • 允许192.46.*.*段访问80和443端口:
      ufw allow from 192.46.*.* to any port 80
      ufw allow from 192.46.*.* to any port 443
      
  4. 启用UFW并验证规则
    启用防火墙:

    ufw enable
    

    然后查看规则列表:

    ufw status numbered
    

    这时你应该能看到只有你添加的几条允许规则,没有多余的拒绝规则,此时除了你指定的IP,其他所有IP访问80、443、22之外的端口都会被拒绝,80和443也只有192.46.*.*能访问。

为什么原来的规则不生效?

回头看你原来的规则,主要问题可能是:

  • 默认入站策略是ALLOW,导致即使你加了拒绝80/tcp的规则,那些没被规则覆盖的流量(比如协议不匹配的,或者规则顺序问题)还是会被默认放行;
  • 你同时添加了无协议的80允许规则和80/tcp的拒绝规则,虽然逻辑上没问题,但容易造成混淆,不如直接用默认拒绝策略来简化配置。

备注:内容来源于stack exchange,提问作者Rick Roy

火山引擎 最新活动