Nokia VRRP のためのファイアーウォールルール

以前の記事の補足で VRRP の通信のためのファイアーウォールルールについてです。 デフォルトでは FireWall-1 そのものに関連する通信は暗黙で許可されるようになっているので、ファイアーウォールを動作させるためのルール (例えば SmartCenter との通信のためのルール) を書く必要はありません。 しかし、VRRP に関しては明示的に通信を許可する必要があるので注意が必要です。

必要なルールは「Nokia Network Voyager for IPSO x.x Reference Guide」 の VRRP 関連の部分に載っています。 IPSO 4.2 の場合は以下の様になっています。

Configuration Rule for Check Point NGX FP1

Source Destination Service Action
cluster-all-ips
mcast-224.0.0.18
fwcluster-object vrrp
igmp
Accept

Where:

  • cluster-all-ips is the Workstation object you created with all IPs.
  • fwcluster-object is the Gateway Cluster object.
  • mcast-224.0.0.18 is a Workstation object with the IP address 224.0.0.18 and of the type host.

Configuration Rules for Check Point NGX FP2 and Later

Source Destination Service Action
Firewalls
fwcluster-object
mcast-224.0.0.18 vrrp
igmp
Accept

Where:

  • Firewalls is a Simple Group object containing the firewall objects.
  • fwcluster-object is the Gateway Cluster object.
  • mcast-224.0.0.18 is a Node Host object with the IP address 224.0.0.18.

このように FireWall-1/VPN-1 のバージョンによってビミョーに書いてあることが異なっているのでお手許の Voyager Reference Guide を参照することをお勧めします。

… とここまで書いて SmartDashboard R60 の "Global Properties" の "Implied Rules" の設定画面に VRRP の項目が追加されているのを見つけました。 ちょっと試せていないですが、これがチェックされていれば済む話じゃなかろうか…

FireWall-1 (Nokia) いざという時に使うかも知れないコマンド

例えば、FireWall-1/Nokia の管理者が突然いなくなった (!) 等の困ったときにお世話になりそうなコマンド類をまとめておきます。

1. IPSO のパスワードリセット
Nokia をシングルユーザモードで起動して、/etc/overpw を実行します。 シングルユーザモードで起動するには、IPSO Boot Manager を使用する方法と IPSO の Boot プロンプトで指定をする方法があります。 起動時に例えば以下のように Boot Manager を起動するか IPSO を起動するかのプロンプトが表示されると思いますので、どちらかを選択します。

1   Bootmgr
2   IPSO
Default: 1

Boot Manager を選んだ場合の操作例を示します。

Starting bootmgr
Loading boot manager..
Loading boot manager..
Boot manager loaded.
Entering autoboot mode.
Type any character to enter command mode. (ここですかさず何かキーを押す)
BOOTMGR[1]> boot /image/current/kernel -s
Booting /dev/wd0f:/image/IPSO-x.x-*****/kernel

IPSO のプロンプトでの操作例を示します。"-s&quot を入力します。

>> IPSO boot
Usage: [[wd(0,f)]/kernel][-abcCdhrsv]
Boot:-s
Booting wd(0,f)/image/IPSO-x.x-*****/kernel

シングルユーザモードで起動後は /etc/overpw を実行し、Ctrl+D を押してマルチユーザモードへ移行します。

Enter pathname of shell or RETURN for sh: (Enter キーを入力)
# /etc/overpw
This program is used to set a temporary admin password when you have
lost the configured password.  You must have booted the machine into
single user mode to run it.  The configured password will be changed.
Please change the temporary password as soon as you log on to your
system through voyager.
Please enter password for user admin: (パスワードを入力)
Please re-enter password for confirmation: (パスワードを入力)
Continue? [n] y
Running fsck...
(略)
Admin password changed.  You may enter ^D to continue booting.
THIS IS A TEMPORARY PASSWORD CHANGE.
PLEASE USE VOYAGER TO CREATE A PERMENANT PASSWORD FOR THE USER ADMIN.
# (Ctrl+D を押す)

