背景
众所周知,mitmweb是mitmproxy的web界面,当我们写了一些mitmproxy的脚本后,可以动态的拦截修改请求,从而实现一些特殊功能。如果只是自己在电脑面前用还好,但如果想要分享给其他人使用或者自己随时随地使用,就需要把mitmproxy部署到公网上,那么就需要考虑两个安全问题:
- 代理服务器需要设置密码避免被扫到用作非法行为 -> 这个官方原生支持
- mitmweb页面需要设置密码避免流量被黑客看到并加以利用 -> 这个官方在早期版本中支持,但后续删掉了这一功能,至今未再次支持
解决方案
mitmweb启动命令如下:
1
| ./mitmweb --listen-host 0.0.0.0 --listen-port 33899 --ssl-insecure --proxyauth admin:123456 --set block_global=false --set onboarding_host=m1.it --set web_port=8082 --set web_host=127.0.0.1 -s mitm_modify_response.py
|
我们将proxy_server设置在0.0.0.0:33899端口,同时给proxy设置用户名密码。然后将web_ui设置在127.0.0.1:8082端口
nginx配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| server { listen 80; server_name 域名; return 301 https://$host$request_uri; }
server { listen 33890; server_name 域名; location / { proxy_set_header Host localhost:33899; proxy_set_header Origin http://localhost:33899; proxy_pass http://localhost:33899; proxy_http_version 1.1; } }
server { listen 443 ssl; server_name 域名; ssl_certificate /etc/mitm/cert.pem; ssl_certificate_key /etc/mitm/key.pem; client_max_body_size 128M; server_tokens off; charset utf-8; location / { auth_basic "authentication"; auth_basic_user_file .htpasswd; proxy_set_header Host localhost:8082; proxy_set_header Origin http://localhost:8082; proxy_pass http://localhost:8082; expires off; proxy_http_version 1.1; proxy_redirect http://localhost:8082 http://localhost; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Cookie $http_cookie; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
|
auth_basic_user_file就是我们设置的HTTP Basic Auth,这个就不赘述了
使用时我们带用户名密码连接 x.x.x.x:33899/域名:33899 即可