安全矩阵

 找回密码
 立即注册
搜索
查看: 2473|回复: 0

工具|DNSLOG平台Golang一键启动版

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-12-15 16:14:58 | 显示全部楼层 |阅读模式
原文链接:工具|DNSLOG平台Golang一键启动版
DNSLog-Platform-Golang
相信DNSLog平台已经是安全从业者的标配。而公开的DNSLOG平台域名早已进入流量监控设备的规则库。同时也有隐私问题值得关注。于是撸了(凑了)一个一键搭建Dnslog平台的golang版本。可以使用其一键搭建自己的Dnslog平台。由于是作者的第一个golang程序,难免会有一些小问题。不过 他真的是一键!

部署
  • 选择你喜欢的方式下载本目录下的main.go文件
    不多说。
  • 决定是否开放公网访问?
    倒数第几行中的http.ListenAndServe("localhost:8000", nil) ,这样写的话只能通过localhost进行访问,墙裂建议不要修改,而后通过中间件反向代理后对外开放,方便做访问控制、日志管理等。如果想直接对外开放的话可以修改为:http.ListenAndServe(":8000", nil)
  • 域名准备
    做好NS指向即可。不会检查请看后文
  • 尝试运行
    先go get github.com/miekg/dns 获取需要的库。go run main.go yourdomain 可先在shell前台运行,看功能是否正常使用与检查数据存放目录是否成功创建。如果没问题的话 直接 nohup go run main.go yourdomain &
    (第一次运行需要到github拖miekg/dns库,所以需要你的服务器能上github)


使用直接web访问进行使用。或者使用api接口。只有两个URI,
  • /new_gen
    生成随机的八位字符,组合到domain中并返回。当然也可以本地生成,没做限制,无所谓。
  • /八位字符
    第一步生成的八位字符可以直接访问,可以获取到相关的DNS解析记录。返回为null或者正常数据的JSON形式。

PS:当然,你也可以通过 go build 打包成可执行文件进行跨平台或者离线运行。这都依赖于go的特性。

可定义的配置项
  • 临时数据存放目录
    1. localdir, _ := os.Getwd()
    2. tmplogdir = localdir + "/dnslog/" //DNS日志存放目录,可自行更改。
    复制代码

  • html页面
    HelloHandler方法中的res变量
  • 子域名长度
    数据接口判断了访问路径是否为9,是才会尝试读取文件中储存的记录。
    1. if len(r.URL.Path) == 9 {
    2.                 w.Header().Set("Content-Type", "application/json")
    3.                 res = GetDnslog(r.URL.Path)
    复制代码


    new_gen接口返回的随机key长度为8
    key := randSeq(8)写入文件时判断了子域名长度是否为8
    if len(idkey) == 8 {

检查NS指向是否成功?
可以通过linux下命令行工具host -t ns sub.youdomain.com来确认NS服务器。也可以通过在线工具:https://myssl.com/dns_check.html (选择NS类型)

其他感谢高学长给予的大力帮助:https://github.com/netchiso


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-30 01:22 , Processed in 0.017037 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表