プログラム/スクリプトをアップロードする人が自分のコンピュータにスパムを送信するのを防ぎたいと思います。
唯一の合法的なユースケースは、送信ポートを介してpostfixに接続し、認証後に電子メールを送信することです。その後、Postfixは他のメールサーバーに接続して送信します。
*:SMTPポートへの接続を許可し(この接続を開こうとするプログラムがpostfixの場合)、他の接続試行を無視するためにiptablesを使用することを検討しています。
2つの質問があります。
1)postfixプログラムが接続を開こうとしていることをiptablesでどのように識別しますか?
2)スクリプトがsendmailを呼び出し、認証なしで直接メッセージを送信するのを防ぐ方法は何ですか?おそらくcronのようないくつかのプログラムがsendmailを使ってroot@localhostに電子メールを送信しようとするので、それは簡単ではないかもしれません。これはまだ動作します。
システムは Debian を確実に実行します。
ベストアンサー1
(1)Postfixを識別する最も簡単な方法は、--owner --uid-owner postfix
Postfixユーザーを指定するためにiptablesを一致させることです。次のソリューションと同様に、独自のネットワーク名前空間またはcgroupでPostfixを実行することもできます。プロセスへのネットワークアクセスをブロックしますか?(該当する名前空間またはcgroupのみがSMTPトラフィックを開始できます。)
(2)スクリプトsendmail
が実行されました持つ認証:システムでユーザーとして実行されます。実際、このインターフェースを使用することがたくさんあります。 Cronはそのうちの1つですが、ランダムスクリプトも同様です。電子メールを送信するシステムのほとんどすべてがCronを使用します。インストールされているMUA(muttなど)も通常、デフォルトでそれを使用します。
おそらくファイルシステム権限を使用するか(ACLを使用して特定のグループまたは特定のユーザーにのみ実行可能にする)、Postfix設定を使用するか(私は個人的にEximを使用しているため、これを行う方法がわかりません)、特定のユーザーにのみロックできます。あります。 )。