3. 構築
3.5. セキュリティポリシーの定義
3.5.4. FTP サーバー
ftp サーバーは、Trusted Solaris にも標準でインストールされているが、本書ではファ イルを圧縮しながら転送する機能や IP アドレス単位のアクセス制限等、anonymous FTP と して有効な多くの機能が携わっている wu‑ftpd(Washington University FTP daemon)を利用し て FTP サーバーを設定する手順を説明する。
(1) ディレクトリ構造
今回、wu‑ftpd のインストールするにあたって、ディレクトリおよびファイルの保存先を 以下のように定義した。
Ⅰ‑163 Copyright © 2003 IPA, All Rights Reserved.
表 3‑91 ディレクトリの作成
# ディレクトリ ファイル 備考
1 ftpaccess 2 ftpconversions 3 ftpgroups 4 ftphosts 5
/usr/local/wu‑ftpd/etc
ftpusers
Wu‑FTPD の設定ファイル
6 ftpcount 7
/usr/local/wu‑ftpd/bin
ftpwho
8 ckconfig 9 ftprestart 10 ftpshut 11 privatepw 12
/usr/local/wu‑ftpd/sbin
xferstats
管理コマンドプログラム
13 /var/ftp/ * 14 /var/ftp/bin/ * 15 /var/ftp/etc/ * 16 /var/ftp/lib/ * 17 /var/ftp/pub/ *
Anonymous 用のホームディレクトリ
(2) コンパイル
執筆時の wu‑ftpd の最新ソースファイルは、wu‑ftpd‑2.6.2 となっている。これを 公式サイト(http://www.wu‑ftpd.org)等からダウンロードし/usr/local/pkg に保存し ているものとする。Trusted Solaris 標準の ftpd では、ユーザの SL 範囲のみログイ ンを可能にしたり、役割でのログインは不可能になっている。wu‑ftpd においてもこ れらの制限を加えるため、configure を実行する際に PAM(Pluggable Authentication Module)を有効にする必要がある。インストールは primaryadmin[admin̲low]でおこ なった。また、インストール後、設定ファイルを/usr/local/wu‑ftpd/etc に用意する 必要があるが、サンプルが用意されているのでこれを利用することにする。
Ⅰ‑164 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑122 コンパイル
$ sh
# cd /usr/local/pkg
# gzcat wu‑ftpd‑2.6.2.tar.gz │ tar xvf ‑
# cd wu‑ftpd‑2.6.2
# ./configure ‑‑prefix=/usr/local/wu‑ftpd
‑‑with‑etc‑dir=/usr/local/wu‑ftpd/etc ‑‑enable‑pam
# make
# make install
# cd doc/examples
# cp ftpgroups ftphosts ftpusers /usr/local/wu‑ftpd/etc (3) ユーザおよびグループの追加
anonymous で利用するユーザを作成する必要がある。このユーザは、特にセキュリ ティ属性等は必要はないので primaryadmin でコマンドラインで作成する。
リスト 3‑123 ユーザおよびグループの追加(ftp)
# useradd ‑d /var/ftp ‑s /bin/false ‐g 60001 ftp
(4) anonymous 環境の設定
ここでは、anonymous における環境を設定する。wu‑ftpd 自体の詳細な設定内容の説 明は割愛し、ls コマンドのみ利用できるようにする。Anonymous でログインした場合、
chroot を行い ftp ユーザのホームディレクトリ/var/ftp が/となる。そのため、ls 等 必要なコマンド、ライブラリは/var/ftp 以下にディレクトリを作成しファイルをコ ピーする必要がある。今回作成したディレクトリは/var/ftp/usr/lib、/var/ftp/bin/
である。必要に応じて、/var/ftp/etc 等のディレクトリ等も作成して頂きたい。また、
コンテンツを保存するディレクトリ/var/ftp/pub も用意した。
Ⅰ‑165 Copyright © 2003 IPA, All Rights Reserved.
リスト 3‑124 anonymous の設定
$ sh
# mkdir /var/ftp
# cd /var/ftp
# mkdir bin pub
# mkdir ‐p usr/lib
# cp ‐p /usr/bin/ls bin/ls
# chmod 111 bin/ls
# cp ‐p /usr/lib/ld.so.1 /usr/lib/libc.so.1 /usr/lib/libdl.so.1 usr/lib/
(5) セキュリティポリシー
図に示すのは、その際のイメージ図である。ここでは、特に FTP のポリシーという のは定義せず、他のサーバと同様のラベル情報を利用した。
ADMIN_LOW PUBLIC ADMIN_HIGH
services
contents conffile in.ftpd 全ての
ネットワークアクセス に対する許可範囲
図 3‑32 セキュリティポリシーのイメージ図
今回の FTP サーバーは、anonymous のみの利用を想定しファイルのアップロードは 禁止し、ダウンロードのみ許可する。そのため、外部からの応答は[PUBLIC Services]
で行い、コンテンツは[ADMIN̲LOW]で保存する。また、 表 3‑92 に示すサービス用プ ロセス属性値を inetd プロファイルに追加する。
Ⅰ‑166 Copyright © 2003 IPA, All Rights Reserved.
表 3‑92 サービス用プロセス属性値
ファイル名 user group label clearance 特権
/usr/local/wu‑ftpd/sbin /in.ftpd
N/A N/A N/A N/A net̲privaddr proc̲setid proc̲chroot sys̲config
(6) セキュリティ属性の設定
インストールしたすべてのファイルに許容特権を付与する。設定は、primaryadmin でおこなう。
表 3‑93 許容特権の設定(primaryadmin)
# find /usr/local/wu‑ftpd ‑type f ‑exec setfpriv ‑s ‑a all {} ¥;
(A) inetd.conf の設定
ftpd は、inetd を利用して動作するため、/etc/inetd.conf を以下のように編集を おこなう。
表 3‑94 inetd.conf の設定
#ftp stream tcp6 nowait,trusted,setaudit root /usr/sbin/in.ftpd in.ftpd ftp stream tcp nowait,trusted,setaudit root
/usr/local/wu‑ftpd/sbin/in.ftpd in.ftpd ‑a
以上の inetd の設定が完了すると、inetd の再起動を行う。
表 3‑95 inetd の再起動
# pkill ‐HUP inetd
(B) ネットワーク属性定義
次のネットワークに関わるセキュリティ属性を適用する。なお、設定手順につい てはそれぞれに、3.4.7.1(2)(A)、3.4.7.2(2)(A)、3.4.7.3(2)(A)に記載している。
Ⅰ‑167 Copyright © 2003 IPA, All Rights Reserved.
表 3‑96 インターフェース属性
# Interface Mini Label Max Label Label Clearance 1 hme0 PUBLIC PRIVATE
services
PUBLIC services
PUBLIC services 表 3‑97 テンプレート属性
# Template Mini Label Max Label Label Clearance 1 public̲services PUBLIC
services
PUBLIC services
PUBLIC services
PUBLIC services 表 3‑98 ネットワーク属性
# Host/Wildcard Hostname IP Address Prefix Length Template 1 Wildcard N/A 0.0.0.0 N/A public̲services
Ⅰ‑168 Copyright © 2003 IPA, All Rights Reserved.