web-dev-qa-db-ja.com

どのユーザーがポート25にメールを配信しているかをiptablesで記録します

CBLでブラックリストに登録されたため、iptablesを使用して次のファイアウォールルールを設定しました。

#!/bin/bash
iptables -A OUTPUT -d 127.0.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --gid-owner mail -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --uid-owner root -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --uid-owner Debian-exim -j ACCEPT
iptables -A OUTPUT -p tcp -m limit --limit 15/minute -m tcp --dport 25 -j LOG --log-prefix "LOCAL_DROPPED_SPAM"
iptables -A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable

Rootまたはメールグループメンバー以外のユーザーでローカルホストからポート25に接続できません->それで動作しているようです。

まだいくつかの質問が残っています:

  • サーバーでホストされている不正なPHPスクリプトからのスパムを防ぐために、このルールセットをどの程度効果的に評価しますか?
  • 同じステートメント内でポート25と587をブロックする方法はありますか?
  • /usr/sbin/sendmailの使用もこのルールセットによって制限またはブロックされていますか?
  • ポート25にコンテンツを配信しようとする他のすべての試行のユーザー名をログに記録する方法はありますか?
4
Maus

OUTPUTテーブルのポリシーをDROPに設定してから、関連するポートなどを明示的に開く方がよいでしょうが、これは環境に固有であるため、OPの演習です。

-m multiportを使用して、最大15個のポートに一致させることができます。

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m owner --gid-owner mail -j ACCEPT

グループメールを両方のポートで送信できるようにする、または

このような新しいアウトバウンド接続をログに記録できます

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m state --state NEW -j LOG --log-uid --log-prefix  "LOCAL_DROPPED_SPAM "

このようなメッセージが表示されます

11月11日12:52:26ホスト名カーネル:LOCAL_DROPPED_SPAM IN = OUT = eth0 SRC = 192.168.254.181 DST = 192.168.254.187 LEN = 60 TOS = 0x10 PREC = 0x00 TTL = 64 ID = 53476 DF = PROTO = TCP SPT = 49893 DPT = 25 WINDOW = 14600 RES = 0x00 SYN URGP = 0 ID = 1000 GID = 10

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -j DROP

最終的に両方のポートのすべてのアウトバウンド接続をドロップします。

Iptablesのアクションルールは、テーブルにある順序であり、最初の一致が優先されることに注意してください。

  • 最初にALLOWルールを配置します
  • LOGルールに従ってこれに従ってください
  • 次にドロップ
6
user9517