PFはUDPパケットの状態を保存します=セキュリティの問題?

PFはUDPパケットの状態を保存します=セキュリティの問題?

過去数日間、私はiptablesの優れた選択肢であり、さらに改善された安全なフィルタリング方法であるPFについてたくさん読んでいます。それにもかかわらず、セキュリティ上の問題であると考えられる次の声明を見つけました。

UDPでステートを保つ:「UDPはステートレスプロトコルであるため、UDPを使用してステートを作成することはできません!」と言われます。 UDP通信セッションには、状態(明示的な通信の開始と停止)の概念はありません。 、これはUDPセッションの状態を生成するPFの機能には影響しません。 「開始」および「終了」パケットを持たないプロトコルの場合、PFは一致するパケットが入ってから経過した時間だけを追跡します。タイムアウトに達すると状態がクリアされます。タイムアウト値は pf.conf ファイルのオプションセクションで設定できます。

私の懸念:UDPにはSequenceNrはありません。したがって、攻撃者がUDPストリーム(pfのステータステーブルからステータスを受信した後)を盗聴すると、なりすましパケットを簡単に挿入してファイアウォールを通過する可能性があります。そうではありませんか?

これは大きなセキュリティ問題ではありませんか?それとも、私はpfメカニズムについて何か誤解していますか?

ベストアンサー1

ケース1:ファイアウォール内のUDPクライアントがUDPサーバーとの通信を開始します。ファイアウォールは、会話を続行できるようにマッピングエントリを作成します。攻撃者はそれを使用していくつかのパケットを逆スプーフィングします。

まず、パケットはサーバーから来るようになりすまします。それ以外の場合は、リモートアドレスと一致しません。また、クライアントのIPポートとUDPポートに接続する必要があります。それ以外の場合はファイアウォールを通過できません。したがって、これらのなりすましパケットは、サーバーから来たと思うクライアントに到着します。クライアントアプリケーションのデータグラムソケットがサーバーに接続されているとマークされていても、クライアントアプリケーションはパケットを受信します。アプリケーションが安全に作成されると、整合性チェック(暗号化とチェックサム)が失敗するため、最終的に内部プロトコルレベルで破棄されます。もちろん、なりすましUDPデータグラムは、本質的に安全でないアプリケーションに大きな打撃を与える可能性があります。これはファイアウォールのせいではありません。

ケース2:ファイアウォール内のUDPサーバーには永続ポート転送機能があります。もちろん誰でもUDPを送ることができます。パケットを検証し、安全で認証されたセッションのみをサポートします。

おすすめ記事