Skip to content

Commit f36fd35

Browse files
committed
小修一下
1 parent 2fdc984 commit f36fd35

File tree

6 files changed

+239
-59
lines changed

6 files changed

+239
-59
lines changed

README.md

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
11
# DNSLog-Platform-Golang
22

3-
相信DNSLog平台已经是安全从业者的标配。而公开的DNSLOG平台域名早已进入流量监控设备的规则库。同时也有隐私问题值得关注。于是撸了(凑了)一个一键搭建Dnslog平台的golang版本。可以使用其一键搭建自己的Dnslog平台。由于是作者的第一个golang程序,难免会有一些小问题。不过 他真的是一键!
3+
相信DNSLog平台已经是安全从业者的标配。而公开的DNSLOG平台域名早已进入流量监控设备的规则库。同时也有隐私问题值得关注。于是撸了(凑了)一个一键搭建Dnslog平台的golang版本。可以使用其一键搭建自己的Dnslog平台。
44

55
## 部署
66

7-
1. 克隆或者下载本仓库到你的服务器上
8-
9-
2. 决定是否开放公网访问?
10-
11-
倒数第几行中的`http.ListenAndServe("localhost:8000", nil) `,这样写的话只能通过localhost进行访问,墙裂建议不要修改,而后通过中间件反向代理后对外开放,方便做访问控制、日志管理等。如果想直接对外开放的话可以修改为:`http.ListenAndServe(":8000", nil)`
7+
1. 克隆本仓库到你的服务器上
8+
9+
2. 修改配置文件(config.toml)
10+
11+
```toml
12+
[front]
13+
template = "index.html"
14+
[back]
15+
listenhost = "0.0.0.0"
16+
listenport = 8000
17+
domains = [ "ns.bypass.com" ]
18+
cname = "www.baidu.com"
19+
[basicauth]
20+
check = false
21+
username = "yumu"
22+
password = "yumusb"
23+
```
24+
如小学英语老师教我们的那样。可以配置
25+
1. 前端模板文件
26+
2. 后端监听的主机、端口、域名、与CNAME响应
27+
3. HTTP BASIC AUTH的是否打开(check=true)与密码配置
28+
4. 本计划写多域名的,所以domains写成了一个列表
1229

1330
3. 域名准备
1431

@@ -22,18 +39,18 @@
2239
```shell
2340
$ go env -w GO111MODULE=on
2441
$ go env -w GOPROXY=https://goproxy.cn,direct #可选,国内机器不能上github则需要执行此处以设置{代}{理}
25-
$ go mod download github.com/miekg/dns # 拉取需要的库
2642
```
2743

2844
而后`go run main.go`即可看到如下字样,说明已经可以正常运行。
2945

3046
```shell
3147
[root@centos dnslog] go run main.go
32-
2021/03/24 13:58:54 Dnslog Platform requires a domain name parameter, such as `dns1.tk` or `go.dns1.tk`, And check your domain's ns server point to this server
33-
exit status 1
48+
2021/12/14 12:30:53 Will cname to www.baidu.com.
49+
2021/12/14 12:30:53 OK, Your Dnslog Domain is : ns.bypass.com.
50+
2021/12/14 12:30:53 Let's Begin!
51+
2021/12/14 12:30:53 OK, Will listen in 0.0.0.0:8000
3452
```
35-
36-
`go run main.go yourdomain` 可先在shell前台运行,看功能是否正常使用与检查数据存放目录是否成功创建。如果没问题的话 直接 `nohup go run main.go yourdomain &`
53+
`go run main.go` 可先在shell前台运行,看功能是否正常使用与检查数据存放目录是否成功创建。如果没问题的话 直接 `nohup go run main.go &`
3754
3855
## 使用
3956
@@ -69,15 +86,7 @@ PS:当然,你也可以通过 go build 打包成可执行文件进行跨平
6986
7087
## 可定义的配置项
7188
72-
1. 临时数据存放目录
73-
```go
74-
localdir, _ := os.Getwd()
75-
tmplogdir = localdir + string(os.PathSeparator)+"dnslog"+string(os.PathSeparator) //DNS日志存放目录,可自行更改。
76-
```
77-
78-
2. html页面
79-
80-
HelloHandler方法中的res变量
89+
详见 config.toml
8190
8291
## 检查NS指向是否成功?
8392
@@ -115,11 +124,8 @@ except:
115124
116125
## 更新日志:
117126
118-
+ 2021/4/3 引入token机制,保证隐私性。
119-
120-
+ 1970-2021/4/2 初版本。
121127
122-
## 其他
123-
124-
感谢高学长给予的大力帮助:https://github.com/netchiso
128+
+ 2021/12/14 在log4j2漏洞影响下,破100star。引入http basic auth,改为toml文件修改配置。
129+
+ 2021/4/3 引入token机制,保证隐私性。
125130
131+
+ 1970-2021/4/2 初版本。

config.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[front]
2+
template = "index.html"
3+
[back]
4+
listenhost = "0.0.0.0"
5+
listenport = 8000
6+
domains = [ "ns.bypass.com" ]
7+
cname = "www.baidu.com"
8+
[basicauth]
9+
check = false
10+
username = "yumu"
11+
password = "yumusb"

