星期五, 12月 04, 2015

如何設定RouterOS的DNS利用OpenDNS阻擋有害網站


因應學術網路已不再提供網頁過濾功能,為了避免內部使用者上網時連到到色情、非法網頁,可以改用OpenDNS的方案,OpenDNS是一家提供開放式DNS查詢服務公司。
他們利用DNS提供了網頁過濾服務,有兩種免費版本:FamilyShield(家庭防護) 及OpenDNS Home (OpenDNS家用版,需註冊使用)
FamilyShield(家庭防護) 有提供兩組公開的DNS server,可提供過濾成人網站:

  •  208.67.222.123
  •  208.67.220.123

如果將你的電腦DNS改為上述的2個IP,則在上網查詢domanname時,若有非法的網站,則會自動導向一個提示網頁,幫你過濾成人網站。
設定的方式可以參考:https://free.com.tw/safer-and-faster-internet-by-opendns/

________________________________________________________________________________

OpenDNS的家用版,則提供更多的過濾設定,除了成人資訊外,還有以下55個項目可以依本身需求調整過濾項目。




不過,如果要使用這項功能,則必須先到OpenDNS HOME進行註冊,並登錄你的IP,才能使用,而且只能登錄一組IP。

如果我們家裡有多個使用者,那就要利用路由器的DNS查詢功能將路由器的DNS指到OpenDNS HOME 的2組DNS:

  • 208.67.222.222
  • 208.67.220.220

並登錄你的路由器IP,則此功能就能使用。

______________________________________________________________________________

如果本身內部有BIND DNS Server,則我們可將forward加上OpenDNS的IP,並且利用RouterOS的DNS查詢及NAT轉換來管控內部使用者在不需要修改電腦的DNS設定下,轉換使用OpenDNS提供的過濾功能,以下將示範如何設定:

一、設定流程:
  1. 連線到OpenDns網站  https://www.opendns.com/
  2. 註冊->收確認信->點選確認
  3. 登錄你的DNS Server IP->收確認信確認IP來源->
  4. 在Bind DNS Server加入forwards紀錄
    forwarders {
    208.67.222.222;
    208.67.220.220;
    };
  5. 重新啟動DNS Server
  6. 回到OpenDNS的個人Dashboard->Web Content Filtering選擇要過濾的項目
  7. 修改RouterOS的DNS指向
  8. 增加NAT規則
  9. 增加firewall規則拒絕外部利用RouterOS查詢
  10. 測試

二、環境介紹
RouterOS :
ether1為內部的LAN,IP為192.168.1.1
ether2為外部的WAN,IP為163.23.xxx.254

Bind DNS Server:
163.23.xxx.1

三、流程圖


四、設定方式
  1. 連線到OpenDns網站  https://www.opendns.com/,選擇PERSONAL,再選擇OpenDNS Home

  2. 填寫註冊資料,填寫送出後會出現設定的方式


    如果【Where will you use the account】選擇【Household】不會出現其他需要填寫的資料,如果選【Education】則還要再填寫姓名、地址等資料,端視註冊者如何選擇

  3. 註冊資料送出後會出現以下頁面,這邊有教學步驟提供您不同設備修改DNS的方式

  4. 請打開信箱收確認信,然後點選確認

  5. 確認完後,登錄到OpenDNS的DashBoard,並點選【HOME】【Add a network】加入你的DNS Server IP(我們這邊是以163.23.xxx.1為例)




  6. 以上完成後,會出現以下訊息,提醒你到信箱收信確認你的IP來源,是否與你登錄的DNS IP是一致的。

  7. 修改收信的電腦IP為你登錄的DNS IP(163.23.xxx.1)(或是直接使用DNS Server來收信)然後再點選確認(Open DNS會反查點選確認信的電腦IP是否為你設定的DNS IP),如果你收信的電腦與登錄的IP一致,才會通過確認。
  8. IP確認後,請登入OpenDNS到Dashboard的【HOME】【Settings】【MyDNS】【Web Content Filitering】
  9. 這裡我們可以設定要過濾的條件與項目,建議可選擇【Custom】自訂
  10. Custom的自訂項目共有55種可以選擇自訂
  11. 【Security】可以選擇【Enable phishing protection】及【Enable basic malware/botnet protection】可幫忙過濾釣魚、殭屍網站。
  12. 【Customization】可以自訂過濾顯示的圖樣與訊息
  13. 再來我們就可以將收信的電腦IP改回來,並在Bind DNS Server的nemed.conf加入forwards紀錄。
    forwarders {
    208.67.222.222;
    208.67.220.220;
    };
    可參考原廠網站的說明(BIND based DNS server : Configure BIND to use OpenDNS via the shell and webmin
  14. 重新啟動DNS Server
  15. 修改RouterOS的DNS指向,本動作是希望RouterOS 內部網路的使用者不用更動DNS設定(也等於是強制使用者必須使用RouterOS的DNS),這邊會有兩個動作,一是啟用RouterOS內的【IP】【DNS】,由RouterOS向163.23.xxx.1這台Bind DNS Server查詢使用者上網所需的Domain,例如tw.yahoo.com,並將查詢結果catch(快取)在RouterOS資料庫中。
  16. 二是增加NAT規則,目的是讓使用者不管設什麼樣的DNS(例如google的DNS或中華電的DNS)都強制重導到RouterOS來查
    這裡如果是使用指令則為
    /ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.1.1 to-ports=53 in-interface=ether1 dst-port=53 protocol=tcp
    /ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.1.1 to-ports=53 in-interface=ether1 dst-port=53 protocol=udp
    註:這裡的192.168.1.1及ether1是RouterOS的LAN端的IP及interface的名稱
  17. 增加firewall規則,拒絕外部網路使用者利用本RouterOS查詢
    /ip firewall add action=drop chain=input comment="Drop RouterOS UDP 53 Port Input"    dst-address=163.23.xxx.254 dst-port=53 protocol=udp
    /ip firewall add action=drop chain=input comment="Drop RouterOS TCP 53 Port Input"    dst-address=163.23.xxx.254 dst-port=53 protocol=tcp
    這邊的address=163.23.xxx.254 是RouterOS對外的WAN IP
  18. 接著我們可以打開瀏覽器測試一些不合法的網站是否會出現以下的顯示訊息

參考:
  1. RouterOS 指定區網內DNS到路由器
  2. http://forum.mikrotik.com/viewtopic.php?t=77757
  3. Introducing FamilyShield Parental Controls
  4. routeros-dns-adblock

各類非法/AD網站資料庫
  1. https://getadblock.com/
  2. http://www.malwaredomains.com/
  3. http://someonewhocares.org/hosts/
  4. http://www.hosts-file.net/