Debian

用於將大量域和一些 TLD 列入黑名單的 DNS 伺服器

  • March 1, 2018

我正在嘗試為我的區域網路設置一個基本的 DNS 伺服器,該伺服器能夠放入一個空路由或 127.0.0.1 很多域。

我要阻止的域來自列表,但我也想使用正則表達式阻止一些域(這是我的設置必須的)。

我做這項業務的候選軟體似乎是 Unbound,一個具有各種有用功能的遞歸記憶體安全 DNS 伺服器。

但是 Unbound 似乎不支持任何正則表達式!

此外,在區域重複方面,Unbound 非常挑剔。我的域列表是由許多混合來源建構的,因此我可以使用一些腳本過濾掉許多重複,但也可以使用列表中的域,例如:

aaah.very.this.com

但是也

very.this.com

這導致 Unbound 為錯誤尖叫,因為存在區域重複。

雖然這是一個小問題,我可以通過更好地清理域列表來刪除它,但我的主要問題是缺少用於處理域請求的正則表達式。

我可以以某種方式阻止所有 *.com 或 *.biz 或類似的東西嗎?

[\w\.\-]+.com A 127.0.0.1
[\w\.\-]+.com AAAA ::1

我的正則表達式就是一個例子,我可以使用更複雜的…

獎金

我可以做一些更討厭的事情嗎?是否所有內容都指向 nullroute 或 127.0.0.1 並且只有域的白名單通過轉發到外部 DNS 得到解決?

如果回復請不要忘記這個額外的問題,因為我很想知道答案。

我可以去做什麼?Bind9、dnsmasq、未綁定、pdns-recursor…

在 DNS 服務級別攔截域/請求或將 IP 網路塊路由重定向到 127.0.0.1/null 路由是兩件非常不同的事情。

在我看來,DNS 級別更高效,資源更輕。

在 IP 級別/空路由阻塞更有效,但是管理起來更麻煩,並且在更廣泛的範圍內使用時 CPU 使用量會稍微增加一些。

請記住,在 DNS 級別使用黑名單通常可以到達數十萬範圍內的名稱,並且擁有如此大的路由表是不可行的。

我自己已經調查過通過 dnsmasq 或 BIND 進行黑名單。我將 DNS 黑名單用於廣告、惡意軟體並阻止我的智能電視呼叫家庭(LG 網站)。

我最終在 BIND 中使用了響應策略區,因為它確實允許一些簡單的正則表達式,即名稱末尾的 *,這大大減少了黑名單的大小。DNS 響應策略區域

請記住,9.8+ BIND 支持 BIND 中的 RPZ,任何現代 Linux 發行版都應該是這種情況。

由於我配置了 RPZ 功能,因此與字元串/正則表達式匹配的域/DNS 名稱會被 BIND DNS 伺服器簡單地回答為不存在。所有其他不匹配的名稱都通過通常的過程解決。

作為我的幾行的一個簡短範例/etc/bind/rpz.db

*.ad.lgappstv.com CNAME .
*.yumenetworks.com CNAME .
*.smartclip.net CNAME .
*.smartshare.lgtvsdp.com CNAME .
*.ibis.lgappstv.com CNAME .
*.doubleclick.net CNAME .
*.l.doubleclick.net CNAME .
*.302br.net CNAME .
*.liveadvert.com CNAME .
*.easysuperdownload-1.com CNAME .
*.easysuperdownload-2.com CNAME .
*.itrackpop.com CNAME .

使用您的範例:

*.this.com CNAME .
*.biz CNAME .

請注意,阻止整個 TLD 可能不是最好的想法。

BIND 在重複方面不像 Unbound 那樣挑剔。它將允許 aaaa.this.com 和 this.com;但是它不允許 this.com 被多次定義。

至於 RPZ 本身的設置,我會參考我在 Unix & Linux Large zone file for bind9 上對這個問題的回答:ad-blocking

對於使用 raspberry PI 的現成類似項目,請參閱:Pi-Hole:網際網路廣告的黑洞該項目還將引導您訪問一些已知的免費黑名單。

來自https://github.com/pi-hole/pi-hole/blob/master/adlists.default

https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

# Other lists we consider safe:
http://adblock.gjtech.net/?format=unix-hosts
http://mirror1.malwaredomains.com/files/justdomains
http://sysctl.org/cameleon/hosts
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt

# hosts-file.net list. Updated frequently, but has been known to block legitimate sites.
http://hosts-file.net/ad_servers.txt

# Mahakala list. Has been known to block legitimage domains including the entire .com range.
# Warning: Due to the sheer size of this list, the web admin console will be unresponsive.
#http://adblock.mahakala.is/

# ADZHOSTS list. Has been known to block legitimate domains
#http://optimate.dl.sourceforge.net/project/adzhosts/HOSTS.txt

# Windows 10 telemetry list - warning this one may block windows update
#https://raw.githubusercontent.com/crazy-max/HostsWindowsBlocker/master/hosts.txt

# Securemecca.com list - Also blocks "adult" sites (pornography/gambling etc)
#http://securemecca.com/Downloads/hosts.txt

# Quidsup's tracker list
https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt

至於白名單,顯然是可以做到的。

如果在一個域一個域的基礎上完成,那就是設置一個代理 BIND DNS 伺服器,它沒有根名稱伺服器的提示。

但是,每個允許的域都必須使用轉發器創建到與外部對話的 DNS。這篇理論文章很好地總結了這個想法。使用 DNS 白名單阻止惡意軟體進入其軌道

再次使用 BIND 中的 RPZ 來拯救我們,配置可以簡單得多,並且不需要設置代理 DNS 伺服器。

作為此頁面配置的一個變體,RPZ revisited,您將擁有一個正常配置的 BIND,帶有 RPZ 白名單,然後您將在正常 rpz 策略(例如 * 或*.*)中塗黑所有內容。

options {
....
response-policy { 
  zone "rpz-white" policy PASSTHRU; // my own white list
  zone "rpz-foreign";    // obtained from producer
};
}

雖然白名單拒絕一切方法當然是瘋狂的,但白名單可以用來豁免受到黑名單更廣泛匹配打擊的特定域。

引用自:https://unix.stackexchange.com/questions/268356