Am liebsten etwas ähnliches iptables
. Grundsätzlich möchte ich Domain Filtering / Whitelisting / Blacklisting durchführen, wie ich es mit IPs tun würde iptables
. Gibt es Empfehlungen dazu?
iptables
kann erfolgen , aber es kann schwierig sein
Am liebsten etwas ähnliches iptables
. Grundsätzlich möchte ich Domain Filtering / Whitelisting / Blacklisting durchführen, wie ich es mit IPs tun würde iptables
. Gibt es Empfehlungen dazu?
iptables
kann erfolgen , aber es kann schwierig sein
Antworten:
Wenn Sie den Datenverkehr mithilfe der Namensauflösung mit iptables-Regeln löschen, werden die Namen beim Erstellen dieser Regel aufgelöst. Wenn sich etwas ändert, ist Ihre Regel nicht mehr gültig. Dies könnte eine Lösung sein (keine schöne ...):
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
Von einem anderen Host im LAN:
# host www.facebook.com
www.facebook.com A record not found, try again
Grundsätzlich sagen Sie zu jedem DNS-Paket ( udp/53
), dass die hexadezimale Zeichenfolge www.facebook.com to
gelöscht werden soll. Beachten Sie, dass dadurch die Namensauflösung und nicht der HTTP-Datenverkehr selbst gelöscht wird.
Die mit Pipes ( |03|www|08|facebook|03|com
) getrennten Hex-Zahlen sind die Darstellung des .
Punktsymbols bei DNS-Abfragen. Es wird angegeben, wie viele der folgenden Zeichen die einzelnen Teile eines FQDN darstellen (Host, Domain, Top-Level-Domain). Beispiel:
Wirt: mail.google.com
Hex-Darstellung: 04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
"visuelle Darstellung: 04mail06google03com
Das Paket mit tcpdump bekommen:
# tcpdump -i eth0 -X dst port 53
15:50:11.643672 IP xxx.xxx.xxx.xxx:xxx > ns4.google.com.domain: 16530 A? mail.google.com. (33)
0x0000: 4500 003d 779a 4000 4011 b390 c949 4742 E..=w.@.@....IGB
0x0010: d8ef 260a 8424 0035 0029 0fc0 4092 0000 ..&..$.5.)..@...
0x0020: 0001 0000 0000 0000 046d 6169 6c06 676f .........mail.go
0x0030: 6f67 6c65 0363 6f6d 0000 0100 01 ogle.com.....
Aber erinnere dich:
Vielleicht ist die Antwort auf Ihre Frage zu spät, aber kürzlich musste ich ein ähnliches Problem lösen und Google bringt mich hierher
Nach erfolglosen Suchen habe ich ein kleines Hilfsprogramm in C geschrieben, das DNS-Antworten abfängt, den darin enthaltenen Domainnamen mit der angegebenen Regex vergleicht und übereinstimmende IP-Adressen auflistet. Hier ist es: https://github.com/vmxdev/sidmat/
Sie müssen keinen eigenen DNS-Server einrichten. Das Dienstprogramm kann DNS-Antworten von jedem Server abrufen
Wenn Sie beispielsweise die IP-Adressen von facebook.com (und Subdomains) anzeigen möchten, die gerade aufgelöst werden, können Sie sie ausführen
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
Wobei eth0 die Netzwerkschnittstelle auf dem Router ist (oder wo DNS-Antworten weitergeleitet werden)
Sie können es problemlos in iptables (oder iptables mit ipset) integrieren.
Aber:
Für das Blacklisting ist es wahrscheinlich am einfachsten, dnsmasq zu verwenden
Installieren dnsmasq
$ sudo apt-get install dnsmasq
und füge diese Zeile hinzu zu /etc/dnsmasq.conf
address=/facebook.com/127.0.0.1
Dies blockiert facebook.com und alle seine Subdomains.
Hinweis: Für Ubuntu finden Sie in diesem Beitrag .
Wenn ein lokaler Caching-Bind9 ausgeführt wird, wird dies häufig durch a realisiert dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
und die dummy-block
Datei:
$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
Siehe auch:
Ausführen von BIND9 und ISC-DHCP mit facebook.com
Beispiel.
Ein einfacher DNS-basierter Ansatz zum Blockieren von Webwerbung