环境:Nginx
问题:

1.某网络实施网络准入控制,需要劫持不受信网段的客户端 所有访问到指定引导页面
2.需要劫持PS4 用户访问任意网站,或用户指南 方式全自动破解

解决办法:搭建dnsmasq DNS服务器,全域名解析指向内网,搭配ngnix 反向代理所有域名到指定页面

背景:

1.局域网内用户取得IP后,需要进行portal认证才能上网,需要引导用户去认证页面,通过DNS劫持和nginx转发,用户访问任意网址自动跳转到弹窗页面
2.PS4 破解需要访问Hen的网站,对于架设在内网的网站需要在浏览器中手动输入网址才能发起破解,想要从用户指南菜单自动跳转到网站 全自动执行Hen

技术栈:Docker + dnsmasq + Nginx


1.DNS劫持 :

为了图省事dnsmasq 直接拉的docker, 参考下面的配置文件,你如果有openwrt的路由器也可以直接使用,改配置文件即可,
这个镜像 jpillora/dnsmasq 带一个web修改配置文件界面,方便

version: "3.3"

services:
  dns-server:
    image: jpillora/dnsmasq
    container_name: dns-server
    restart: always
    environment:
      TZ: Asia/Shanghai
      HTTP_USER: admin
      HTTP_PASS: admin
      PORT: "5380"
    network_mode: "host"
    volumes:
      - /volume3/docker/dnsmasq/config/dnsmasq.conf:/etc/dnsmasq.conf:rw
    # 日志大小限制
    logging:
      driver: json-file
      options:
        max-size: "10m"

2.配置dnsmasq :

2.1 配置dnsmasq :

访问容器的5380端口,修改配置文件,重启服务
我们的目的是用户访问任意网址都去我们的网站,直接这一条就好了:

#所有域名
address=/#/192.168.31.232

在这里插入图片描述

2.2 测试dnsmasq :

使用浏览器访问任意网址测试下,或者直接nsloouo或者ping

 nslookup www.baidu.com 192.168.31.192

在这里插入图片描述

到这里,准入的部分,你只需要将这个VLAN/网段的 DHCP的DNS设置为这台,就可以实现自动跳转到验证页面了

3.网站篇:

安装ngnix是为了实现PS4 用户指南功能,他访问的是一个长链接,类似这样:
https://manuals.playstation.net/document/ct/ps4/index.html
如果直接转发域名,它携带的/document/ct/ps4/index.html传过去,就打不开了
就毕竟我们的伪站是没有这么多路径、虚拟目录,这就需要用到ngnix的反向代理了

为了省事还是用docker,参考下列配置:
用的jc21/nginx-proxy-manage 这个容器,web配置更方便了

version: '3'
services:
  app:
    image: 'dockerproxy.com/jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'  # 冒号左边可以改成自己服务器未被占用的端口
      - '82:81'  # 冒号左边可以改成自己服务器未被占用的端口
      - '443:443' # 冒号左边可以改成自己服务器未被占用的端口
    volumes:
      - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中```

打开NPM的配置网站,就是81端口对应的那个,修改默认网站设置,先随便填写一个网站

在这里插入图片描述
然后打开配置文件直接修改为所有路径到HEN的网站:
一般是在容器的ngnix/data/nginx/default_host/site.conf 这个文件
直接修改为如下样式

# ------------------------------------------------------------
# Default Site
# ------------------------------------------------------------

server {
  listen 80 default;
listen [::]:80 default;

  server_name default-host.localhost;
  access_log /data/logs/default-host_access.log combined;
  error_log /data/logs/default-host_error.log warn;


  include conf.d/include/letsencrypt-acme-challenge.conf;
	location / {
    rewrite ^ http://192.168.31.192:84/900/02/index.html permanent;
}

}

找台电脑DNS设置为dnsmasq 的服务器,随便访问下任何网站,并携带路径测试,应该都能转发到目标网站

比如:
http://123/456
http://abc/def/123

4.修改客户端DNS

现在去PS4修改DNS执行dnsmasq,你也可以使用dhcp的option功能,让客户端自动获取不一样的dns

参考这篇文章:https://blog.csdn.net/wangrui1573/article/details/133270271

5.在PS4上测试用户指南

5.1 确保DNS正确

5.2 打开用户指南,观察页面跳转和全自动破解

在这里插入图片描述

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