ポリシーリスクを可視化。自然な言葉でポリシーに関する疑問を解決します。 デモを申し込む →
Published:
ファイアウォールポリシーの基本 – ステルスルールを検証する方法
by FireMon
更新 – 2017年1月
ファイアウォールのステルスルールとは、デバイスの管理に必要な範囲を超えたファイアウォールへのアクセスを拒否する、ポリシーの上位に配置される明示的なルールです。次のように定義してください。
Source = ANY
Destination = [self]
Service / Application = ANY
Action = DROP
Logging = Enabled
これは、ファイアウォールポリシーではなくインターフェイスレベルの設定で管理アクセスを定義する Juniper Netscreen などの一部のファイアウォールには、そのままは当てはまりません。ただし、そうした場合でも、監査人が慣例としてステルスルールを求めることがあります。
ステルスルールを定義する理由
ステルスルールは、ポリシーの後半で定義されるルールによってファイアウォールへのアクセスが意図せず許可されることを防ぎます。たとえば、ファイアウォールが Web-DMZ ゾーンにインターフェイスを持っているとします。Web 開発チームから、Web-DMZ 内のすべてのシステムへの SSH アクセスを求める申請が出されるかもしれません。深く考えなければ、Web-DMZ に定義されたシステムの唯一の所有者が同チームであるなら、それらすべてのサーバーへの SSH アクセスが必要というのは妥当に思えます。しかし、ステルスルールが適切に定義されていない場合、SSH アクセスは Web-DMZ 内のサーバーだけでなく、ファイアウォール自体に対しても許可されてしまいます。これが不適切であることは明らかですが、ファイアウォール管理者に何年も気づかれないまま放置されるおそれがあります。
この単純ながら重大な誤りを避けるため、ファイアウォールポリシーにはステルスルールを定義すべきです。
ステルスルールの有無を確認する方法
この手順は非常に単純です。すべてのポリシーを確認し、必要な管理用ルールの後、ポリシーの上位にファイアウォールへのすべてのトラフィックを拒否するルール(Any、Self、Any、Drop、Log)が存在することを検証してください。
FireMon による支援
FireMon は、各ポリシーにステルスルールが存在することを検証するための事前定義済みコントロールを提供します。このコントロールは事前定義済みアセスメントに含まれており、ユーザー定義のアセスメントに追加することもできます。
もう一つの強力な方法は、SiCL を使ってご自身でルールを検索することです。この場合、検索は非常に単純です。ポリシーの上位に、ファイアウォールへのすべてのトラフィックを破棄する明示的なルールが存在することを検証します。事前定義済み変数 self を使用すれば、すべてのデバイスに適用できる SiCL クエリを作成できます。この検索の SiCL 構文は次のとおりです。
rule{ POSITION < 5 and source.any=true and destination is superset of self and SERVICE.any=true and action=’DROP’}
上記の例では、そのルールがポリシーの最初の 4 つのルールのいずれかであること、および宛先がファイアウォールのアドレス空間を完全に包含すること(destination is superset of self)を指定しました。Superset には、等しい場合とより大きい場合が含まれます。Self はファイアウォールオブジェクトそのものです。