如何让防火墙限制除指定 IP 地址之外的所有 IP 地址的访问?

如何让防火墙限制除指定 IP 地址之外的所有 IP 地址的访问?

非常感谢您对配置防火墙的帮助。以下是一些背景知识。我想要做的就是阻止所有访问 - 除了白名单 IP 地址之外,对在 https 上运行的 Web 应用程序进行访问。

我在谷歌上搜索了很多东西,学到了很多东西,但都没有用。以下是我所做的:

  1. 我可以告诉防火墙正在运行

    # systemctl status firewalld
    
    firewalld.service - firewalld - dynamic     firewall daemon    Loaded: loaded
    (/usr/lib/systemd/system/firewalld.service; enabled)    Active: active
    (running)
    

还有

    # firewall-cmd –state
    running
  1. 我有默认区域

    # firewall-cmd --get-zones
    block dmz drop external home internal public trusted work
    
  2. 我的活动区域包括:

    # firewall-cmd --get-active-zones
    public
    sources: 192.72.0.193 192.72.0.0/22 94.27.256.190
    
  3. 我的默认区域是公共的:

    # firewall-cmd --get-default-zone
    public
    
  4. 公开详情如下:

    public (default)   
    interfaces:   
    sources: 192.72.0.193 192.72.0.0/22 94.27.256.190   
    services: http https ssh   
    ports:   
    masquerade: no   
    forward-ports:   
    icmp-blocks:   
    rich rules:
    

我的理解是,上述公共区域的配置将限制仅授予来自任何指定 IP 地址的请求。但是,当我尝试访问https://www.example.com来自列表之外的 IP,则允许它。

答案1

一个选项是从区域中删除服务:https

firewall-cmd --zone=public --remove-service=https

然后使用所谓的丰富规则来指定哪些源 [IP 地址] 可以访问哪些服务 [例如 http 和 https],如下所示:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="x.x.x.0/24" service name="https" log prefix="https" level="info" accept'

可能需要重新加载

相关内容