Najlepiej coś podobnego do iptables
. Zasadniczo chcę filtrować domeny / umieszczać na białej liście / czarną listę, tak jak w przypadku adresów IP iptables
. Czy są jakieś zalecenia, jak to zrobić?
Najlepiej coś podobnego do iptables
. Zasadniczo chcę filtrować domeny / umieszczać na białej liście / czarną listę, tak jak w przypadku adresów IP iptables
. Czy są jakieś zalecenia, jak to zrobić?
Odpowiedzi:
Jeśli zmniejszysz ruch przy użyciu rozpoznawania nazw z regułami iptables, nazwy zostaną rozwiązane podczas tworzenia tej reguły. Jeśli coś się zmieni, twoja reguła przestanie być ważna. To może być rozwiązanie (nie piękne ...):
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
Z innego hosta w sieci LAN:
# host www.facebook.com
www.facebook.com A record not found, try again
Zasadniczo mówisz do każdego pakietu dns ( udp/53
), który ma szesnastkowy ciąg znaków, który www.facebook.com to
należy usunąć. Pamiętaj, że spowoduje to zmniejszenie rozpoznawania nazw, a nie samego ruchu HTTP.
Liczby szesnastkowe oddzielone potokami ( |03|www|08|facebook|03|com
) reprezentują .
symbol kropki w zapytaniach dns. Powie, ile spośród następujących znaków będzie reprezentowało każdą część nazwy FQDN (host, domena, domena najwyższego poziomu). Przykład:
gospodarz: mail.google.com
reprezentacja szesnastkowa: 04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
przedstawienie „wizualne”: 04mail06google03com
Pobieranie pakietu za pomocą tcpdump:
# 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.....
Ale pamiętaj:
Być może odpowiedź na twoje pytanie jest za późna, ale ostatnio musiałem rozwiązać podobny problem i Google mnie tu sprowadza
Po nieudanych poszukiwaniach napisałem małe narzędzie w C, które przechwytuje odpowiedzi DNS, porównuje w nim nazwę domeny z podanym wyrażeniem regularnym i wyświetla dopasowane adresy IP. Oto on: https://github.com/vmxdev/sidmat/
Nie musisz konfigurować własnego serwera DNS, narzędzie może przechwytywać odpowiedzi DNS z dowolnego serwera
Na przykład, aby zobaczyć adresy IP facebook.com (i subdomeny), które są teraz rozwiązane, możesz uruchomić
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
gdzie eth0 to interfejs sieciowy routera (lub gdzie przechodzą odpowiedzi DNS)
Możesz łatwo zintegrować go z iptables (lub iptables z ipset)
Ale:
Do czarnej listy najłatwiej jest użyć dnsmasq
zainstalować dnsmasq
$ sudo apt-get install dnsmasq
i dodaj tę linię do /etc/dnsmasq.conf
address=/facebook.com/127.0.0.1
Spowoduje to zablokowanie facebook.com i wszystkich jego subdomen.
Uwaga: dla ubuntu zobacz ten post .
Jeśli uruchamiane jest lokalne powiązanie buforowania9, często jest to realizowane przez dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
i dummy-block
plik:
$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
Zobacz też:
Uruchamianie BIND9 i ISC-DHCP z facebook.com
przykładem.
Proste, oparte na DNS, podejście do blokowania reklam internetowych