2

この質問をする方法が正確にはわかりませんでしたが、キーワードflagsを使用して、フィルタリングするフラグを指定できることは知っています。

パケットフィルターのドキュメントによると:

ルールの評価中に PF に TCP フラグを検査させるには、flags キーワードを次の構文で使用します。

フラグ チェック/マスク
フラグ 任意

マスク部分は、指定されたフラグのみを検査するように PF に指示し、チェック部分は、一致が発生するためにヘッダーでどのフラグを「オン」にする必要があるかを指定します。any キーワードを使用すると、フラグの任意の組み合わせをヘッダーに設定できます。

fxp0 proto tcp で任意のポートから任意のポートに渡す ssh フラグ S/SA
fxp0 proto tcp で任意のポートから任意のポートに渡す ssh

フラグ S/SA はデフォルトで設定されているため、上記のルールは同等です。これらの各ルールは、SYN フラグと ACK フラグのみを確認しながら、SYN フラグが設定された TCP トラフィックを通過させます。SYN フラグと ECE フラグを含むパケットは上記のルールに一致しますが、SYN と ACK を含むパケット、または ACK だけを含むパケットは一致しません。

そのため、例と、フラグ S および E を持つパケットが通過できる理由 (マスク SA のために E フラグが考慮されないため) と、Ack フラグのみを持つパケットがファイアウォールを通過できない理由を理解しました。

私が理解できなかったのは、パケット ヘッダーでフラグ S が「オン」の場合、フラグ S と A を持つパケットがルール S/SA を通過できない理由です。多分ドキュメントがあいまいですか?これがばかげた質問または英語の誤解である場合は申し訳ありません。

フラグ Sのみが必要な場合にのみ通過できると思います。集合演算では、次のようになります。

ヘッダーでフラグを「オン」にする必要があります->フラグはマスクされたサブセットに関係します[pf doc]
ヘッダーでフラグのみを「オン」にする必要があります->フラグは次と同等ですマスクされたサブセット[与えられた例から私が理解したもの]

前もって感謝します!

4

1 に答える 1

2

私が理解できなかったのは、パケット ヘッダーでフラグ S が「オン」の場合、フラグ S と A を持つパケットがルール S/SA を通過できない理由です。多分ドキュメントがあいまいですか?

pf.conf(5) の flags セクションから

フラグ (A)/(B) | どれか

この規則は、フラグ (A) がセット (B) 以外に設定されている TCP パケットにのみ適用されます。

If (B) := SA and (A) := S -> このルールは、フラグ S がセット SA の外に設定されている TCP パケットにのみ適用されます。

これは、A セットがないことを意味します。少し言い換えると:

このルールは、フラグ (A) がセット (B) 以外にセットされている TCP パケットにのみ適用されます。

または、マニュアルページで後で明らかになるように:

フラグ S/SA

これは、ステートフル接続のデフォルト設定です。

SYN と ACK のうち、正確に SYN が設定される場合があります

于 2013-04-19T20:36:37.503 に答える