OpenVPNサーバーを構成し、tcpdump
経由でHTTPトラフィックを監視できます。 HTTPSトラフィックも監視する方法はありますか?
ヒント:
VPNクライアントのマシンのルート証明書としての自己署名SSL証明書。
上記のヒントでトラフィックを監視できる場合は、CentOS + OpenVPNでそれを実装する方法を指定してください。
TL:DR; VPNサーバーに透過プロキシをセットアップする必要があります。
Iptablesを使用して、すべての送信トラフィックをVPNサーバー(おそらく、VPNクライアント)からポート443に再ルーティングできます。この後、SSLビットも処理する mitmproxy などのインターセプトプロキシを実行できます。
まず、すべての発信Webトラフィックをローカルプロキシにリダイレクトします。たとえば、次のようにします。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080
これは透過的なプロキシになります。つまり、すべてのWebポートへのトラフィック(上記の場合、ポート80と443のみ、さらに追加できます)は、クライアントがブラウザにプロキシを設定する必要はありませんが、トラフィックはプロキシを通過します。
ボックスがトラフィックを転送することを確認しますが、OpenVPNを実行している場合は、通常これがすでに行われています(そうしないと、インターネットにアクセスできません)。
次に、MiTMプロキシなどのインターセプトプロキシを設定する必要があります。これは、単に-Tパラメータを指定して透過モードで実行できます。
mitmproxy -T --Host
これはCAをセットアップし、その証明書はサーバーの〜/ .mitmproxyディレクトリにあります。その証明書はクライアントに配布する必要があり、クライアントから信頼される必要があります。 --Hostパラメーターは、Hostヘッダーの値が使用されるようにします。
これにより、HTTPトラフィックにアクセスできるようになります。そして、あなたはそれがあなたのMITMProxy画面で起こっているのを見るはずです。大量のトラフィックを処理する、またはこれらを格納するには、-outfileパラメーターをmitmproxyに追加して、すべてのトラフィックをファイルに書き込みます。詳細は http://docs.mitmproxy.org にあります。
一部のクライアントは、証明書のピン留めにより、特定のSSL Webサイト(googleなど)への接続を妨げます。そのため、機能が損なわれるか、この情報をトラップしないルールを実装する必要があります。これは、MiTMproxyで行うか、iptablesを使用して行うことができます。
また、倫理的であり続けること。トラフィックが監視されていることをユーザーに伝える必要があります。彼らはとにかく見つけることができます(すべての証明書は同じCAによって「署名」されるため、あなたのものです)。