Mesmo que uma resposta tenha sido aceita e aprovada, não acho que seja correta. Não consigo encontrar uma explicação clara na documentação, mas, a partir do comportamento implementado, é assim:
- interface e fonte são usados como seletores - em quais zonas ativar
- ambos são ignorados para a zona padrão (sempre ativa)
Então a resposta seria:
- bloquear a zona padrão, dizer "público" - nenhuma porta aberta ou serviços disponíveis
- em outra zona, diga "trabalho" - defina portas de origem e abertas
Por exemplo, supondo que a zona padrão seja pública e não tenha portas abertas, adicione a fonte e o intervalo de portas à zona "trabalho":
$ sudo firewall-cmd --zone=work --add-source=192.168.0.0/24
$ sudo firewall-cmd --zone=work --add-port=8080-8090/tcp
agora verifique as zonas ativas (a zona padrão está sempre ativa):
$ sudo firewall-cmd --get-active-zones
você terá:
work
sources: 192.168.0.0/24
portanto, as regras da zona "trabalho" serão aplicadas à sub-rede específica. Você terá um intervalo de portas abertas para a "lista branca" = sub-rede, conforme solicitado. E é claro, use a --permanent
opção em--add-xxx
declarações para manter o comportamento.
Por sua vez, todas as portas ou serviços que você possui na zona "pública" (padrão) serão aplicadas a todas as interfaces e endereços de origem.
$ sudo firewall-cmd --list-all-zones
public (default)
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
work (active)
interfaces:
sources: 192.168.0.0/24
services: dhcpv6-client ipp-client ssh
ports: 8080-8090/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
O mesmo sistema funciona para interfaces. Diga adicionando a interface "ens3" à zona "work":
$ sudo firewall-cmd --zone=work --add-interface=ens3
você usará as regras de zona "trabalho" para todas as solicitações da interface específica - seletor mais áspero do que "origem".