Preferiblemente algo similar a iptables. Básicamente, quiero hacer el filtrado de dominios / listas blancas / listas negras como lo haría con IPs iptables. ¿Hay alguna recomendación sobre cómo hacer esto?
¿Qué / por qué estás tratando de bloquear? ¿Está tratando de filtrar HTTP o SMTP o NTP salientes / entrantes? Se pueden usar diferentes herramientas para diferentes escenarios.
@josten idealmente usaría un proxy HTTP como Squid . El bloqueo de los nombres de dominio en el iptablesse puede hacer , pero puede ser arriesgado
Creek
Respuestas:
8
Si elimina el tráfico utilizando la resolución de nombres con las reglas de iptables, los nombres se resolverán durante la creación de esa regla. Si algo cambia, tu regla ya no será válida. Esta podría ser una solución (no una hermosa ...):
# host www.facebook.com
www.facebook.com A record not found, try again
Básicamente, estás diciendo a cada paquete dns ( udp/53) que tiene la cadena hexadecimal de www.facebook.com toser descartada. Tenga en cuenta que esto eliminará la resolución de nombres, y no el tráfico http en sí.
Los números hexadecimales separados con tuberías ( |03|www|08|facebook|03|com) son la representación del .símbolo de punto en las consultas dns. Dirá cuántos de los siguientes caracteres representarán cada parte de un FQDN (host, dominio, dominio de nivel superior) Ejemplo:
Tal vez la respuesta a su pregunta es demasiado tarde, pero recientemente tuve que resolver un problema similar y Google me trae aquí
Después de búsquedas fallidas, escribí una pequeña utilidad en C que intercepta las respuestas de DNS, compara el nombre de dominio con las expresiones regulares dadas y enumera las direcciones IP coincidentes. Aquí está: https://github.com/vmxdev/sidmat/
No necesita configurar su propio servidor DNS, la utilidad puede detectar respuestas DNS de cualquier servidor
Por ejemplo, para ver las direcciones IP de facebook.com (y subdominios) que están resueltas en este momento, puede ejecutar
Si ejecuta un enlace de almacenamiento en caché local, a menudo se realiza mediante un dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
y el dummy-blockarchivo:
$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
se puede hacer , pero puede ser arriesgadoRespuestas:
Si elimina el tráfico utilizando la resolución de nombres con las reglas de iptables, los nombres se resolverán durante la creación de esa regla. Si algo cambia, tu regla ya no será válida. Esta podría ser una solución (no una hermosa ...):
Desde otro host dentro de la LAN:
Básicamente, estás diciendo a cada paquete dns (
udp/53
) que tiene la cadena hexadecimal dewww.facebook.com to
ser descartada. Tenga en cuenta que esto eliminará la resolución de nombres, y no el tráfico http en sí.Los números hexadecimales separados con tuberías (
|03|www|08|facebook|03|com
) son la representación del.
símbolo de punto en las consultas dns. Dirá cuántos de los siguientes caracteres representarán cada parte de un FQDN (host, dominio, dominio de nivel superior) Ejemplo:anfitrión:
mail.google.com
representación hexadecimal:
04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
"representación visual:
04mail06google03com
Obteniendo el paquete con tcpdump:
Pero recuerda:
Fuentes: aquí y aquí
fuente
Tal vez la respuesta a su pregunta es demasiado tarde, pero recientemente tuve que resolver un problema similar y Google me trae aquí
Después de búsquedas fallidas, escribí una pequeña utilidad en C que intercepta las respuestas de DNS, compara el nombre de dominio con las expresiones regulares dadas y enumera las direcciones IP coincidentes. Aquí está: https://github.com/vmxdev/sidmat/
No necesita configurar su propio servidor DNS, la utilidad puede detectar respuestas DNS de cualquier servidor
Por ejemplo, para ver las direcciones IP de facebook.com (y subdominios) que están resueltas en este momento, puede ejecutar
donde eth0 es la interfaz de red en el enrutador (o donde pasan las respuestas DNS)
Puede integrarlo fácilmente con iptables (o iptables con ipset)
Pero:
fuente
Para poner en la lista negra, la forma más fácil es usar dnsmasq
Instalar en pc
dnsmasq
y agregue esta línea a
/etc/dnsmasq.conf
Esto bloqueará facebook.com y todos sus subdominios.
Nota: Para ubuntu ver esta publicación .
fuente
Si ejecuta un enlace de almacenamiento en caché local, a menudo se realiza mediante un
dummy-block
y el
dummy-block
archivo:Ver también:
Ejecutando BIND9 e ISC-DHCP con
facebook.com
ejemplo.Un enfoque simple basado en DNS para bloquear la publicidad web
fuente