2. ライセンスファイルが無いとき
FireWall-1 は動いているものの、インストールしたライセンスファイルが無くなっていて、ライセンス情報のみバックアップしたい、というようなことがあるかも知れません。 このような時にはコマンドラインツール cplic print コマンドを使います。

以下の様に -x オプションでシグネチャつきで既存ライセンスを表示し、表示された情報を保管しておきます。

# cplic print -x
Host             Expiration  Signature                             Features
10.1.2.3         never       ************SIGNATURE***************  cp********* CK-*********

出力されたライセンス情報は cplic put を使って投入可能です。

# cplic put 10.1.2.3 never ************SIGNATURE************** cp********* CK-*********

3. Nokia に telnet や http でアクセスできないとき
Voyager (Nokia の GUI 管理ツール) で設定しようにもアクセスできない、というときはインストールされているファイアーウォールポリシーによりアクセスが拒否されているのかも知れません。 そのようなときは以下のコマンドを Nokia 上で実行することによりポリシーをアンインストールすることができます。

# fw unloadlocal

もちろん、実環境で稼動しているファイアーウォール上で実行してはまずいです。

FireWall-1 で RADIUS の Class attribute を使ってユーザをグループ化する

以前 FireWall-1 と RADIUS サーバの記事を書きましたが、この後 RADIUS の Class 属性を用いてユーザをグループ化できることを知ったのでまとめておきます。 手順はさほど難しくなく、先の記事の手順に加えて GUIdbEdit というツールを用いて add_radius_groups の値を true にするだけでオッケーです。この方法は以下の通りです。

  1. GUIdbEdit.exe は SmartConsole の PROGRAM ディレクトリの中にあり、起動時に SmartCenter サーバを指定できます。
  2. 左のツリーから "Table" – "Global Properties" – "properties" を選び、右画面で "Object Name" が "firewall_properties" の行を選択すると下に add_radius_groups という "Field Name" の存在を確認できると思います。 この add_radius_groups の "Value" を true にして、"File" – "Save All" して終了します。 もし、add_radius_groups が見つからなかったら "Search" – "Find" メニューより検索しましょう。
  3. SmartCenter が稼動しているサーバ上で cpstop/cpstart を実行してサービスを再起動します。

以上で、準備が整いました。 後はポリシーを作成してインストールするだけです。

ポリシーについてですが、"Users and Administrators" – "User Groups" で "RAD_(クラス属性の値)" というグループを作成し、これを用いてポリシーを作成すれば良いです。 グループの中身は空でよいです。 例えば RADIUS サーバに Class が "Users" として登録されているユーザに対しては、グループ名が "RAD_Users" のグループを含むポリシーが適用されます。

RADIUS サーバの登録の仕方は先の記事を参照してください。 "External User Profiles" の "Match all users" の設定も忘れずに行っておきます。 このように作成したポリシーをインストールすれば、ユーザとその所属するグループの管理を RADIUS で行うことができるようになります。

Class 以外の RADIUS attribute を用いるように変更することも可能です。 詳しくは「ファイアウォールと SmartDefense (Firewall and SmartDefence)」の中の「認証 (Authentication)」の章に書いてあります (R60A の場合) 。 R55 の頃のドキュメントには記述はないようですが、昔から出来たようです (例)

FireWall-1 SmartCenter 設定情報の管理のための Tips

SmartCenter 設定情報を管理するための Tips をまとめます。 パスやファイル名は Windows 上で SmartCenter を動かした時のものなので、他のプラットフォームでは適切に読み替える必要があります。

1. バックアップ&リストア
まずは基本のバックアップ&リストアの方法です。バックアップは "bin\upgrade_tools" ディレクトリの下にある upgrade_export.exe を用います。コマンドプロンプトでこのディレクトリに移動して、

upgrade_export 20070901

と実行すると 20070901.tgz という名前のバックアップファイルがこのディレクトリ内にできます。

