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?

golem
fonte

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
Usuário do Fedora
fonte
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 :)

Adobe
fonte
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.

user301864
fonte