日曜日, 8月 05, 2007

SafeTPでftp通信の暗号化

ftp通信の暗号化を行うSafeTPというツールのセットアップを行ってみた。ソースの更新は既に止まっているみたいで、unix版の最新は「version 1.50, released Aug. 9 2003」となっていた。
http://safetp.cs.berkeley.edu/unix.html

インストール時に苦労した点は、SafeTPのインストール対象はinetdの使用を想定していること。今回試したのはCentOS4.5だったので当然、スーパーデーモンはxinetdを利用している。で、色々と苦労したのでインストール履歴を残しときます。


【使用したソース】
・sftpd-1.50.tar.gz (ftpサーバ側に設置するSafeTP)
・gmp-4.2.1.tar.gz (SafeTPのコンパイル時に必要)
・gcc-3.4.patch.txt (SafeTPのパッチ。gcc-3.4.1以降を使用してる場合に必要)
・SafeTP20.EXE (Winクライアント側のSafeTP-Manager)


【gmpのインストール】
# tar xvzf ./gmp-4.2.1.tar.gz
# cd ./gmp-4.2.1
# ./configure
# make
# make check
# make install
(/usr/local/lib/libgmp.a が設置される)


【sftpdのインストール】
# tar xvzf ./sftpd-1.50.tar.gz
# cd sftpd-1.50
# ln -s /usr/local/lib/libgmp.a .
# patch < /usr/local/src/gcc-3.4.patch.txt
# ./configure
# make
# make check


【safetpユーザの作成】
# useradd -d /usr/local/safetp safetp


【インストールスクリプトの代わりに手動で設定】
# cp sftpd sftpc makekeys viewkey addent ~safetp/.
# chmod 755 ~safetp/*
# chown safetp:safetp ~safetp/*


【キーの作成】
# su - safetp
$ ./makekeys 0 1024

Enter an identifying string (80 chars maximum):
○○○

$ mv /var/tmp/safetp/* ~safetp/.
$ ./viewkey DSA/public.key > DSA/public.key.txt
$ chmod a+r DSA/public.key.txt
$ chmod a+x DSA
$ exit


【/etc/servicesファイルの編集】
ftp 21/tcp safetp
raw-ftp 221/tcp


【/etc/xinetd.d/safetpの作成】
----------------------------------------------
service safetp
{
disable = no
socket_type = stream
wait = no
user = safetp
server = /usr/local/safetp/sftpd
server_args = -s -9 -y/usr/local/safetp -r40000-40999
}
----------------------------------------------
-rオプションはFireWallを越える際に必要。


【/etc/xinetd.d/raw-ftpの作成】
----------------------------------------------
service raw-ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
only_from = 127.0.0.1
only_from = <サーバのIPアドレスを指定>
}
----------------------------------------------


【使用しているftpサーバの設定変更】
ここでは、CentOS標準のvsftpdを使用したので次の点を変更。
listen=NO
listen_port=221

元々はスタンドアロンで起動していたvsftpdだが、SafeTPの導入によってftpサーバの起動はsftpd経由に変更された事に注意。そのため、ftpサービスの常駐は行わない。
# chkconfig vsftpd off
# service vsftpd stop

SafeTPの方はxinetd経由で起動するよう、設定ファイル(/etc/xinetd.d/safetp)を設置したのでxinetdを再起動する。
# service xinetd restart


【セキュリティ設定】
tcp_wrappersを有効にしている場合は、vsftpdとsftpdを許可するように設定。また、iptablesなどのFireWallを有効にしている場合はポート40000~40999を許可するように設定。


【クライアント側からの接続】
作成したキー(public.key.txt)をクライアント側に読み込ませ、接続が可能である事をテストする。また、デフォルトの設定では「data」通信がinsecureとなっているので、StatusタブのPolicyOptionsをFullEncryptionに変更してみる。

0 件のコメント: