Eu faria 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, você poderá começar a adicioná-los. Esta é sua "lista de permissões"
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
IP inteiro e um ú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 apenas executa as portas 1 a 22. Você pode ampliar isso, se desejar.
Agora, recarregue o que você fez.
firewall-cmd --reload
E verifique seu trabalho:
firewall-cmd --zone=public --list-all
Nota lateral / editorial: Não importa, mas eu gosto da zona "confiável" para um conjunto de IPs listados em branco no firewalld. Você pode fazer uma avaliação adicional lendo as sugestões da redhat sobre como escolher uma zona .
Veja também:
Se você gostaria de DROP
pacotes fora desta fonte, aqui está um exemplo para descartar aqueles fora do que /24
eu usei como exemplo anteriormente, você pode usar regras valiosas para isso , 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'
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:
Então a resposta seria:
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":
agora verifique as zonas ativas (a zona padrão está sempre ativa):
você terá:
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.
O mesmo sistema funciona para interfaces. Diga adicionando a interface "ens3" à zona "work":
você usará as regras de zona "trabalho" para todas as solicitações da interface específica - seletor mais áspero do que "origem".
fonte
sources
lista de permissões. O motivo foi que a zona tinha uma interface atribuída.public
zona, se houver algum (esses serviços estarão disponíveis para todos os endereços, pois as interfaces são atribuídas àpublic
zona por padrão). Ou mude a zona padrão para outra:block
oudrop
(essa é uma prática comum). Ou mude opublic
destino da zona para%%REJECT%%
ouDROP
.Isenção de responsabilidade: Na verdade, eu não tentei o que estou sugerindo aqui, mas é bastante próximo da última configuração de firewall que eu fiz, então vou desistir disso. O Firewalld fornece algumas zonas pré-configuradas, apenas para essa finalidade. Há um chamado "drop", que descarta qualquer coisa que entra, e um chamado "confiável", que permite qualquer conexão (ou seja, você não precisa nem abrir portas individuais, eu acho). O truque é conseguir a zona certa para acionar o que você deseja.
O Firewalld aplicará as regras para uma zona com base na seguinte precedência:
Portanto, primeiro, você deseja vincular seus IPs confiáveis à zona "confiável":
Em seguida, defina sua zona padrão como "drop" ou vincule sua interface a ela:
e faça as alterações entrarem em vigor (aviso: isso provavelmente interromperá sua conexão se você estiver fazendo isso pela rede e não tiver adicionado o IP de origem à zona confiável):
Obviamente, você também pode testá-las temporariamente, omitindo o "--permanent" (e também não precisa - recarregar).
fonte
block
também pode ser usado (em vez dedrop
) se você quiser dizer às outras máquinas que você não está falando com eles ....Eu opero meus firewalls dessa maneira. Aqui está o meu método preferido para realizar o que você deseja.
Você verá que sua zona padrão é pública e os serviços ativados são dhcpv6-client e ssh. Não queremos serviços públicos disponíveis, certo? Somente os IPs da lista de permissões estão autorizados. Então, vamos remover os dois serviços públicos.
Agora, vamos colocar na lista branca um IP específico que conceda acesso a qualquer porta.
Agora, vamos adicionar outro IP à lista de permissões, que queremos apenas ter acesso ao acesso SSH, http e https. Nenhuma outra porta.
Se você estiver se conectando via SSH, certifique-se de autorizar seu IP antes de aplicar seu novo conjunto de regras. Quando estiver pronto para aplicar as novas regras.
fonte
Você pode gerenciar facilmente pelo Rich Rule.
Primeiro passo
Segunda etapa - Adicionar regra rica
Toda porta é acessível por 192.168.2.2 depois de adicionar uma regra avançada e bloquear todas as portas de outra origem.
Se você adicionar qualquer porta ou serviço pelo comando abaixo, ele será acessível por todas as fontes.
Se você deseja abrir uma porta específica para o comando Ip than than below
fonte
A resposta principal da dougBTV está errada. Não consigo responder à resposta dele porque ainda não tenho os pontos de representante necessários, por isso vou explicar aqui:
Ele está usando a zona padrão "public". Ele está amarrando redes a essa zona e, em seguida, abrindo portas nessa zona. Mas, em uma configuração padrão, todo o tráfego passa pela zona padrão, não apenas pelas redes de origem que você vincula a ela. Portanto, seus comandos --add-source não fazem diferença e seus comandos --add-port agora permitem que o mundo inteiro acesse essas portas.
A segunda resposta de Normunds Kalnberzins está correta. Você deseja criar uma zona separada, vincular sua rede / IP a essa zona e abrir as portas nessa zona.
Como alternativa, você pode deixar tudo na zona padrão e usar as regras avançadas do firewalld para permitir o acesso de determinados IPs:
Isso permite todo o tráfego de 192.168.2.2 para todas as portas e, como eu não especifiquei uma zona, ela será aplicada à zona padrão "public" (use --get-default-zone para verificar qual é sua zona padrão e - obter zonas ativas para ver quais zonas estão em uso no momento).
Para permitir o acesso desse IP apenas a uma porta específica, eu faria:
A melhor prática é executar esses comandos sem --permanent (ou --perm for short) que afeta o firewall atualmente em execução. Após testar se sua regra está funcionando, execute-a novamente com --perm anexado para que seja lembrado nas recargas subsequentes do firewalld.
fonte
Apenas para adicionar à resposta de Normunds:
Para bloquear todo o outro tráfego:
Aviso: se você acessar da máquina remota, isso poderá desconectar sua sessão de login. Se você não obteve a configuração IP da zona 'trabalho' corretamente, não poderá se conectar ao seu servidor.
Para recarregar o firewall:
Não consegui descobrir como adicionar dois IPs diferentes com '--add-rich-rule'.
fonte
ipset
comofirewall-cmd --permanent --new-ipset=blacklist --type=hash:ip
ips adicionar aos ipset comfirewall-cmd --ipset=blacklist --add-entry=192.168.1.4
então você pode usarfirewall-cmd --add-rich-rule='rule source ipset=blacklist drop'
Estou surpreso que as respostas da zona confiável não sejam a resposta selecionada. A zona confiável tem um "destino: ACEITAR" padrão, enquanto o restante é "destino: padrão". Embora realmente não importe, parece ser o método pretendido devido ao seu nome e valor-alvo padrão.
Como bloquear rapidamente uma caixa para que somente você possa acessá-la:
Depois de listar todas as zonas, você deverá ver algo assim:
Nota: removi linhas com um valor nulo / ausente. O importante é que confiável e drop são ativos (ativos) e drop possui sua interface pública.
O que isso faz com o iptables para demonstração:
fonte