Bloquear conexões de saída no RHEL7 / CentOS7 com firewalld?


12

O RHEL7 / CentOS7 apresenta um novo firewalldserviço de firewall, que substitui o iptables service(que usa a iptablesferramenta para interagir com o Netfilter do kernel abaixo).

firewalldpode ser facilmente ajustado para bloquear o tráfego de entrada, mas, como observado por Thomas Woerner há 1,5 anos, "limitar o tráfego de saída não é possível com o firewalld de uma maneira simples no momento". E, tanto quanto posso ver, a situação não mudou desde então. Ou tem? Existe alguma maneira de bloquear o tráfego de saída firewalld? Caso contrário, existem outras maneiras "padrão" (na distribuição RHEL7) de bloquear o tráfego de saída, exceto adicionar regras manualmente através da iptablesferramenta?

Respostas:


11

Não encontrei nenhuma opção nessa interface gráfica agradável, mas é possível via interface direta

Para habilitar apenas a porta de saída 80:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP

Isso o adicionará às regras permanentes, não às regras de tempo de execução.
Você precisará recarregar regras permanentes para que elas se tornem regras de tempo de execução.

firewall-cmd --reload

exibir regras permanentes

firewall-cmd --permanent --direct --get-all-rules

exibir regras de tempo de execução

firewall-cmd --direct --get-all-rules

Como alguém consegue isso usando a linguagem de regras ricas real?
— Casey #

@ Casey Pelo meu entendimento, regras ricas são estritamente usadas para cadeias de ENTRADA.
— Rice

Presumo que as regras acima funcionem apenas para ipv4(iptables). Pode ser desejável ter regras semelhantes para ipv6(para ip6tables) ou eb(para ebtables).
— Mwfearnley 29/04/19

Além disso, isso matou minha conexão SSH com o servidor! Consulte a resposta do usuário253068 para saber como manter as conexões estabelecidas.
— Mwfearnley 29/04/19

5

Depois de me fazer a mesma pergunta, e com alguns ajustes, reuni algumas boas regras para restringir o tráfego de saída às consultas HTTP / HTTPS e DNS:

Permitir conexões estabelecidas:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Permitir HTTP:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT

Permitir HTTPS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT

Permitir consultas DNS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT

Negue tudo o mais:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

Pode ser uma boa ideia testar primeiro, omitindo o argumento '--permanent'.

Eu não sou um especialista, mas isso parece funcionar bem por mim :)


Em algum momento, você pode achar útil remover as regras. A remoção de regras diretas únicas parece complicada, mas para uma marreta, firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTserá possível remover em massa.
— Mkfearnley

1

Em relação à GUI; Eu acho que você encontra isso em " Configuração direta ". Para acessá-lo, você deve selecioná-lo em " Visualizar ". Eu poderia estar errado.

Nota

Excluir regras; você precisa sair e entrar novamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.