正如我在这个主题的评论中问到的那样:使用firewalld 封锁除少数 IP 之外的所有 IP
我正在寻找一种方法来拒绝防火墙公共区域上除我的 IP 之外的所有公共 IP。
目前,我的公共区域只有 ssh/http/https 服务,并且我已指定整个互联网所需的源 IP。
问题是我不明白为什么 Firewalld 没有按照要求过滤源 IP?
通常,据我所知,指定区域源 IP 会要求 Firewalld 丢弃除来自指定 IP 的请求之外的所有请求。
但是在我的机器上它不工作,因为我能够从家里连接机器,但它不是指定的源 IP 之一。
有人建议创建一个名为“内部/其他”的新区域,问题是我只有一个公共接口,因为服务器不在私有局域网上,所以我为什么要创建/使用另一个区域,因为公共区域应该删除除源列表中指定的 IP 之外的所有 IP。
Firewalld Public zone 是否会自动将添加到其中的服务向全世界开放?
如果我创建第二个名为 internal 的区域,其中仅包含 ssh 服务和源 IP,然后将此区域链接到我的 eth0,firewalld 会阻止所有非“源”IP 吗?
当然,执行这样的过程将假设我从公共区域服务中删除 ssh 服务。
我的防火墙是:
[root@groot ~]# firewall-cmd --list-all-zones
block
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
dmz
interfaces:
sources:
services: ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
drop (default)
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
external
interfaces:
sources:
services: ssh
ports:
masquerade: yes
forward-ports:
icmp-blocks:
rich rules:
home
interfaces:
sources:
services: dhcpv6-client ipp-client mdns samba-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
internal (active)
interfaces: eth0
sources: 192.168.0.0/24
services: ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
public
interfaces:
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
trusted
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
work
interfaces:
sources:
services: dhcpv6-client ipp-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
答案1
这看起来像你的问题:
internal (active)
interfaces: eth0
sources: 192.168.0.0/24
如果您指定两个都接口和区域的源 IP 地址,则该区域匹配来自任何一个界面或者源 IP 地址。
如果您希望区域仅匹配源 IP 地址,请从中删除接口。