正如我在该主题的评论中所问的那样:使用 firewalld 阻止除少数 ips 之外的所有 ip
我正在寻找一种方法来拒绝除我在 firewalld 的公共区域上的所有公共 IP。
目前,我的公共区域只有 ssh/http/https 服务,并且我已经指定了整个 Internet 所需的源 IP。
问题是我不明白为什么 firewalld 没有按要求过滤源 IP?
通常,据我了解,指定源 IP 的区域会要求 Firewalld 丢弃所有请求,但来自指定 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:
这看起来像你的问题:
如果您为区域指定接口和源IP 地址,则该区域匹配来自接口或源 IP 地址的流量。
如果您希望区域仅匹配源 IP 地址,请从中删除接口。