Update: 由於在 2018年4月Cloudflare與APNIC合作建置全球最快的 Public DNS 1.1.1.1 上線,所以將範例裡的IP改為 127.0.0.1 ,參考 隱私優先、速度最快,公共DNS服務1.1.1.1上線了
VB超人接了某個政府機關的案子,有台主機代管在敝公司。日前很不幸地又收到資安管理通知,這次是要求做駭客中繼站阻絕設定,設定方法如下:
DNS設定步驟虛設IP用 172.20.20.20 之類的Private Address也可以,若希望不要因為網路query讓電腦變慢用127.0.0.1是最理想的解法。原本我隨便找 1.1.1.1 ,結果在 2018年被拿去用 XD
- 建立內部DNS(如:192.168.0.2),並且要求所有內部電腦必須透過本DNS方可查詢。
- 新增一組Domain(如:blogdns.com) ,令此網域之查詢均指向一組虛設IP(如:127.0.0.1)。不論查詢 *. blogdns.com等,均回覆前述虛設IP。
- 重複步驟2,將所附之DN設定完畢。
敝公司的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);
本程式提供給有此需求的朋友,版權沒有,盡管盜貼。
留言
透過拍森跑出來的reg執行後
將所有清單內產生的.dns存放到dns目錄
在重啟dns 服務 即可
太感謝啦
不用使用原始手動的方式