Rejeitar host (não ip) usando firewalld / firewalld.richlanguage

1

É possível adicionar uma regra no linux firewalld para rejeitar um host inteiro (não o intervalo ip ou ip)?

Por exemplo, desejo rejeitar toda conexão vinda do my133y.org.

Usando a linguagem rica do firewall, posso descartar ip, mas a rejeição do host não é fornecida nas páginas man.

Exemplo para rejeitar o ip

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.100.4/24" drop'

quando modificado para:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="my133t.org" drop'

Eu recebi o erro:

Error: INVALID_ADDR: my133t.org
    
por Sameer 20.10.2018 / 10:43

1 resposta

4

A página man do firewall-cmd conta os fatos:

A source address or address range is either an IP address or a network IP address with a mask for IPv4 or IPv6 or a MAC address or an ipset with the ipset: prefix. For IPv4, the mask can be a network mask or a plain number. For IPv6 the mask is a plain number. The use of host names is not supported.

Há uma boa razão para isso. O firewalld é um filtro de pacotes. Ele compara o pacote com as regras que ele possui. O pacote IP tem endereço IP de origem e de destino, mas não o nome do host. Portanto, usar o host como um critério exigiria a coleta de informações adicionais de fontes adicionais, ou seja, o DNS do sistema de nomes de domínio . Essa implementação seria vulnerável a ataques de negação de serviço, pois seria fácil fazer com que seu servidor gerasse novo tráfego ao tentar filtrar os pacotes.

Além disso, embora seja fácil traduzir um nome de host para um endereço IP consultando A records no DNS, a detecção de todos os nomes de host de um endereço IP não é tão simples. Claro que um IP pode ter um registro PTR reverso, mas não é obrigatório nem confiável.

Por exemplo Algumas soluções gerenciamento unificado de ameaças (UTM) com filtros de conteúdo bloqueiam o tráfego HTTPS com base em nomes de host proibidos sem criptografar o tráfego TLS. Isso significa que ele não pode usar a URL, pois a solicitação HTTP e seu Host: header são criptografados: ela só vê o endereço IP, assim como o seu firewall. Em vez de filtrar o conteúdo, ele bloqueia todo o tráfego HTTPS para esse endereço IP, usando uma lista pré-buscada de endereços IP para esse nome de host. Isso é exatamente o que você deve fazer.

Se você realmente quiser usar nomes de host, precisará consultar os endereços IP primeiro. Digamos que você queira impedir que seus funcionários navegem em serverfault.com em suas preciosas horas de trabalho.

  1. dig +short serverfault.com
  2. Bloqueie os endereços IP destino .
  3. Repita isso em intervalos regulares, começando pela remoção das regras desatualizadas.
por 20.10.2018 / 11:57