web-dev-qa-db-ja.com

NTPがUDPポート123への双方向ファイアウォールアクセスを必要とするのはなぜですか?

From ntpを許可するiptablesルールは何ですか?

iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --sport 123 -j ACCEPT

また、 the NTPウェブサイト から:

... ntpdには、特権UDPポート123への完全な双方向アクセスが必要です。..

私の質問は、なぜですか? NTPに詳しくない人にとっては、これは潜在的なセキュリティホールのように思えます。特に、私のサーバーにファイアウォールのポートを開いて時間を同期できるように依頼する場合は特にそうです。ファイアウォールでこのアクセスが必要であることをクライアントに納得させるために、クライアントに適切な正当化を与える人はいますか?助けていただければ幸いです! :)

17
Dawngerpony

サーバーとして機能し、クライアントが同期できるようにする場合は、着信トラフィックのNTPのポートのみを許可する必要があります。

そうでない場合、NTP=状態の存在により、着信したNTPパケットがブロックされているか、または開始した既存のファイアウォール状態によって許可されているかが自動的に判断されます。

iptables -A OUTPUT -p udp --sport 123 --dport 123 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED、RELATED -j ACCEPT

Iptablesのルールが適切かどうかをお知らせください。 iptablesの経験はありません。私のNTPクライアントは、pfSenseがステートフルファイアウォールであるため、送信許可ルールのみを使用してpfSenseルーターで同期を維持します。

10
Ben Cook

NTP RFC はクライアントの送信元ポートに関して次のように指定しているため、NTPはポート123での双方向アクセスを必要とします。

対称モード(1および2)で動作している場合、このフィールドには、IANAによって割り当てられたNTPポート番号PORT(123)が含まれている必要があります。

クライアントのソースポートは123であるため、サーバーが応答を送信すると、ポート123に送信されます。当然、その応答を受信できるようにするために、クライアントはポート123で着信応答を許可する必要があります。通常、応答は返されます一部の 一時ポート 範囲。

上記の Ben Cook で述べたように、ステートフルファイアウォールは明示的なルールなしで応答を返すことができるため、これはステートレスファイアウォールを処理する場合にのみ必要です。

1
Gurpreet Atwal

最善の解決策は、サーバーにntp信号を提供すると予想されるIPアドレスに対してのみ、入力用にポート123を有効にすることだと思います。
ntp構成ファイル/etc/ntp.conf内に、サーバーがポイントするいくつかのntpサーバーのアドレスがあります。 lookupコマンドを使用して、各アドレスに対応するIPを見つけることができます。

Host -t a 0.debian.pool.ntp.org

次に、サーバーファイアウォールにルールを追加できます。

iptables -I INPUT -p udp -s 94.177.187.22 -j ACCEPT

...等々。
これにより、悪意のある人物がサーバーを損傷するのを防ぐことができます。
出力を制限しても無駄だと思います。

0