![Firewalld:限制特定 IP 的 ssh 访问,并允许该 IP 访问接口区域中的服务](https://linux22.com/image/790171/Firewalld%EF%BC%9A%E9%99%90%E5%88%B6%E7%89%B9%E5%AE%9A%20IP%20%E7%9A%84%20ssh%20%E8%AE%BF%E9%97%AE%EF%BC%8C%E5%B9%B6%E5%85%81%E8%AE%B8%E8%AF%A5%20IP%20%E8%AE%BF%E9%97%AE%E6%8E%A5%E5%8F%A3%E5%8C%BA%E5%9F%9F%E4%B8%AD%E7%9A%84%E6%9C%8D%E5%8A%A1.png)
目标设置如下:我想将对服务器的 ssh 访问限制为特定 IP,并允许所有人使用 http 服务。现在,为了从“头”开始,我定义了一个新区域,我将其称为“自定义”,并将其设置为默认区域。这是它的当前状态:
custom (active)
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: http
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
为了仅允许 192.168.122.1 IP 访问 SSH 服务,我创建了另一个区域,称为“limited-ssh”:
limited-ssh (active)
target: default
icmp-block-inversion: no
interfaces:
sources: 192.168.122.1
services: ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
这些接口是唯一活动的接口:
custom
interfaces: enp1s0
limited-ssh
sources: 192.168.122.1
虽然这有效,但从只有指定 IP 能够通过 ssh 进入机器的意义上讲,同一个 IP 无法访问 http 服务。我猜是因为“源”区域在“接口”区域之前处理。我如何限制 SSH 访问和允许该 IP 访问 HTTP 服务(以及“自定义”区域中的所有其他服务)?我应该使用直接规则吗?我假设如果我将 http 服务添加到有限 ssh 区域,它会起作用,但它会重复并且很快就会变得一团糟。