リストアにはインストーラを用います。インストール方法のところで "Installation Using Imported Configuration" を選択し、その後バックアップファイルのパスを指定することでリストアすることができます。 バックアップファイルの内容をインポートしながら新規インストールする形となるので、既に SmartCenter がインストールされているときは一度これを削除してからインストーラを起動する必要があります。

2. リビジョンコントロール (バージョン管理)
「リストアするのにわざわざインストールし直し」と聞いて「ちょくちょく設定を戻したりできないのかあ…」と心配する必要はありません。 SmartCenter は設定内容のバージョン管理機能を備えています。 SmartDashboard のメニューより "File" – "Database Revision Control…" を選択することでバージョン管理の機能を利用することができます。ここで使用するコマンドを簡単に説明すると以下の通りです。

"Create"、"Delete" バージョンの作成、削除
"View Version" 選択したバージョンの表示。別ウィンドウに表示されるので過去の設定と現行設定を見比べることも可能。
"Restore Version" 選択したバージョンに戻す

3. 設定情報のドキュメント化
VPN-1 には "Web Visualization Tool" という設定情報を HTML や XML に出力するツールがあります。 ドキュメント化したりする時に便利だと思います。 このツールは CheckPoint のサポートサイトよりダウンロードする必要があります。 各バージョンに合ったものを使う必要があり、NGX の場合はこちらからダウンロードできます。 ダウンロードにはユーザ登録が必要ですが、製品シリアル番号等は特に必要なかったはずです。

SmartCenter サーバ上にこのツールをインストールする場合、好きなところに展開するだけでインストールは終わりです。 Windows 環境では、.tgz ファイルをどう扱えば良いか悩むかも知れませんが、SmartCenter をインストールしていれば、gzip と tar が使えるようになっているはずです。

gzip -d cpdb2web_windows.tgz
gtar xvf cpdb2web_windows.tar

まず HTML 出力ですが、展開したディレクトリの下で以下のようにコマンドを実行すると out サブディレクトリの下に 1.html というファイルができます。

mkdir out
cpdb2html . out 127.0.0.1 admin password

ここで admin と password は SmartCenter のユーザ名/パスワードです。

XML 出力をするには以下のコマンドを実行します。

cpdb2web -s 127.0.0.1 -u admin -p password -o xsl\xml

このあと xsl\index.xml を開いてみましょう。

なお、ここに記したのはあくまで SmartCenter の設定情報に関してであり、プラットフォームの設定情報は別途管理する必要があります。 例えば Nokia であれば Voyager で設定情報をバックアップ/リストアしなければなりません。

FireWall-1 (Nokia HA) 構成のインストール

最近久しぶりに FireWall-1 を触ることがありました。 今回構築したのは Nokia × 2台と SmartCenter サーバの構成で、VRRP を用いた Active – Standby 構成なのですが、忘れないうちに設定手順をまとめます。 バージョンは NGX R60 ("UTM Management and Gateway Bundle" + HA ライセンス) を使ったのですが、他のバージョンでも似たようなものだと思います。 細かく書き始めるときりが無いので要点のみ書きます。

1. Nokia の初期設定
初期設定はシリアルコンソールより対話形式で行います。 この初期設定ではホスト名やログインパスワードなどの基本設定と、 IP アドレスをつけて Voyager (管理用 Web インターフェイス) が使えるようにする設定を行います。 注意すべき項目は以下の質問に対し Voyager を使う (= 1) と答えるところでしょう。

You can configure your system in two ways:
1) configure an interface and use our Web-based Voyager via a remote
browser
2) configure an interface by using the CLI
Please enter a choice [ 1-2, q ]: 1

この後続いて Voyager を使うために最低限のネットワーク関連設定を行うことができます。

2. Voyager で設定
ネットワークの設定を終えたら、続いて Web ブラウザで Nokia に HTTP アクセスして Voyager を用います。 ここで以下の設定を行います。

  • Interface、Routing などネットワークの設定
  • VRRP の設定
  • CheckPoint パッケージの有効化
  • その他 Timezone や Time、NTP など基本設定

VRRPのやり方には種類があって迷うかも知れませんが、"Monitored-Circuit VRRP simplified method" を用います。 ポイントは一緒に failover させたいインターフェイスは VRID を同一にするところです。Nokia のマニュアルの VRRP 概要の説明のところで Internal インターフェイスと External インターフェイスで個別の VRID を設定する図が出ていたりしますが、 これをマネすると Internal だけ (あるいは External だけ) failover してしまいます。

VRRP の "Priority" は大きい数字を使った方が failover にかかる時間が短いとのことなので、(Master 機) = 254、 (Standby 機) = 253 とし、"Priority Delta" を例えば 10 にします。 すると Master 機でインターフェイスダウンが生じたとき、同じ VRID のインターフェイスの "Effective Priority" が "Priority Delta" 分だけ減少し、254 – 10 = 244 < 253 (= Standby 機の Effective Priority) となり、同一 VRID のインターフェイスは全て failover するようになります。

CheckPoint パッケージの有効化は "Manage Packages" のメニューより行います。 有効化するパッケージを一つずつ "On" にして "Apply" していきます。順番を考えないとエラーになるかも知れません。

3. cpconfig 実行
パッケージを有効化したので CheckPoint ソフトウェアの初期設定ができるようになりました。再度コマンドラインに戻り、cpconfig を実行します。HA 構成なので Gateway のみインストールするのがポイントです。

Please select one of the following options:
Check Point Enterprise/Pro - for headquarters and branch offices.
Check Point Express - for medium-sized businesses.
-------------------------------------------------------------------
(1) Check Point Enterprise/Pro.
(2) Check Point Express.
Enter your selection  (1-2/a-abort) [1]: 2
Please specify the Check Point Express Product type you are about to install:
-----------------------------------------------------------------------------
(1) VPN-1 Express Gateway.
(2) SmartCenter Express.
(3) SmartCenter Express and VPN-1 Express Gateway.
Enter your selection  (1-3/a-abort) [1]: 1

という感じです。 また、HA のためのモジュールもインストールしなればなりません。

Would you like to install a Check Point clustering product
(CPHA, CPLS or State Synchronization)? (y/n) [n] ? y

ライセンスの入力ですが、ファイルの転送が面倒なので、端末エミュレータを使ってコピペするとよいように思います。ライセンスのお知らせには3つのコードが示されていると思いますが、聞かれるのは2つだけなので迷うかもしれません。こんな感じで入力します。

Signature Key: ****
SKU/Features: cp**** CK-****

次のメッセージに対してはバーがいっぱいになってビープ音が鳴るまで、ただひたすら適当にキーボードをたたけばよいだけです。一度やった人は知っているでしょうが。

Configuring Random Pool...
==========================
(... 中略 ...)
Please keep typing until you hear the beep and the bar is full.

Secure Internal Communication (SIC) の設定は SmartCenter 登録のための初期パスワードの設定です。 ここで入力したキーは後で SmartCenter 登録時に用います。

4. SmartCenter 上の設定
SmartCenter のインストール手順は省きます。 Windows サーバへインストールするのであれば、特に引っかかるところなくインストールできるでしょう。問題は SmartDashboard 上でどうやって "Cluster Object" を設定するかです。

SmartDashboard を起動して SmartCenter サーバにログイン後、 "New Check Point" – "VPN-1 Pro/Express Cluster" と選んで Cluster オブジェクトを作成するわけですが、"Simple Mode (Wizard)" と選択し Wizard を使って作成するのが手軽だと思います。Wizard を使った登録は以下のような手順になります。

  • まずクラスタメンバーを登録します。登録時に先の SIC 用キーを入力して SmartCenter と Gateway 間の通信を確立します
  • Cluster’s Solution (3rd Party Solution) に Nokia VRRP を選びます
  • 各メンバーのトポロジーを設定します。以下の3つのどれに当たるかを各インターフェイスごとに選んで行きます
    1. "Cluster Interface" = VRRP を設定したインターフェイス
    2. "Cluster Synchronization" = 同期用のインターフェイス
    3. "Private use" = その他の目的のインターフェイス

さてこれでクラスタオブジェクトが設定できたはずです。

  • クラスタオブジェクトの Property で Check Point Products の "ClusterXL" にはチェックが入っていないのが正しいです。
  • また、"Use State Synchronization" はもちろん ON です。(Wizard を使っていればどちらもこのようになっているはずです)

Topology で "Anti-Spoofing" の設定などもハマるところですが、これはまた機会があったときに。

とっても駆け足に説明しましたが、これで一通りの設定ができたはずです。 結構面倒くさいのですぐ手順を忘れちゃうんですよね。かなり端折っているので何かお気づきの点あればお知らせください。

FireWall-1 と RADIUS サーバ

FireWall-1のクライアント認証 (Client Authentication) に RADIUS サーバを使うための設定を行いました。製品付属のマニュアルだけではわかりづらいところがあり、Web 上に情報を探しても日本語情報はあまりないようなので顛末を書いておきます。…趣味というより仕事の話だけど、まあいいかな。


FireWall-1 のバージョンは NG with AI (R55) です。RADIUS サーバは GNU RADIUS 1.3を利用しました。


最初に、GNU RADIUS を Solaris 9 上でコンパイルし、テスト用ユーザアカウントを作った以外はほぼデフォルト状態で動かしました。続いてFireWall-1 側の設定をします。以下メニュー項目は SmartDashboard のものです。


まず、RADIUS サーバを登録します。”Servers and OPSEC Application” – “Servers” – “New” – “RADIUS” で作成します。


次に、”Users and Administrators” – “External User Profiles” – “New External User Profile” – “Match all users” を選び “Authentication Scheme” に “RADIUS” を選択します。


ここまでの設定で、ユーザが FireWall-1 の内部データベースや LDAP サーバ上に見つからなかった時は RADIUS を用いて認証されるようになります。つまり、ユーザの登録・削除・変更時に FireWall-1 のポリシーをインストールし直したりする必要はなくなります。


動作確認をするために FireWall-1 が動いているマシンの 900 番ポートに HTTP アクセスし、テスト用 ID で認証してみます。ところが、”RADIUS servers not responding” のメッセージが出てエラーとなってしまいます。ここまでの手順で不足はないと思うのですがうまくいきません。RADIUS サーバ側のログを見てもそれらしいログは記録されていません。radiusd プロセスは動いていてポートも開いているので問題はないように見えます。


しばらく悩んで FireWall-1 の通信ログを見てみることにしました。”Global Properties” – “FireWall-1” で “Log Implied Rules” にチェックを入れると Firewall-1 マシン – RADIUS サーバ間のマシンもログとして記録されます。するときちんと認証用の通信はログに記録されました。でも良く見ると、Service が「RADIUS (1645)」となっています。あれ?、さっき Solaris 上で確認したポート番号と違うような…


そうなのです。GNU RADIUS の方は 1812 で待ち受け、FireWall-1 の方は 1645 で認証のリクエストしていたのです。どっちが正しいのだろうと思い、調べると RFC 2138に以下の記述がありました。


The early deployment of RADIUS was done using the erroneously chosen port
number 1645, which conflicts with the “datametrics” service. The
officially assigned port number for RADIUS is 1812.

ということは GNU RADIUS の 1812 の方が正しいのですね。FireWall-1 の登録済みサービスを調べると “NEW-RADIUS” というのがあったので、これを先に登録した RADIUS サーバオブジェクトの “Service” の項目に設定します。そして、ファイアーウォールポリシーをインストールし直すと…


無事にテスト用 ID で認証できました!


ちなみに昔のバージョンの FireWall-1 では “External User Profile” – “Match all users” というメニューはなくて “generic*” というユーザを作って対処していたようです。

関連記事
FireWall-1 で RADIUS の Class attribute を使ってユーザをグループ化する