![]() |
wu-ftpdとは
|
FTPサーバを立てて、FTPクライアントソフトによりファイルを送受信を主な目的とする デーモンの総称である。 |
|
Protocol
|
FTP/FTP-DATA | |
Port
|
20/TCP 21/TCP | |
Program
|
/usr/local/wu-ftpd/sbin/in.ftpd (tar.gz版) /usr/sbin/in.ftpd (RPM版) |
|
ダウンロード先 | http://www.wu-ftpd.org/ (tar.gz版) | |
http://rpmfind.net/linux/rpm2html/search.php?query=wu-ftpd&submit=Search+...(RPM版) | ||
Install
|
tar.gz版は tar zxvf wu-ftpd-2.6.2.tar.gz等として解凍した後、以下の好みのオプションで、 ./configure する。後ほど細かく解説する |
|
実行方法
|
/usr/sbin/in.ftpd -S (RPM版) |
|
備考
|
wu-ftpdは、セキュリティバグが頻繁に出ているので、常に新しいものを維持しておく必要がある。 ちなみに、最新版のwu-ftpdのsrpmをばらして、ソースを自分でコンパイルすると、 version 2.8.0 になっていた。 |
|
|
|
今回構築しようとしている機能は次のとおりである。
|
今回構築するにあたって必要なものだけを抜粋している。
./configure |
オプション
|
|
説明
|
|
![]() |
--prefix=/usr/local/wu-ftpd
|
|
インストール先を、/usr/local/wuftpd 等に指定する。設定しなければデフォルトで/usr/local/ となると思う。 |
|
|
||||
![]() |
--enable-noop
|
|
機能自体は何もない。デーモンがタイムアウトを防ぐために、定期的に、noopコマンドを発行して、タイムアウトを防ぐ機能だ。デバックモードで意味もなくタイムアウトが起こる場合は、つけてみるようにしている。 |
|
![]() |
--disable-numericuid
|
|
version 2.5ぐらいまでは、UIDは、所有者で表示されていたが、2.6.2辺りから、デフォルトがUIDのまま表示されるようになった。以前と同じように所有者名の表示で、出したい場合にはつけると良いだろう。 | |
![]() |
---enable-chmod
|
allow
ftp users to set SETUID/SETGID/STICKY bits ftpユーザがSETUID/SETGID/STICKYビットをセットすることを可能にする。 |
||
![]() |
--enable-pam
|
PAM(Pluggable
Authentication Modules)モジュールを使用する 通常,サーバに接続する際には認証プログラムが動作して各サービスへ接続される。この認証部分のみを独立させることで各サービス(ftpdなど)ごとに基本的な認証設定をしなくて済むよう配慮されているのだ。各サーバソフトをリコンパイルする必要なく,PAM サポートという形で共通のユーザー認証が実現できる。 |
||
![]() |
--enable-tls
|
SSL/TLS
を有効にする。 TLS は、IETF によって標準化された SSL ベースのプロトコルだそうだ。SSLはNettscape社が開発したのに対し、TLSはSSL を一般化し,標準化したものと覚えとけば良いだろう。 |
||
![]() |
--enable-tls-debug
|
SSL/TLS を有効にした場合、/var/log/message にデバックレベルで詳細がでてくる。ファイル名を指定することにより、特定の場所へ出力することも可能なようだ。
|
||
![]() |
--with-openssl-dir
|
OpenSSLがあるディレクトリィを指定する。デフォルト指定では、/usr/local/sslだと思うが、環境によって -with-openssl-dir=/usr/local/openssl などとなるかもしれない | ||
手順
|
説明
|
|||
./configure
--上記の好みのオプション |
|
今回の自分の構築は、このようになった。 ./configure --prefix=/usr/local/wu-ftpd --enable-noop --disable-numericuid --enable-chmod |
||
|
||||
通常不要
|
PostgreSQL連携用
コンパイル手順 |
説明
|
||
![]() |
cd $src/postgresql
make install-all-headers |
.ます、PostgreSQL用のヘッダファイルなどが必要なので、インストールが済んでいない場合は、インストールを済ませる。 PostgreSQLのソースファイルの場所で、make install-all-headers と打つ。 すると、PostgreSQLで開発する時に必要なヘッダファイルなどがインストールされる。 (rootで作業を行う) |
||
![]() |
vi wu-ftpd/src/Makefile
|
wu-ftpd/src/ のなかに Makefile があるので、以下の部分を見つけ付け加える。
$(CC) -o $@ ${OBJS} $(LDFLAGS) $(LIBS) ↓ $(CC) -o $@ ${OBJS} $(LDFLAGS) $(LIBS) -I/usr/local/pgsql/include -L/usr/local/pgsql/lib -lpq -lnsl -lcrypt configureを改良すれば、makefileを修正する必要も無いが、今回はそこまでしなかった。 |
||
![]() |
対象Daemon
wu-ftpdのftpd.c |
ftpd.c | ||
SSL/TLSの為の手順 2004/1/28 必要と思われるDocument
|
||||
![]() |
SSL/TLSのHOWTO
|
|||
SafeTpの構築手順
|
説明
|
|||
![]() |
2004/01/23 後日、SafeTPは色々なソフトとの相性がでることが判る。 また、SafeTP自体が柔軟なIP制限をしてないことから改造を試みるが、wu-ftpdに、標準搭載されてる、sslの機能を使ったほうが安定しそうなので、そちらの構築を再開。以下は、一応入れたときの記録 まず以下のサイトから、UNIX用のソースコードを引っ張ってくる。 http://safetp.cs.berkeley.edu/unix.html |
|||
![]() |
ソースは、C++で書かれているようだった |
|||
![]() |
./configure
gmake gmake check |
make作業を行った後、sc/install.pl
スクリプトを利用して、インストールしろと書いてあるが、このスクリプトは、inetd.confを利用しているのが前提で作られているらしいので、使えなかった。 gmake後、コンパイル済みのバイナリーを、自分でコピーした。 cp sftpd sftpc makekeys viewkey addent /usr/local/safetp chmod 755 /usr/local/safetp chown -R safetp /usr/local/safetp chgrp -R safetp /usr/local/safetp |
||
SafeTPの構築手順
|
||||||||||||
sftpd の公開鍵と秘密鍵を作成する。 |
||||||||||||
|
||||||||||||
|
||||||||||||
公開鍵をテキスト化する。 ./viewkey DSA/public.key > DSA/public.key.txt |
||||||||||||
パーミッションの確認(key作成時デフォルトだと思うが念のため確認)/usr/local/safetp
|
||||||||||||
サービスのrの設定(以下を追加する。コメントを付けとくとなおいい) vi /etc/services ftp 21/tcp safetp # safetp added by SafeTP install 2004/01/01 ftp 21/udp fsp fspd raw-ftp 351/tcp ftpサーバを、loopbackアドレスと、自サーバに割り振られているアドレスのみとする。 vi /etc/hosts.allow |
||||||||||||
インターネットスーパーサーバの設定(xinetd)
|
||||||||||||
wu-ftpd+SafeTP+PostgreSQL起動
|
||||||||||||
SafeTPは、インターネットスーパーサーバの再起動で対応済みである。 待ち受けportは、デフォルトで21番ポートになる。 wu-ftpdは、351番portで走らせる。 in.ftpd -S -p 351 もちろんこのままでは、351番ポートで待機している、ftpサーバも反応してしまうため、iptablesなどで、ルールを設定してやる。 |
||||||||||||