De preferência algo semelhante a iptables. Basicamente, quero fazer a filtragem de domínio / lista de permissões / lista negra como faria com IPs iptables. Existem recomendações sobre como fazer isso?
o que / por que você está tentando bloquear? Você está tentando filtrar HTTP / SMTP ou NTP de saída / entrada? Diferentes ferramentas podem ser usadas para diferentes cenários.
@josten idealmente você usaria um proxy HTTP como o Squid . Bloqueio de nomes de domínio no iptablespode ser feito , mas pode ser arriscado
Creek
Respostas:
8
Se você eliminar o tráfego usando a resolução de nomes com as regras do iptables, os nomes serão resolvidos durante a criação dessa regra. Se algo mudar, sua regra não será mais válida. Esta poderia ser uma solução (não a mais bonita ...):
# host www.facebook.com
www.facebook.com A record not found, try again
Basicamente, você está dizendo a cada pacote DNS ( udp/53) que tem a cadeia hexadecimal de www.facebook.com toser descartada. Observe que isso reduzirá a resolução de nomes, e não o tráfego http em si.
Os números hexadecimais separados por pipes ( |03|www|08|facebook|03|com) são a representação do .simbol do ponto nas consultas DNS. Ele informará quantos dos seguintes caracteres de caracterização representarão cada parte de um FQDN (host, domínio, domínio de nível superior) Exemplo:
Talvez a resposta para sua pergunta seja tarde demais, mas recentemente precisei resolver um problema semelhante e o Google me trouxe aqui
Após pesquisas malsucedidas, escrevi um pequeno utilitário em C que intercepta respostas DNS, compara o nome de domínio com o regex especificado e lista os endereços IP correspondentes. Aqui está: https://github.com/vmxdev/sidmat/
Você não precisa configurar seu próprio servidor DNS, o utilitário pode capturar respostas DNS de qualquer servidor
Por exemplo, para ver os endereços IP do facebook.com (e subdomínios) resolvidos agora, você pode executar
Se a execução de um bind9 de armazenamento em cache local, geralmente é realizada por um dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
e o dummy-blockarquivo:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
* IN A 127.0.0.1
iptables
pode ser feito , mas pode ser arriscadoRespostas:
Se você eliminar o tráfego usando a resolução de nomes com as regras do iptables, os nomes serão resolvidos durante a criação dessa regra. Se algo mudar, sua regra não será mais válida. Esta poderia ser uma solução (não a mais bonita ...):
De outro host dentro da LAN:
Basicamente, você está dizendo a cada pacote DNS (
udp/53
) que tem a cadeia hexadecimal dewww.facebook.com to
ser descartada. Observe que isso reduzirá a resolução de nomes, e não o tráfego http em si.Os números hexadecimais separados por pipes (
|03|www|08|facebook|03|com
) são a representação do.
simbol do ponto nas consultas DNS. Ele informará quantos dos seguintes caracteres de caracterização representarão cada parte de um FQDN (host, domínio, domínio de nível superior) Exemplo:hospedeiro:
mail.google.com
representação hexadecimal:
04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
"representação visual:
04mail06google03com
Obtendo o pacote com tcpdump:
Mas lembre-se:
Fontes: Aqui e aqui
fonte
Talvez a resposta para sua pergunta seja tarde demais, mas recentemente precisei resolver um problema semelhante e o Google me trouxe aqui
Após pesquisas malsucedidas, escrevi um pequeno utilitário em C que intercepta respostas DNS, compara o nome de domínio com o regex especificado e lista os endereços IP correspondentes. Aqui está: https://github.com/vmxdev/sidmat/
Você não precisa configurar seu próprio servidor DNS, o utilitário pode capturar respostas DNS de qualquer servidor
Por exemplo, para ver os endereços IP do facebook.com (e subdomínios) resolvidos agora, você pode executar
onde eth0 é a interface de rede no roteador (ou onde as respostas DNS passam)
Você pode integrá-lo facilmente ao iptables (ou iptables com ipset)
Mas:
fonte
Para colocar na lista negra a maneira mais fácil é provavelmente usar o dnsmasq
Instalar
dnsmasq
e adicione esta linha a
/etc/dnsmasq.conf
Isso bloqueará o facebook.com e todos os seus subdomínios.
Nota: Para o ubuntu, veja este post .
fonte
Se a execução de um bind9 de armazenamento em cache local, geralmente é realizada por um
dummy-block
e o
dummy-block
arquivo:Veja também:
Executando BIND9 e ISC-DHCP com
facebook.com
exemplo.Uma abordagem simples baseada em DNS para bloquear a publicidade na Web
fonte