Linux以外のIPSecスタックとの相互接続[後編]
− LinuxでIPSecを使おう −
宮本 久仁男<miyamotokn@nttdata.co.jp>
NTTデータ システム開発事業本部
基盤システム事業部 第一ソリューション技術担当
2002/6/11
Windows用のIPSecスタック
前編で約束したとおり、後編ではWindowsからのIPSec接続について説明します。Windows上で動作するIPSecスタックには、前編で軽く紹介した
- Microsoft製IPSecスタック
- PGPNet
の2つがあります。ほかにもあるにはありますが、前編で説明した理由や入手のしやすさという点ではこの2つがベターでしょう。
前者はWindows 2000以降から標準でサポートされています。後者はhttp://www.pgpi.org/(注)で配布されています。
注:PGPNetは、ライセンスにより非商用や学術用途の場合にのみ無償で使用できます。商用での利用の場合、ライセンスは要問い合わせとなっています。 |
IPSecの通信条件とFreeS/WANの設定
特に断りのない限り、大まかな通信条件は、
- エンドツーエンドの暗号化
- 事前共有鍵を用いる
- 暗号化メソッドは3DES
- ハッシュアルゴリズムはMD5もしくはSHA1
という形になります。
■FreeS/WANの設定
まずFreeS/WAN側の設定です。/etc/ipsec.confはリスト1、/etc/ipsec.secretsはリスト2のようになります。
config setup |
リスト1 FreeS/WANの/etc/ipsec.conf |
192.168.1.2 192.168.1.103
: PSK "testtest" |
リスト2 /etc/ipsec.secrets |
Windows 2000の設定
ここではまず、Microsoft製のIPSecスタックを用いた場合を 解説します。PGPNetを用いた方法については、その後で解説します。
Microsoft製のIPSecスタックは、ウィザードを用いて以下の手順で設定します。今回の設定は、Windows 2000 Professionalでの例です。手順は多少異なりますが、Windows 2000 Serverでも設定可能です。ただし、FreeS/WANは3DESを暗号化メソッドとして使用しますので、Windows 2000には以下のいずれかをインストールしておく必要があります。
- 高度暗号化パック
- SP2以降
Windowsのセキュリティ自体のことを考えると、SP2以降が適用されていることが望ましいといえます(注)。
注:もちろん、ほかのHotFixのたぐいも導入されていることが望ましいのはいうまでもありません。 |
■IPセキュリティポリシーの作成
Administratorでログオンし、[スタート]−[プログラム]−[管理ツール]−[ローカルセキュリティポリシー]を順次選択して管理ツール「ローカル セキュリティ設定」を起動します。
[ローカルセキュリティ設定]ウィンドウで、「ローカルコンピュータのIPセキュリティポリシー」を右クリックして[IPセキュリティポリシーの作成]を選択します(画面1)。この画面にはすでに筆者によって作成されたポリシーがいくつかありますが、特に何も操作していない場合は上の3つのポリシーのみが存在します。
画面1 「ローカルコンピュータのIPセキュリティポリシー」を右クリックする |
ポリシーはウィザード形式で作成できます。ポリシーの作成については、Windows 2000におけるIPSecポリシーの設定で説明します。
最終的に作成されたポリシーを画面2〜11に掲載します。また、今回作成したIPSecポリシーをエクスポートしたファイル「ipsecsample.ipsec」を用意しましたので、興味のある方はダウンロードして管理ツールからインポートしてみてください(注)。
注:このポリシーは、一応通信検証を行っていますが、インポートや使用は自己責任でお願いします。 |
最終的に作成されたポリシー
|
||||||||||||||||||||
|
■動作確認
コマンドプロンプトの上でpingを実行します。
C:\>ping 192.168.1.2 |
最初はIPSecのネゴシエーションが間に合わず、pingの実行に失敗しますが、何度か実行しているうちにレスポンスが返ってくるようになります。
PGPNetの設定
PGPは暗号化ツールとして名高いもので、PGPNetはWindows版PGPの配布ファイルに含まれます。今回は、PGP6.5.1iに含まれるPGPNetを使用します。
■PGPNetのインストール
ファイルは、http://www.pgpi.org/で入手可能です。ファイルを展開すると、セットアップ用の実行ファイルが作成されるので、この実行ファイルをダブルクリックしてインストール用のウィザードを起動します。基本的には、画面の指示に従ってインストールすればよいのですが、特に注意すべき点としては、以下のようなものが挙げられます。
- Setupを実行後、画面12のようなエラーが出ることがありますが、これは単にフォルダを開いた状態でも出ます。開いているフォルダを閉じた後に「再試行」ボタンを押せば回避可能です
画面12
- インストールするコンポーネントの選択の画面(画面13)では、「PGPNet Virtual Private Networking」をチェックします。このコンポーネントが、IPSecスタックそのものです
画面13
- 画面14では、IPSec通信をさせたい通信アダプタを選択しますが、1個しかチェックできません。今回はLANアダプタをチェックしています
画面14
- 「Do you have existing keyrings you wish to use?」というメッセージボックスで、すでに作成されたKeyringが存在する場合にそれを使うかどうかのチェックをします。筆者の場合はクリーンインストールになりますので、「いいえ」を選択しています
PGPNetをインストールしてWindowsを再起動すると、タスクトレイにPGPTrayが常駐しているのが分かります。PGPNetの設定は、PGPTray中のPGPNetの各項目で実施します(画面15)。 具体的な設定については、PGPNetのIPSec通信設定を参照してください。なお、暗号化メソッドや鍵交換の項目などは個別には設定できません。これについては、[PGPNet]−[Options]と選択し、表示されるウィンドウで設定することになります。どの項目から設定してもよいのですが、最終的に設定されている状態は画面16〜18のようになります。 |
最終的な設定状態
|
||||||
|
■動作確認
PGPNetによる暗号化は、TCP/UDPの通信性能はまだ良いのですが、ICMPの通信性能があまりよくありません。DOSプロンプトの上からpingを実行しても失敗(タイムアウト)したり、応答時間が長かったり(1秒以上)します。
C:\ping 192.168.1.2 |
telnetなどTCPベースのツールを用いてコネクションを開設後、tcpdumpなどでパケットダンプを実施すると、パケットが暗号化されているのが分かります。
# tcpdump -i eth0 host webdav1 and catseye |
筆者の体感ですが、telnetをIPSec経由で使ってみて、特にオペレーションが引っ掛かる/目に見えてパフォーマンスが悪いなどの印象はありませんでした。もちろん、暗号化処理が入るので、暗号化しないときよりも確実に性能は落ちます。
相互接続の基本は6つの条件を満たすこと
前編から後編にかけて、異なるIPSecスタックをどうつなぐかを説明してきました。各スタックやOSで使用される用語の違いなどを除けば、思ったよりも接続しやすいという印象を持っていただいたのではないかと思います。
また、後述する参考図書にも記述されていることですが、以下の6つの条件を満たせれば、相互接続しやすいようです。
- 暗号化アルゴリズムとして3DESを用いる
- ハッシュアルゴリズムとしてMD5もしくはSHA-1を用いる
- Oakleyグループはグループ2(1024bit MODP)を用いる
- IKEのフェイズ1では、mainモードを用いる
- Pre-shared Keyを使う
- IPCompは使わない
今回は、Windowsおよび*BSDのスタックとFreeS/WANとの接続を取り扱いましたが、ほかの実装との接続を行う際にも本記事の内容がお役に立てば幸いです。
■参考資料
マスタリングIPsec 馬場達也 著 オライリー・ジャパン 2001年 ISBN4-87311-059-9 3200円(税別) 書評はこちら |
今回の記事内容を検証するに当たり、特に参考になったURLと書籍を以下に挙げておきます。特に、最後の『マスタリングIPsec』は、IPSecの規格と実装について平易な表現で書かれており、お薦めです。
- FreeS/WAN Official Page
http://www.freeswan.org/
- X.509 Certificate Support for the Linux FreeS/WAN
IPsec Stack
http://www.strongsec.com/freeswan/
- IPsec 2000
Report on the IKE Interoperability Demonstration and Test Bed
http://www.hsc.fr/ressources/ipsec/
- IPsec 2000におけるFreeS/WANの設定サンプルファイル
http://www.hsc.fr/ressources/ipsec/ipsec2000/freeswan/
- IPsec 2000におけるKAMEの設定サンプルファイル
http://www.hsc.fr/ressources/ipsec/ipsec2000/kame/
- The PKIX certificate with racoon
http://www.kame.net/newsletter/20001119b/
- 『マスタリングIPsec』
馬場達也著/オライリー・ジャパン
中編へ |
1/3
|
|
||||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム セキュリティ関連記事 |
連載:習うより慣れろ! iptablesテンプレート集(全4回) 初心者にとって、iptablesは難しい。そこで、学習の第1歩としてテンプレートを自分の環境に適応させることから始めよう |
|
連載:ゼロから始めるLinuxセキュリティ(全11回) 奥が深いセキュリティ対策の世界をゼロから解説。ホストレベルのセキュリティからファイアウォール、IDSの構築、ログ管理方法まで、システム管理者必見 |
|
特集:WebDAV時代のセキュリティ対策[前編] WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる |
|
特集:FreeS/WANによるIPSecの導入と運用[前編] LinuxでIPSecを利用するには、「FreeS/WAN」というIPSecスタックを用いることになる。まず、これをインストールすることから始めよう |
|
特集:Linux以外のIPSecスタックとの相互接続[前編] 別のOSや異なるIPSecスタックとの相互接続が可能なら、その用途は大幅に広がる。前編では、FreeBSDのKAMEと相互接続を試みる |
|
特集:sshでセキュアネットワーク サーバにリモートログインする場合は、暗号化して転送するsshを使おう。sshをサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|