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のレポート機能