Eu conseguiria isso adicionando fontes a uma zona. Primeiro, verifique quais fontes existem para sua zona:
firewall-cmd --permanent --zone=public --list-sources
Se não houver nenhum, você pode começar a adicioná-los, esta é a sua "lista branca"
firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24
firewall-cmd --permanent --zone=public --add-source=192.168.222.123/32
(Isso adiciona um /24
inteiro e um IP único, apenas para que você tenha uma referência para uma sub-rede e um único IP)
Defina o intervalo de portas que você deseja abrir:
firewall-cmd --permanent --zone=public --add-port=1-22/tcp
firewall-cmd --permanent --zone=public --add-port=1-22/udp
Isso só faz as portas 1 a 22. Você pode ampliar isso, se quiser.
Agora, atualize o que você fez.
firewall-cmd --reload
E verifique seu trabalho:
firewall-cmd --zone=public --list-all
Nota / editorial: Não importa, mas gosto da zona "confiável" para um conjunto de IPs listado em branco no firewalld. Você pode fazer uma avaliação adicional lendo sugestões do redhat na escolha de uma zona .
Veja também:
- artigo do RHEL 7 usando firewalls
- documentos do Fedora FirewallD (muito bom, o fedora tem usado o firewalld por algum tempo)
Se você quiser DROP
pacotes fora dessa fonte, aqui está um exemplo para descartar aqueles que estão fora do /24
que eu usei como exemplo anteriormente, você pode usar regras ricas para isso , eu acredito. Isso é conceitual, eu não testei (além de ver que o centos 7 aceita o comando), mas, deve ser fácil o suficiente para fazer um pcap e ver se ele se comporta como você esperaria
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.100.0/24" invert="True" drop'