web-dev-qa-db-ja.com

tlsで暗号化されたSMTPトラフィックをログに記録するにはどうすればよいですか?

STARTTLSの後にローカルの接尾辞がAmazonSESsmtpdに何を言っているのか知りたいのですが。プレーンテキストなので、理解できます。 Amazon SESにはTLSが必要なため、一時的にオフにすることはできません。

私は現在、このトリックでトラフィックの両方のレッグをログに記録しています。

mkfifo proxypipe
cat proxypipe | nc -l 11111 | tee -a inflow | nc email-smtp.us-east-1.amazonaws.com smtp | tee -a outflow 1>proxypipe

次に、email-smtp.us-east-1.amazonaws.com:25の代わりにlocalhost:11111と接尾辞を話します。彼らが平文で話している限り、これは素晴らしいトランスクリプトを生成します。 STARTTLSが表示されるとすぐに、もちろんすべてが意味不明になります。

これをopenssl経由でルーティングしたり、opensslなどを使用して後処理したりして、お互いに正確に何を言っているかを把握できるトリックはありますか?グーグルは何の答えも生み出していません。

2
Johannes Ernst

ネットワーク接続をスニッフィングすることを気にしないでください。 @ voretaq7が説明したように、できません。代わりに、 postfixに接続をログに記録させる リモートSMTPサーバーのIPアドレスを debug_peer_list

そして、それでも何が起こっているのかを理解するのに十分な詳細が得られない場合は、 smtp_tls_loglevel 4 ネットワークを通過したすべての完全なダンプを取得します。

完了したら、必ず構成を元に戻してください。絶対に必要な時間より長くデバッグをオンのままにしたくありません。

8
Michael Hampton

あなたの質問を言い換えさせてください:

送信されているクリアテキストを表示するTLS暗号化接続の途中に何かを貼り付けたいと思います。

。 。 。さて、今はあまり安全ではないでしょう?つまり、TLSの要点は、あなたがやろうとしていることを正確に防ぐことです!-いいえ、何ですかあなたが求めているのは不可能であり、正気の管理者が望むログのレベルに近い場所でもありません。
知りたいのは、接続した相手(リモートシステム)、伝えた内容(AからBへのメール)、および伝えた内容(OK、延期、拒否)だけです。


TLS接続を本当に盗聴したい場合は、サーバーをだまして、偽のSSL証明書(キーを持っている)を提示するプロキシに接続させる必要があります。プロキシはデータを復号化(およびログに記録)できます。次に、それを再暗号化して、Amazonの実サーバーに転送します。
OpenSSLのs_clientおよびs_serverサブシステムを使用してそのような獣を装備することはできますが、そのような獣の実装は読者の演習として残されています。

5
voretaq7