go.mod

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ module Dnslog
22

33
go 1.15
44

5-
require github.com/miekg/dns v1.1.41
5+
require (
6+
github.com/BurntSushi/toml v0.4.1 // indirect
7+
github.com/miekg/dns v1.1.43
8+
)

go.sum

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
2+
github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
3+
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
4+
github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg=
5+
github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=
6+
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
7+
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
8+
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
9+
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
10+
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04 h1:cEhElsAv9LUt9ZUUocxzWe05oFLVd+AA2nstydTeI8g=
11+
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
12+
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
13+
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
14+
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

index.html

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<!--by https://github.com/yumusb/DNSLog-Platform-Golang -->
2+
<!DOCTYPE html>
3+
<html>
4+
<head>
5+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6+
<title>DNSLOG Platform</title>
7+
<meta name="keywords" content="dnslog,dnslog平台">
8+
<meta name="description" content="一个无需注册就可以快速使用的DNSLog平台">
9+
<style>
10+
td {
11+
text-align: center;
12+
margin: auto
13+
}
14+
#domainarea p {
15+
display: inline-block
16+
}
17+
</style>
18+
</head>
19+
20+
<body>
21+
<div id="header" style="text-align:center;padding-top:2%">
22+
<p style="font-size:30px">DNSLOG平台</p>
23+
<hr style="height:2px;border:none;border-top:2px dashed #87cefa"><br>
24+
</div>
25+
<script>
26+
27+
function GetDomain() {
28+
if (key = localStorage.getItem("key"), null != key && 1 != confirm("获取新的子域名后将会丢失 " + key + ",请注意保存")) return !1;
29+
var e = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
30+
e.responseType = "json", e.onreadystatechange = function() {
31+
4 == e.readyState && 200 == e.status && (localStorage.setItem('key',e.response.domain), localStorage.setItem('token',e.response.token), document.getElementById("myDomain").innerHTML = e.response.domain, document.getElementById("token").innerHTML = e.response.token)
32+
}, e.open("GET", "/new_gen?t=" + Math.random(), !0), e.send()
33+
}
34+
function GetRecords() {
35+
if(localStorage.getItem("token")==null){
36+
alert("Get Domain First!!")
37+
return ;
38+
}
39+
var n = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
40+
n.onreadystatechange = function() {
41+
if (4 == n.readyState && 200 == n.status) {
42+
var e = n.responseText;
43+
if ("" == e || null == e || "null" == e) ktable = '<tr bgcolor="#ADD3EF"><th width="45%">DNS Query Record</th><th width="30%">IP Address</th><th width="25%">Created Time</th></tr><td colspan="3" align="center">No Data</td>', document.getElementById("myRecords").innerHTML = ktable;
44+
else {
45+
obj = JSON.parse(e), table = '<tr bgcolor="#ADD3EF"><th width="45%">DNS Query Record</th><th width="30%">IP Address</th><th width="25%">Created Time</th></tr>';
46+
for (var t = Object.keys(obj).length - 1; t >= (0 < Object.keys(obj).length - 10 ? Object.keys(obj).length - 10 : 0); t--) table = table + "<tr><td>" + obj[t].subdomain + "</td><td>" + obj[t].ip + "</td><td>" + obj[t].time + "</td></tr>";
47+
document.getElementById("myRecords").innerHTML = table
48+
}
49+
}
50+
}, n.open("GET", "/" + localStorage.getItem("token") + "?t=" + Math.random(), !0), n.send()
51+
} </script>
52+
53+
<div id="content" style="text-align:center"><button type="button" onclick="GetDomain()">Get
54+
SubDomain</button><button type="button" onclick="GetRecords()">Refresh Record</button><br>
55+
<div id="domainarea">🌐:<p id="myDomain"></p>&nbsp;&nbsp;🔑:<p id="token"></p>
56+
</div>
57+
<center>
58+
<table id="myRecords" width="700" border="0" cellpadding="5" cellspacing="1" bgcolor="#EFF3FF"
59+
style="word-break:break-all;word-wrap:break-all">
60+
<tbody>
61+
<tr bgcolor="#ADD3EF">
62+
<th width="45%">DNS Query Record</th>
63+
<th width="30%">IP Address</th>
64+
<th width="25%">Created Time</th>
65+
</tr>
66+
<tr>
67+
<td colspan="3" align="center">No Data</td>
68+
</tr>
69+
</tbody>
70+
</table>
71+
</center>
72+
</div>
73+
<script>key = localStorage.getItem("key"), token = localStorage.getItem("token"), null != key && null != token && (document.getElementById("myDomain").innerHTML = key, document.getElementById("token").innerHTML = token, GetRecords())</script>
74+
<div style="text-align:center;margin:0 auto;bottom:100px;width:99.6%;padding-top:3%">
75+
<hr style="height:2px;border:none;border-top:2px dashed #87cefa"><br>
76+
<center><span style="color:#add3ef">Copyright&copy;2021 DNSLOG Platform All Rights Reserved.</span></center>
77+
</div>
78+
</body>
79+
80+
</html>

0 commit comments

Comments
 (0)