Lebih disukai sesuatu yang mirip dengan iptables
. Pada dasarnya, saya ingin melakukan pemfilteran domain / daftar putih / daftar hitam seperti yang saya lakukan dengan IP iptables
. Apakah ada rekomendasi tentang cara melakukan ini?
Lebih disukai sesuatu yang mirip dengan iptables
. Pada dasarnya, saya ingin melakukan pemfilteran domain / daftar putih / daftar hitam seperti yang saya lakukan dengan IP iptables
. Apakah ada rekomendasi tentang cara melakukan ini?
Jawaban:
Jika Anda menghentikan lalu lintas menggunakan resolusi nama dengan aturan iptables, nama-nama tersebut akan diselesaikan selama pembuatan aturan itu. Jika sesuatu berubah, Anda berkuasa tidak akan valid lagi. Ini bisa menjadi solusi (bukan yang indah ...):
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
Dari host lain di dalam LAN:
# host www.facebook.com
www.facebook.com A record not found, try again
Pada dasarnya, Anda mengatakan kepada setiap paket dns ( udp/53
) yang memiliki string heksadesimal yang www.facebook.com to
akan dihapus. Perhatikan bahwa ini akan menjatuhkan resolusi nama, dan bukan lalu lintas http itu sendiri.
Bilangan heks yang dipisahkan dengan pipa ( |03|www|08|facebook|03|com
) adalah representasi dari .
simbol titik pada permintaan dns. Ia akan mengatakan berapa banyak karakter berikut yang akan mewakili setiap bagian dari FQDN (host, domain, domain tingkat atas) Contoh:
tuan rumah: mail.google.com
representasi hex: 04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
Representasi "visual": 04mail06google03com
Mendapatkan paket dengan 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.....
Tapi ingat:
Mungkin jawaban untuk pertanyaan Anda sudah terlambat, tetapi baru-baru ini saya perlu menyelesaikan masalah serupa dan Google membawa saya ke sini
Setelah pencarian yang gagal saya menulis sebuah utilitas kecil di C yang mencegat tanggapan DNS, membandingkan nama domain di dalamnya dengan regex yang diberikan dan daftar yang cocok dengan alamat IP. Ini dia: https://github.com/vmxdev/sidmat/
Anda tidak perlu mengatur server DNS Anda sendiri, utilitas dapat menangkap respons DNS dari server mana pun
Misalnya, untuk melihat alamat ip facebook.com (dan subdomain) yang diselesaikan sekarang Anda dapat menjalankan
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
di mana eth0 adalah antarmuka jaringan pada router (atau di mana tanggapan DNS lewat)
Anda dapat dengan mudah mengintegrasikannya dengan iptables (atau iptables dengan ipset)
Tapi:
Untuk daftar hitam cara termudah mungkin dengan menggunakan dnsmasq
Install dnsmasq
$ sudo apt-get install dnsmasq
dan tambahkan baris ini ke /etc/dnsmasq.conf
address=/facebook.com/127.0.0.1
Ini akan memblokir facebook.com dan semua subdomainnya.
Catatan: Untuk ubuntu lihat posting ini .
Jika menjalankan caching bind9 lokal itu sering disadari oleh a dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
dan dummy-block
file:
$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
Lihat juga:
Menjalankan BIND9 dan ISC-DHCP dengan facebook.com
contoh.