跳到主要內容

駭客中繼站阻絕設定

Update: 由於在 2018年4月Cloudflare與APNIC合作建置全球最快的 Public DNS 1.1.1.1 上線,所以將範例裡的IP改為 127.0.0.1 ,參考 隱私優先、速度最快,公共DNS服務1.1.1.1上線了

VB超人接了某個政府機關的案子,有台主機代管在敝公司。日前很不幸地又收到資安管理通知,這次是要求做駭客中繼站阻絕設定,設定方法如下:
DNS設定步驟
  1. 建立內部DNS(如:192.168.0.2),並且要求所有內部電腦必須透過本DNS方可查詢。
  2. 新增一組Domain(如:blogdns.com) ,令此網域之查詢均指向一組虛設IP(如:127.0.0.1)。不論查詢 *. blogdns.com等,均回覆前述虛設IP。
  3. 重複步驟2,將所附之DN設定完畢。
虛設IP用 172.20.20.20 之類的Private Address也可以,若希望不要因為網路query讓電腦變慢用127.0.0.1是最理想的解法。原本我隨便找 1.1.1.1 ,結果在 2018年被拿去用 XD

敝公司的DNS就是小弟在管理,因為合約關係,我不得不幫VB超人搞定這個需求。目前有348個host,若一一設定不累死我?

首先簡化問題,不管是不是同個domain,把每個host都放在一個zone總可以吧?結果一定相同。因此,就寫個簡單的script將host列表轉成dns file;由於使用Windows DNS,所以可以把dns file放在%windir%\system32\dns,再利用registry匯入即可。
Windows DNS Server的機碼在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones]底下。

#!/usr/bin/env python
# coding: utf-8

def WriteDNSFile(list, adserver):
 for domain in list:
  domain = domain.strip();
  f=open(domain+'.dns', 'w+');
  f.write(";\n;  Database file "+domain+".dns for "+domain+" zone.\n");
  f.write(";      Zone version:  1\n;\n\n");
  f.write("@\tIN  SOA "+adserver+".  hostmaster."+adserver+". (\n");
  f.write("\t\t1\t; serial number\n");
  f.write("\t\t900\t; refresh\n");
  f.write("\t\t600\t; retry\n");
  f.write("\t\t86400\t; expire\n");
  f.write("\t\t3600\t) ; default TTL\n");
  f.write(";\n;  Zone NS records\n;\n\n");
  f.write("@\t\tNS\tyouradserver.corp.\n\n");
  f.write(";\n;  Zone records\n;\n\n");
  f.write("@\t\t A\t127.0.0.1\n\n");
  f.close();
 
def WriteDNSRegFile(list):
 f=open("dns.reg", "w+");
 f.write("Windows Registry Editor Version 5.00\n\n");
 for domain in list:
  domain = domain.strip();
  f.write("[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\DNS Server\\Zones\\"+domain+"]\n");
  f.write('"Type"=dword:00000001\n');
  f.write('"SecureSecondaries"=dword:00000003\n');
  f.write('"NotifyLevel"=dword:00000002\n');
  f.write('"DatabaseFile"="'+domain+'.dns"\n');
  f.write('"NoRefreshInterval"=dword:000000a8\n');
  f.write('"RefreshInterval"=dword:000000a8\n');
  f.write('"Aging"=dword:00000000\n\n');
 f.close();
 
#主程式
adserver="youradserver.corp" #AD及DNS Server, 這裏是youradserver.corp
hostListFile = ur"歷次中繼站列表匯整檔.txt";
f=open(hostListFile, 'r');
list = f.readlines();
f.close();
WriteDNSRegFile(list);
WriteDNSFile(list, adserver);

本程式提供給有此需求的朋友,版權沒有,盡管盜貼。

留言

匿名表示…
Python++
Unknown寫道…
太感謝 大大無私地分享
透過拍森跑出來的reg執行後
將所有清單內產生的.dns存放到dns目錄
在重啟dns 服務 即可
太感謝啦
Unknown寫道…
太感謝您的分享了
不用使用原始手動的方式

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。

本來只是要申請些政府業務,一時之間找不到光碟,沒想到在驅動程式下載居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

在Windows Server設定L2TP over IPSec VPN

簡單地說,macOS Sierra與iOS 10發表後,大家忽然發現Apple不再支援PPTP,所以一定得設定其他的VPN型態。若不要另外裝client,用L2TP是最方便的,SSL VPN雖然好,但若沒有安裝Agent要連線到任一電腦或是非網頁服務還是挺麻煩的。