私の質問は、PHP スクリプトがメールを送信するのを防ぐことに関するものです。これは、サーバー セキュリティに関する別の一般的な質問と重複しているとマークされていますが、この質問の主題はそれではありません。
私の Debian / Apache / PHP サーバーのさまざまな Web ディレクトリに、何らかの方法で不正な base64 エンコードされた PHP ファイルを挿入しているハッカースパマーとの長く苦しい戦いの後 (この苦しい戦いには、まず既存のスクリプトにパッチを適用し、FTP パスワード、Web サービス パスワード、および MySQL パスワードを変更し、次にサイトを最初から再構築し、maldet をインストールして (これにより問題は抑制されましたが完全には解消されませんでした)、最後にサービスを停止して (アンインストールはしません) postfix を完全にオフにし、最後にファイアウォールでサーバーからのポート 25 トラフィックをブロックすることが含まれていました)、まだ問題が残っています。
数か月間、問題は解消され、mxtoolbox によるとサーバーは自動的にブラックリストから削除されました。しかし、今日、私のサーバーが再び多くのサービスによってブラックリストに登録されたという mxtoolbox のメールを受け取りました。送信ポート 25 のトラフィックを無効にしているのに、どうしてこのようなことが起こるのか、よくわかりません。
問題が発生すると、私のサーバー上の特定の Web ユーザーからの何十万もの電子メールが postfix mailq に蓄積されてしまいます。
私の質問は次のとおりです:
ポート25のトラフィックを無効にした場合
iptables -A OUTPUT -p tcp --dport 25 -j REJECT
、mxtoolboxが私のサーバーがまだスパムを送信していると報告するのはなぜでしょうか? mailq を確認すると、メールはバックアップされています。 postfix を起動すると、mailq 内の項目が期待どおりに送信されず、(delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused)
各エントリの横に が表示されます。X-PHP-Originating-Script
mailq 内のスパムメールの行を調べて RAT の場所を特定し、問題のファイルを見つけて破壊することで、5 日から数か月間にわたって問題を解決できます。PHP スクリプトによるメール送信を完全に防ぐにはどうすればよいですか?php.ini ファイルに入力するとdisable_functions = mail
、内部関数の使用は防止されますが、スパマーが悪用できるカスタム関数の使用は防止されないと理解しています。他に何が間違っているのでしょうか?
注意: 2 番の方法で根本的な問題が解決されるわけではないことは承知していますが、アドバイスに従い、理解できる限りの方法でサーバーのセキュリティを強化してきた結果、私は「すべてのセキュリティ問題を解決する」のではなく、「メールの評判の問題に対処する」ことに取り組んでいます。
これは私の最後の関連質問ServerFault でご覧ください。
答え1
選択肢はある
- 接尾辞を削除
- php-mail (Ubuntu/Debian パッケージ名) を削除します
ただし、スパマーは独自の SMTP コードを作成できます。
SMTPが実際にブロックされているか確認するには次のようにします
telnet alt4.gmail-smtp-in.l.google.com 25
答え2
ポート 25 のファイアウォール制御は依然として最善のオプションです。有効なユーザーに、mandrill などの認証済みサーバーや smtps (tcp/587) 経由でメールを送信するように指示するか、サードパーティの ESP によるメール API を使用するように指示できます。
ファイアウォール アプローチを使用しない限り、ソケット経由で MX サーバーに直接接続する PHP コードを記述することもできます。
また、TCP/25 をキャッチオール システムにリダイレクトして、誰が侵害を受けているか、または不正行為を行っているかを監視することもできます。