CheckPoint FWのポリシー情報を取得する

CheckPoint FWはインタフェースやルーティングの設定をOS側で管理し、オブジェクトやポリシーをセキュリティ管理サーバーで管理しています。そのため、FWにコマンドラインでログインして”show configuration”コマンドを実行しても、表示されるのはインタフェースやルーティング情報だけで、オブジェクトやポリシー情報は取得できません。

オブジェクトやポリシー情報を取得するためにはR71以降で使用できる「Web Visualization Tool」が必要です。このツールはCheckPoint社からダウンロードできます。

Web Visualization Tool CheckPoint R71 and Above

このツールは管理サーバーからHTML形式でオブジェクトやポリシー情報を取得するもので、どのような設定になっているのかWEBブラウザで閲覧できてなかなか便利です。

Web Visualization Toolの使い方

わたしは同梱されている「cpdb2html.bat」を使っています。このバッチファイルは内部で「cpdb2web.exe」と「Xalan.exe」を呼び出しているだけです。

> cpdb2html.bat

Check Point Web Visualization Tool
Usage: cpdb2html cpdb2html_path output_directory security_management (admin_name or certificate_file) password [-o output_file_name] [-m gateway] [-gr] [-go]

Where:
cpdb2html_path      - Web Visualization Tool's root directory.
output_directory    - Path to place the result html file.
security_management - Name or IP address of the Security Management.
                      (for Multi-Domain Security Management the IP associated
                      with a Domain).
admin_name /
certificate_file    - User name of a Security Management administrator, or full
                      path of a certificate file.
password            - Administrator's password, or certificate's password.
-o output_file_name - HTML output file name to use
                      (default file name is '1.html').
-m gateway_name     - A specific gateway for which to generate the policy.
-gr                 - For Check Point Multi-Domain Security Management only.
                      When the -gr option is set the output will include
                      customer rules only (no global rules).
-go                 - For Check Point Multi-Domain Security Management only.
                      When the -go option is set the output will include
                      customer objects only (no global objects).
>

最低限、cpdb2html.batが存在するパスとセキュリティ管理サーバーのIPアドレス、ユーザー名とパスワードを指定すれば動きます。ただ、毎度コマンドを打つのはしんどいですよね。わたしはバッチファイルを作って実行しています。

@echo off
setlocal ENABLEDELAYEDEXPANSION

rem ログファイル名となるホスト名
set targetname=ホスト名
rem セキュリティ管理サーバーのIPアドレス
set targetip=IPアドレス

set curdir=%~dp0
set vtdir=%curdir%vt
set logdir=%curdir%log
mkdir %logdir%

rem セキュリティ管理サーバーへログインするためのユーザー名
set user=fwadmin
rem セキュリティ管理サーバーへログインするためのパスワード
set passwd=fwadmin

set time2=%time: =0%
set ftime=%date:~-10,4%%date:~-5,2%%date:~-2,2%_%time2:~0,2%%time2:~3,2%%time2:~6,2%

rem ログファイル名
set outfile=%targetname%_%ftime%.html

call %vtdir%\cpdb2html.bat %vtdir% %logdir% %targetip% %user% %passwd% -o %outfile%

rem テンポラリファイル削除
for /F "delims=" %%F in ('dir /A /B %%logdir%%\\temp*') do (
    rmdir /s /q !logdir!\%%F
)
rem 生成ファイル削除
del CKP*
del ICA*

バッチファイルの設置イメージはこんな感じです。vtっていうのはVisualization Toolのフォルダで、名前が長いのでリネームしています。logは取得したHTMLファイルが保存されるフォルダです。

HTMLファイルの比較

タグを除去して比較してくれるツールの存在をわたしは知らないので、Perlスクリプトでタグと空行を除去してからWinMergeで比較しています。PerlはStrawberry Perlを利用しています。

#!C:\Strawberry\perl\bin\perl.exe

my $winm = '"C:\Program Files"\WinMerge\WinMergeU.exe';

my $tmp1 = "tmp1.txt";
my $tmp2 = "tmp2.txt";

my @file = glob "*.html";
open(F1, $file[0]);
open(F2, $file[1]);
open(O1, ">", "tmp1.txt");
open(O2, ">", "tmp2.txt");

while (<F1>) {
	$_ =~ s/<.*?>//g;
	$_ =~ s/\t//g;
	next if ($_ =~ m/^$/);
	print O1;
}
while (<F2>) {
	$_ =~ s/<.*?>//g;
	$_ =~ s/\t//g;
	next if ($_ =~ m/^$/);
	print O2;
}

close(F1);
close(F2);
close(O1);
close(O2);

system("$winm /wl /wr /ul /ur /e $tmp1 $tmp2");
system("del $tmp1 $tmp2");

作業前と作業後にCheck Point Web Visualization Toolでポリシー情報を取得して、2つのHTMLファイルが存在するフォルダにこのスクリプトを置いて実行すると、WinMergeが立ち上がって比較してくれます。

WinMergeはレポート機能があってとても便利なのでいつも活用しています。WinMergeのレポート機能については、次の記事を参照してください。

参考記事:WinMergeのレポート機能

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)