wu-ftpd

※いわずと知れたFTPソフトです。
 匿名アクセスを許可する場合でなくても、セキュリティ上、
 常に最新のものを使うようにしましょう。

【ダウンロード】
http://www.wu-ftpd.org/

【展開】
(以下の作業はrootで行ってください)
# cd /usr/src
# gzip -cd wu-ftpd-current.tar.gz | tar xvf -

【コンパイル】
# cd /usr/src/wu-ftpd-2.6.2
# ./configure
# make

【インストール】
# make install

【設定】
まず、「/etc/inetd.conf」を修正します。
ftpの記述の行の先頭の「#」を外します。
# vi /etc/inetd.conf
--------------------------------------------------
・・・・・・
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
・・・・・・
--------------------------------------------------
※「-l」はログを記録する、「-a」は「/etc/ftpaccess」を参照する
 ようにする指定です。

ここで修正した内容を有効にします。
# kill -HUP (inetdのPID)

(inetdのPIDは「ps aux | grep inetd」で見られます)


※「/etc/ftpaccess」の設定
デフォルトで特に問題はないと思いますが、「passwd-check」は
以下のように指定します。

passwd-check <none/trivial/rfc822> <enforce/warn>

  none:パスワード不要
  trivial:「guest@unknown」のように「@」を1つ含めばよい
  rfc822:「robert@host.co.jp」のような完全な形が必要

  enforce:パスワードが条件に合わない場合、接続を拒否
  warn:警告するのみで接続を許可する

※「/etc/ftphosts」の設定
ログインを制限したいホスト名を指定します。
デフォルトでは制限がありませんので、必要に応じて付け加えます。

行頭からホスト名またはIPアドレスを書けば、そのホストからのアクセスは
拒否されます。

ただ、指定したユーザだけを制御したい場合は以下のようにします。

Allow <username> <addrglob>
Deny <username> <addrglob>

これは、<addrglob>で指定されるホスト名(またはIPアドレス)に、
<username>でログインしようとしたときに、許可(Allow)するか
拒否(Deny)するか、という指定です。

※「/etc/ftpgroups」の設定
ログインを制限したいグループ名を指定します。

デフォルトでは制限がありませんので、必要に応じて付け加えます。

行頭からグループ名を書けば、そのグループに属するユーザからのアクセスは
拒否されます。


※「/etc/ftpusers」の設定

ログインを制限したいユーザ名を指定します。

デフォルトでは「root」をはじめ、システム管理に関する記述があります。
この部分は変更せずに、必要なものを-追加するだけにするのが良い
でしょう。

行頭からユーザ名を書けば、そのユーザからのアクセスは拒否されます。


-------------------------------------------------------------
※わたしの環境では、登録されたユーザからだけを許可するという設定
 ですが、匿名ユーザからのアクセスを許可する場合、注意することが
 あります。


※匿名ユーザ
接続するFTPサーバにアカウントがなくても、ログインできる仕組みです。
匿名といえどもユーザ名とパスワードは必要です。通常、ユーザ名は
「ftp」または「anonymous」が使われ、パスワードにはメールアドレスを
使うのがマナーということになっています。ただし、サーバによっては
パスワードが「ユーザ名@ホスト名」ではダメで、「ユーザ名@ドメイン名」
でないとダメ、というところもあります。


また、「cd ..」で1つ上のディレクトリに行けるのですが、匿名ユーザには、
こうしたことも規制する必要があります。(繰り返せばルートディレクトリ「/」
にも行けてしまうので。)
この制限をwu-ftpdで行うには、制限専用のグループとユーザを作成し、
「/etc/passwd」のユーザのホームディレクトリの指定の最後に「/./」を追加
したり(chroot操作)、シェルを「/usr/bin/passwd」などの安全なものに変える、
その他いろいろな作業が必要で、けっこう面倒な設定が必要に
なるようです。(わたしの方では実験中ですが、まだ成功していません。)
この点は「ProFtpd」の方がずっと設定しやすいと聞いています。


【クライアントからのアクセス】
FTPクライアントソフトがあれば、WindowsなどからでもFTPでファイルの
やりとりができるようになります。

C:\ftp (FTPサーバのIPアドレス) で起動します。
(DNSが設定されていれば、ホスト名でも可です)
プロンプトが中々表示されない時は、DNSまたは「/etc/hosts」の設定を
見直してください。

ユーザ名とパスワードを入力します。

※FTPコマンド

  ASCII:今後のファイル転送モードをASCII(テキスト)モードにセット
  BINARY:今後のファイル転送モードをBINARY(バイナリ)モードにセット
  CD(ディレクトリ名):FTPサーバ上のカレントディレクトリを変更
  LCD (ディレクトリ名):FTPクライアント上のカレントディレクトリを変更
  DIR:FTPサーバ上のカレントディレクトリのファイル一覧表示
  PWD:FTPサーバ上のカレントディレクトリ名の表示
  GET (ファイル名):FTPサーバからクライアントへファイルを取得(ダウンロード)
  PUT(ファイル名):FTPクライアントからサーバへファイルを転送(アップロード)

なお、ポートフォワードが行われている時は、パッシブモードでないとやりとり
できないことがあります。


【ログ】
wu-ftpdのログは、アクセス自体のログと、ファイル転送のログがあります。

  ・アクセスログ:「/var/log/messages」
  ・ファイル転送ログ:「/var/log/xferlog」

※アクセスログは、他のメッセージも入っているので、実際には

# grep ftpd /var/log/messages

とすると見やすくなります。