デフォルトのiptablesOUTPUTチェーンをDROPパケットに設定しました。次に、ntpユーザーのみがntpパケットを送信できるようにするファイアウォールルールを作成しました。
iptables -A OUTPUT -m owner --uid-owner ntp -p udp --dport 123 -j ACCEPT
ただし、10〜20分ごとに次のように表示されます。
ntpd[27769]: sendto(<snip>) (fd=22): Operation not permitted
次に、ルールの-m owner --uid-owner ntp
部分を削除し、その前にログルールを追加しました。
iptables -A OUTPUT -p udp --dport 123 -j LOG --log-level debug \
--log-prefix "Spotted a NTP packet: " --log-uid
ntpd
が再び機能し始め、カーネルリングバッファに次のように表示されます。
Spotted a NTP packet: <snip> PROTO=UDP SPT=123 DPT=123 LEN=56 UID=0
--log-uid
スイッチをLOG
ターゲットに使用していて、ntpd
がntpユーザー(uid = 38)として実行されています。
# ps auxf | grep ntpd
ntp 27769 0.0 1.0 4512 4508 ? SLs Jan04 0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid
それでも、ログにはUID=0
が表示されます。システム上で他にntpパケットを送信しているものはないと確信しています。また、Operation not permitted
を取得しなくなったため、実際にntpd
がパケットを送信していると確信しています。
これらのパケットのntpユーザーを一致させなくても大丈夫だと思います。ただし、iptablesが表示されない理由を誰かが説明できますかUID=38
これらのパケットの場合
プログラムが1024未満のポートを使用するには、ルートである必要があります。 NTPのような多くのアプリケーションが起動し、ポートをrootとして開き、他のすべての定義済みアカウントに特権をドロップします。
Iptablesルールに誤りがあります:
iptables -A OUTPUT -m owner --uid-owner ntp -p udp --dport 123 -j ACCEPT
-uid-ownerを使用する場合は、uidを定義する必要があります。 -数値。
プログラム名の場合別のオプションが必要です:-cmd-owner。正しいルールは次のとおりです。
iptables -A OUTPUT -m owner --cmd-owner ntp -p udp --dport 123 -j
詳細な説明あなたは素晴らしい 本 byOskar Andreassonで読むことができます。