Jak przeprowadzić filtrowanie domen w systemie Linux?
12
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ć?
co / dlaczego próbujesz zablokować? Czy próbujesz filtrować wychodzące / przychodzące HTTP, SMTP lub NTP? Do różnych scenariuszy można użyć różnych narzędzi.
@josten idealnie byłoby użyć serwera proxy HTTP, takiego jak Squid . Blokowanie nazw domen iptablesmożna wykonać, ale może to być trudne
Creek
Odpowiedzi:
8
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 ...):
# 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 tonależ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:
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ć
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-blockplik:
$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
można wykonać, ale może to być trudneOdpowiedzi:
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 ...):
Z innego hosta w sieci LAN:
Zasadniczo mówisz do każdego pakietu dns (
udp/53
), który ma szesnastkowy ciąg znaków, którywww.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:
Ale pamiętaj:
Źródła: tu i tutaj
źródło
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ć
gdzie eth0 to interfejs sieciowy routera (lub gdzie przechodzą odpowiedzi DNS)
Możesz łatwo zintegrować go z iptables (lub iptables z ipset)
Ale:
źródło
Do czarnej listy najłatwiej jest użyć dnsmasq
zainstalować
dnsmasq
i dodaj tę linię do
/etc/dnsmasq.conf
Spowoduje to zablokowanie facebook.com i wszystkich jego subdomen.
Uwaga: dla ubuntu zobacz ten post .
źródło
Jeśli uruchamiane jest lokalne powiązanie buforowania9, często jest to realizowane przez
dummy-block
i
dummy-block
plik:Zobacz też:
Uruchamianie BIND9 i ISC-DHCP z
facebook.com
przykładem.Proste, oparte na DNS, podejście do blokowania reklam internetowych
źródło