mitmproxy
mitmproxy構築
mitmproxyでhttps対応Data Compression Proxyを作るを参考に構築
構築履歴
Python3.6インストール
yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum install git vim gcc libxml2-devel libxslt-devel zlib-devel libjpeg-turbo-devel openssl openssl-devel python-devel \
python36u python36u-libs python36u-devel python36u-pip
mitmproxyインストール
pip3.6 install mitmproxy pillow-simd brotli
mitmproxy ユーザー作成
useradd -s /sbin/nologin -m -d /etc/mitmproxy mitmproxy
touch /etc/mitmproxy/mitmdump_daemon.sh
chmod 700 /etc/mitmproxy/mitmdump_daemon.sh
touch /etc/mitmproxy/flows.py
chmod 700 /etc/mitmproxy/flows.py
touch /etc/mitmproxy/mitmproxy-iptables-start.sh
chmod 700 /etc/mitmproxy/mitmproxy-iptables-start.sh
chown -R mitmproxy:mitmproxy /etc/mitmproxy
flows.py
/etc/mitmproxy/flows.py
vi /etc/mitmproxy/flows.py
mitmproxy起動スクリプトの作成
/etc/mitmproxy/mitmdump_daemon.sh
# !/bin/bash
/bin/mitmdump \
--mode transparent \
--listen-port 3126 \
--ssl-insecure \
-s /etc/mitmproxy/flows.py \
--set stream_large_bodies=10m \
--ignore-hosts '(mzstatic.com|apple.com|icloud.com|mobilesuica.com|crashlytics.com|google-analytics.com|.*\.line-scdn.net|.*\.line.naver.jp|.*\.twitter.com)' \
--anticomp \
--set block_global=false \
--set flow_detail=2
mitmproxy Systemd Unit ファイルの作成
/usr/lib/systemd/system/mitmdump.service
Description=mitmdump service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/etc/mitmproxy/mitmdump_daemon.sh
Restart=always
RestartSec=1
User=mitmproxy
Group=mitmproxy
[Install]
WantedBy=multi-user.target
mitmproxy Firewall設定
firewall-cmd --permanent --new-zone=mitmproxy
firewall-cmd --permanent --zone=mitmproxy --add-port=3126/tcp
firewall-cmd --permanent --zone=mitmproxy --add-source=192.168.0.0/24
firewall-cmd --reload
firewall-cmd --list-all --zone=mitmproxy
VPN経由の80/443宛ての接続をmitmproxyに向ける
firewall-cmdでのコマンド投入方法がわからないのでiptablesで登録する
/etc/mitmproxy/mitmproxy-iptables-start.sh
# !/bin/bash
firewall-cmd --reload
sleep 3
iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 80 -j REDIRECT --to-port 3126
iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 443 -j REDIRECT --to-port 3126
ip6tables -t nat -A PREROUTING -i ppp+ -p tcp --dport 80 -j REDIRECT --to-port 3126
ip6tables -t nat -A PREROUTING -i ppp+ -p tcp --dport 443 -j REDIRECT --to-port 3126
OS起動時に実行されるようにする
cp -av /etc/rc.d/rc.local /root/rc.local.backup
echo '/etc/mitmproxy/mitmproxy-iptables-start.sh' >> /etc/rc.d/rc.local
/etc/mitmproxy/mitmproxy-iptables-start.sh
mitmproxyの起動
systemctl daemon-reload
systemctl start mitmdump.service
systemctl enable mitmdump.service
iphone設定(危険なので自己責任で)
- /etc/mitmproxy/.mitmproxy/mitmproxy-ca-cert.pemをiphoneにインストール
- 設定 -> 一般 -> 情報 -> 証明書信頼設定 -> mitmproxy をONにして証明書を有効にする