木曜日, 8月 30, 2007

SUSE(SLED10)のSP1適用方法

SLED10のSP1が公開されたので適用しようと作業を開始するが、挙動がおかしく随分とハマってしまった。

今回の作業にあたり、SUSEのサイトに記載してあった内容をまずは参考にしてみた。(http://www.novell.com/ja-jp/products/desktop/eval.html)
【抜粋】
---
個々のService Pack のディスク#1でインストールを開始するか、YaST「パッチCDアップデート」モジュールによってSLEDインストールにService Packを適用します。
---

対象のマシンはマルチブート環境であり、CDブートのSP1適用はMBR等が上書きされる可能性が嫌だったのでYaSTによる適用方法を選択。今思えば、この選択が間違いだったと後悔。

というのは、YaSTの「パッチCDアップデート」や「システムアップデート」を何度試してもSP1の適用に失敗してしまった。ここでの失敗とは、YaSTがいきなり落ちたり、SP1適用中にrpmが適用できないと怒られたりと(その後rpmdbが壊れた)、かなりやられ放題。。

最後の選択肢として残っていたのがCDブートによるSP1適用方法。結果論ではあるが、この方法でしか適用できないのでは?、と疑いたくなるほど久々のハマリようだった。(気にしていたMBR等の上書きもなかった。)

火曜日, 8月 21, 2007

vsftpdでシェル利用の無効化

ftp利用ユーザを作成する際、ftpのみの利用を想定した場合はシェルを利用させないように「/bin/false」とすると思う。しかし、vsftpdの場合は「/bin/false」ではNGの様子。

これは実際に設定してみて分かったのだが、「/sbin/nologin」を指定しないとftpのログインができなかった。今までは、どちらであってもログイン出来なくする指定と思っていたが、厳密には異なる点があるらしい。細かい点に気をつける必要がありそう。。

日曜日, 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に変更してみる。