FreeS/WANによるIPSecの導入と運用[前編]
− LinuxでIPSecを使おう −
NTTデータ COEシステム本部
システム技術開発部第三技術開発担当
2002/2/26

カーネルがコンパイルできることが大前提なので、カーネルソースの展開→コンパイルが一通りできなければなりません。カーネルコンパイルについては、カーネル2.4.0導入活用術で解説されているので、本稿では詳細は省きます。
なお、インストールまでの作業はrootでないと実施できませんので、作業には十分な注意が必要です。
今回は、2.4系カーネルの最新版(2002年2月15日時点)である2.4.17を使って、FreeS/WANを利用できるようにしてみます。手順が特定のディストリビューションに依存しないように、カーネルソースはオリジナルのものを使用します。また、カーネルソースが/usr/src下に展開されている環境を想定します。
■FreeS/WANのアーカイブの入手
FreeS/WANのオフィシャルWebサイト(http://www.freeswan.org/)を読み、案内に従ってダウンロードします。配布されているアーカイブは、リリース版とスナップショットの2種類がありますが、特に理由がなければリリース版をダウンロードすればよいでしょう。2002年2月15日の時点の最新リリース版は1.95です。
■FreeS/WANのアーカイブの展開
# gzip -dc freeswan-1.95.tar.gz | (cd
/usr/src;tar xvf -) |
というように、/usr/src下にFreeS/WANのアーカイブを展開します。この時点で、/usr/src下に、少なくとも「linux」と「freeswan-1.95」という2つのディレクトリができていることを確認してください。
■カーネルパッチの適用
/usr/src/freeswan-1.95に移動し、以下のコマンドを実行します。
# make patches |
この結果、Linuxのカーネルソースに対して必要なカーネルパッチが適用されます。実行結果はout.kpatchというファイルに格納されるので、必要に応じて確認してください。
■設定およびコンパイル
一度もカーネルコンパイル(もしくはコンパイル設定)をしたことがない場合は、/usr/src/linuxに移動して、
# make menuconfig |
を実行し、設定を保存して終了します。というのも、FreeS/WANはmake menuconfig実行時にカーネルの設定ファイル(/usr/src/linux/.config)の有無をチェックしているからです。
たまに何の設定項目も表示されないことがありますが、そのときも設定内容の保存だけはしてください。これを怠ると、make menugo実行時に以下のようなエラーが出力されます。
# make menugo |
次に、/usr/src/freeswan-1.95に移動して、
# make menugo |
もしくは
# make xgo |
を実行します。
前者はテキストコンソール、後者はXによる設定画面を用いた設定を行います。普通のカーネルコンフィグレーションの画面に見えますが、「Main Menu」から「Networking Options」を選択すると、設定項目の一番下の部分にIPSec関係の設定項目が増えているのが分かります(画面1)。
![]() |
画面1 IPSec関係の設定画面(画像をクリックすると拡大表示します) |
IPSec関係の項目は、全部選択しておいて構いません(注)。
注:デフォルトではすべて選択された状態になっています。 |
なお、IPSec通信をする/しないにかかわらず、必要な設定(SCSIドライバの選択など)は、この時点で行ってください。その後、メニューを<Exit>して、画面2の状態になったら設定を保存(<Yes>を選択して[Enter]キー)します。すると、その直後(設定メニュー終了後)からFreeS/WANおよびカーネルのコンパイルが始まります。このため、手作業で.configに設定を追加している人は注意が必要です。
![]() |
画面2 メニュー終了直前の選択肢 |
結果はout.kbuildというファイルに格納されるので、必要に応じて確認してください。コンパイルの終了時点で、/usr/local/sbinにipsecというスクリプトが作成されるほか、/usr/local/lib/ipsecというディレクトリに以下のコマンドがインストールされます。また、/usr/local/manにmanコマンドで参照可能なリファレンスもインストールされます。
_confread _realsetup barf manual showdefaults whack |
そこで、非常にアドホックですが、コンパイルが始まった瞬間にそれを[Ctrl]−[Z]で一時停止して、.configファイルを操作しています。本来ならばMakefileを見て、make menugoで実行される内容を1つ1つ実行するべきなのかもしれませんが……。かなり強引な設定方法ですが、このようにして作成したカーネルでも問題なく動いています。 |
■カーネルのインストール
ここまでで、コマンド類はインストールされた状態になっていますが、カーネルはまだインストールされていません。以下のいずれかの手段を用いて、コンパイルしたカーネルでブートするようにします。
bzImageをカーネルとしてブートするように設定
/etc/lilo.confに、/usr/src/linux/arch/i386/boot/bzImageをカーネルイメージとしたエントリを追加します。例えば、
image=/usr/src/linux/arch/i386/boot/bzImage |
のような感じでエントリを追加します。
追加後に/sbin/liloを実行するのを忘れないでください。
make kinstallを実行する
FreeS/WANのディレクトリ(例では/usr/src/freeswan-1.91)にて、以下のコマンドを実行します。結果はout.kinstallというファイルに格納されるので、必要に応じて確認してください。
# make kinstall |
make kinstallを実行すると、カーネルソースを格納しているディレクトリ(例では/usr/src/linux)に移動して、make install、make modules_installを実行します。
コンパイルしたカーネルに自信があるのならばよいですが、ない場合はの方法でエントリを追加するか、
でインストールしたカーネル以外のカーネルでもブートできるエントリを作成しておいた方がいいでしょう(注)。
注:ブートできないと、最悪の場合レスキューディスクなどのお世話になることになります。 |
■リブートと確認
# /sbin/shutdown -r now |
として、Linuxマシンをリブートします。
リブート時に、
klips_info:ipsec_init: KLIPS startup,
FreeS/WAN IPSec version: 1.95 |
のようなメッセージが出ていれば、KLIPSのインストールは成功していることになります。また、必要最低限のファイルは存在しているので、
277 ? S 0:00 /bin/sh /usr/local/lib/ipsec/_plutorun --debug none --uniqueids --dump --load %search --start %search --wait --pre --post - |
のようなプロセスが走行していたり、
# /sbin/ifconfig -a |
のようなネットワークインターフェイスが存在します。ここまで確認すれば、カーネルのインストールは行えていると思っていいでしょう。
これでIPSec対応カーネルはできましたが、まだ暗号化通信の設定はできていません。設定は、/etc/ipsec.confおよび/etc/ipsec.secretsというファイルで行います。この時点では、FreeS/WANの配布パッケージに入っているサンプル設定がコピーされているだけです。
■ほかのマシンへの展開
空きディスク領域などの関係でセルフコンパイルできないマシンの場合は、ほかのマシンで作成したカーネルやコマンド類をコピーすることでIPSecに対応させることが可能です。つまり、カーネル、/usr/local/lib/ipsec配下全部および/usr/local/sbin/ipsecスクリプトをそっくりコピーするのです。
例えば、筆者の場合はリスト1のようなファイルが格納されたアーカイブを用意し、それをほかのマシンに展開しています。
$ gzip -dc ipsecsys.tar.gz | tar tvf - |
リスト1 |
後編は3月5日公開予定 |
後編では、今回作成したFreeS/WAN環境をどのように使用するのかについてお話します。 |
![]() |
2/2
|
|
||||
|
![]() |
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」コマンドです。
![]() |
|
|
|
![]() |