DNSBL 黑名單
此處不是提供詢問被鎖 & 解鎖事宜的地方,本條目僅為技術介紹
被鎖請向該版面管理員申訴,在這邊留言一點用都沒有 (那種鎖多半也不是 DNSBL,而是 IP/Hostname 黑名單)

概述

DNSBL 黑名單功能首見於 Pixmicat! 祭典版,而後由 scribe 引進至 Log / MySQL版本,並使用了不同於祭典版的日方 DNSBL 伺服器而使用了全球性的 DNSBL 伺服器。可以阻擋被列入黑名單的 Spammer 、惡意破壞者、跳板、公開代理伺服器等等。

原理

DNSBL (DNS-based Blackhole List) 也稱之為 RBL (Real-time Blackhole List),是利用 DNS 伺服器的查詢方式來當做一種IP名單查詢,如果此IP有列在名單內,則會回傳 127.0.0.x 的 IP 形式 (視各個伺服器而有不同)。

IP查詢時得先經過倒轉程序,比方說 192.168.10.125 會先轉成 125.10.168.192 ,再加上DNSBL伺服器網域,結果如 125.10.168.192.dnsbl.sample.com , 再查詢此一主機名稱的對應 IP。如果 IP 存在於黑名單就會回傳 127.0.0.x ,不存在則回傳 Non-existent domain。程式只要檢查回傳值便可以知道此 IP 是否在黑名單內。

因為 DNS 有快取特性,重複查詢並不會造成太大的負擔,而查詢的時間理論上也很快。只需要維護這份名單並可以有效封鎖。

結論:

  1. 先取得要查詢的 IP 位置 (ex: 192.168.10.125)
  2. 將 IP 位置倒轉後加上 DNSBL 伺服器網域名稱並查詢回傳 IP 位置 (ex: 125.10.168.192.dnsbl.sample.com)
  3. 回傳結果如果是 127.0.0.x 就是在名單內,如果是 NXDOMAIN 則沒有

架設方法

要架設一個 DNSBL 伺服器不是難事,但也要先建立起一個 DNS 伺服器,視平台不同可用 BIND (ntbind), djbdns, MaraDNS, PowerDNS 等等。

除了伺服器軟體之外,也要取得一個網域可以讓此 DNS 伺服器被查詢 (通常是用 NS 指定域名到這個 server 上)。藉由 DNS 的設定,就可以提供作為查詢之用。將欲封鎖 IP 作成反查用的 FQDN (Full Qualified Domain Name)後以 A 紀錄對應到127.0.0.1/24 (即127.0.0.1~127.0.0.255)上面,就完成黑名單的登錄。

以下是 DNS 的設定範例:

125.10.168.192.dnsbl.sample.com.  A  127.0.0.2

使用範例

PHP

<?php
$addr = $_SERVER['REMOTE_ADDR']; // 瀏覽者IP位置
$DNSBLServer = 'sbl-xbl.spamhaus.org'; // sbl-xbl.spamhaus.org 服務
 
$rev = implode('.', array_reverse(explode('.', $addr))); // 反轉IP
$query = $rev.'.'.$DNSBLserver.'.'; // FQDN尾巴加上.表示結束
$result = gethostbyname($query); // 查詢Hostname對應IP
if($result && ($result != $query)){ echo '你被列入 DNSBL 黑名單內!'; }
?>

NSLOOKUP 程式

> 125.10.168.192.dnsbl.sample.com
Server:  hntp1.hinet.net
Address:  168.95.192.1

Name:    125.10.168.192.dnsbl.sample.com
Address:  127.0.0.2

> 126.10.168.192.dnsbl.sample.com
Server:  hntp1.hinet.net
Address:  168.95.192.1

*** hntp1.hinet.net can't find 126.10.168.192.dnsbl.sample.com: Non-existent domain

伺服器列表

以下列幾個可資使用的 DNSBL 伺服器。

  • sbl-xbl.spamhaus.org
  • list.dsbl.org
  • bl.blbl.org
  • bl.spamcop.net

此外,這個網站可以讓你查詢特定IP是否有在某些伺服器的黑名單上。

誤擋問題

因為名單是來自於國外,而有些人的電腦可能因為被當成跳板,或有人利用國內 ISP 線路大量發信,使得部份的 IP 位置都被國外列為黑名單。而台灣多為浮動 IP 分配,因此上一個人闖的禍就得讓下一個人承擔後果。

解決方法是請使用者重新取得一個浮動 IP,這樣也許就不會在列表內。

雖然聽起來很消極,但是 DNSBL 名單多為國外所維護,而回報解除的機制雖有,但也須提出具體解鎖理由及 ISP 官方證明,因此目前只能這樣。

參見

討論

新增一則回應
登入為 Wikidot 使用者
(將不會發佈)
- +
除非特別註明,本頁內容採用以下授權方式: Creative Commons Attribution-Noncommercial-Share Alike 2.5 License.