web-dev-qa-db-ja.com

Ubuntuのすべてのポート(送信)ですべてのメールパッケージを拒否する

ISPに問題がありました。 IPから送信されるメールが多かったため、インターネット接続がブロックされました。問題は、私たち全員がgmailを使用しており、私たちが知る限り、ISP SMTPサーバーを介してメールが送信されていないことです(サーバー上にない場合、ISPはポート25へのすべてのトラフィックをブロックします)。

事前にポート25をブロックしたので、そのメールサーバーへの送信メールはネットワークから出られません。ただし、これは他のサーバーのポートへのメール送信を拒否しません。

私がやりたいのは、私たちのネットワーク上でそれらのメールを送信しているものを見つけることです。 Ubuntuを使用してメールパケットを識別し、それらを拒否できるプログラムはありますか?ちなみに、UbuntuルーターはSMTPサーバーを実行していません。

2
WesleyE

tcpdump は、パケットをネットワークからファイルまたは画面にダンプするための便利なツールであり、一般に配布リポジトリで利用可能であり、このような状況について十分に文書化され、テストされています。

Ubuntuルーターapt-get install tcpdumpにtcpdumpをインストールし、SMTPトラフィックを監視するように構成できます。

 # tcpdump -s0 -w/tmp/smtp_dump port 25
 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

ホストが別のSSHセッションからSMTPトラフィックを送信しているファイルを確認できます。

# tcpdump -qr /tmp/smtp_dump 
reading from file /tmp/smtp_dump, link-type EN10MB (Ethernet)
13:27:54.291884 IP g0801.hpl.com.33942 > pz-in-f27.1e100.net.smtp: tcp 0
13:27:54.315294 IP pz-in-f27.1e100.net.smtp > g0801.hpl.com.33942: tcp 0
13:27:54.315323 IP g0801.hpl.com.33942 > pz-in-f27.1e100.net.smtp: tcp 0
13:27:54.339110 IP pz-in-f27.1e100.net.smtp > g0801.hpl.com.33942: tcp 45
...

wireshark をローカルマシンにインストールしてダンプファイルをダウンロードするか、sshコマンドラインでtsharkを使用すると、より高度な出力を取得できます。

警告:SMTPトラフィックが多い場合、tcpdumpはクイックタイムでディスクをいっぱいにするため、出力ファイルls -lh /tmp/smtp_dumpを確認し、確認するデータが数MBになったら、ctrl-cでコマンドを停止します。

tcpdumpのインターフェースオプション(-i eth0):ルーターがeth0とは異なるインターフェースを使用している場合は、-iオプションを使用して選択する必要があります。 tcpdump -i bond0 -s0 -w/tmp/smtp_dump port 25

2
Tom H

すべてのSMTPパッケージをブロックすることをお勧めします。これは非常に面倒な場合がありますが、幸いなことに l7-filter があります。それは多くの 異なるプロトコル をブロックする可能性があります、あなたはあなたのゲートウェイ/ファイアウォールにそれをインストールする必要があります。

2
timmeyh

メールは、ポート465および587で送信することもできます(465は取り消されていますが、まだ使用されている可能性があります)。プロキシサーバーの悪用と組み合わせると、メールはポート80、443、3128(イカの場合)、またはその他の多くの場所で送信することもできます。

ネットワークにはインターネットへの単一の出口点がありますか?その時点でファイアウォールはありますか?

そうでない場合は、それが必要になります。複数の出口ポイントがある場合は、それぞれにファイアウォールを配置する必要があります。 (おそらく同じ物理ボックス。)

デフォルトですべてをドロップし、必要なトラフィックのみを通過させるようにファイアウォールを設定します。

通常のトラフィックが何であるかわからない場合は、ファイアウォールルールの最後にログ行を追加して、まだ一致していないものすべてがログに記録されるようにすることができます。

ファイアウォールを使用してトラフィックをブロックできたとしても、メールを送信しているものを追跡して停止する必要があります。どのプロセスがメールを送信しているかわからない場合、メールは簡単に侵害されたシステム、オープンプロキシ、または一部のスパマーが悪用しているWebフォームである可能性があります。私は自分のネットワークにそれらの1つを望んでいません。

1
Ladadadada

最善の解決策は、送信メールを送信するときに送信ポート(587)またはSSMTPポート(465)を使用するようにメールクライアントを構成し、ポート25へのすべての送信トラフィックをブロックすることです。ほとんどのメールプロバイダーは、送信のためにこれらのポートへのアクセスを許可する必要があります。送信メール。

0
mgorven