O IPTables pode bloquear o tráfego de saída usando referência de subdomínio de caractere curinga?

1

Eu gostaria de bloquear todo o tráfego de saída para qualquer domínio ou subdomínio usando o IPTables. Parece que a opção -d permite referenciar um domínio. Eu encontrei o seguinte através de uma pesquisa no Google que sugere que pode ser referenciado desta forma: Permitir o tráfego HTTP apenas para domínio (s) específico (s)

Da mesma forma, podemos usar o método acima para filtrar outras portas e protocolos também, como tráfego padrão da web operando na porta 80 do tcp.

iptables -I FORWARD 1 -p tcp -d dd-wrt.com --dport 80 -j ACCEPT
iptables -I FORWARD 2 -p tcp --dport 80 -j DROP

O qual aceitaria todo o tráfego HTTP para dd-wrt.com, bloqueando o tráfego HTTP de saída para qualquer outro lugar. Se você deseja permitir vários sites, insira regras adicionais antes do DROP (certificando-se de pedir e numerá-las corretamente).

No entanto, o que eu gostaria de fazer é referenciar * .domain.com (por exemplo, bloquear todo o tráfego de saída para * .youtube.com ou similar).

Alguém sabe se isso é possível e, em caso afirmativo, qual é a sintaxe da opção -d no IPTables para suportar um subdomínio curinga?

    
por user1503091 08.03.2013 / 19:32

1 resposta

4

A resolução de DNS no IPtables é um pouco engraçada. No tempo de execução, o firewall atua somente no endereço IP, não nos nomes de domínio. Vamos dar o processo passo a passo para maior clareza.

  1. Você adiciona uma regra com: iptables -I FORWARD 1 -p tcp -d dd-wrt.com --dport 80 -j ACCEPT
  2. O IPtables passa o dd-wrt.com para o subsistema do resolvedor.
  3. O subsistema do resolvedor retorna: 83.141.4.210
  4. IPtables modifica e cria regra como: -p tcp -d 83.141.4.210 --dport 80 -j ACCEPT

Se o nome do domínio retornou vários endereços, como www.google.com, insere uma cópia dessa regra para cada endereço IP retornado. A menos, claro, que você use a opção --replace , caso em que vários endereços retornados farão com que ela falhe.

Esta pesquisa somente acontece quando a regra é adicionada. Portanto, se dd-wrt.com for movido para um novo host, sua regra não funcionará mais corretamente. Você terá que excluir e adicionar novamente ou reiniciar o firewall para que o novo endereço tenha efeito.

Como resultado, você pode simplesmente implicar que você não pode usá-lo para bloquear com base no nome de domínio. Você está sempre bloqueando o endereço IP, pode estar simplesmente usando um nome de domínio para recuperar ocasionalmente o endereço. Da mesma forma, os curingas também não funcionam. O hostname *.dd-wrt.com não possui um registro A, portanto não pode ser convertido em um endereço IP.

Geralmente, é de seu interesse bloquear ou negar apenas com base no endereço IP. Dessa forma, não há confusão para você ou sua equipe sobre o que deve ser bloqueado (ou permitido) versus o que realmente é.

    
por 08.03.2013 / 20:12