更新日:

2008年09月15日
 新サイト開設




FTPサーバ:vsFTPd


 ファイル転送といえば昔からFTPが使われていました。遠隔地にいる知合いにファイルを転送するときはメールに添付したりしますが、 容量の大きいファイルだとメールサーバの許容範囲を超えてしまい転送できない場合があります。 そんなときにFTPサーバを持っていると便利ですがパスワードが平文だったりとセキュリティに問題があったりしますので無闇に構築はできません(私は構築しましたが)。
 FTPdの種類は数多くありますが私は設定の簡単なvsftpdにしました(理由はproftpdの設定に挫折したから)。




 FTPの構築で一つ、どうしてもうまくいかずに試行錯誤を繰り返していましたが、 その理由がFTPユーザを追加するときにそのユーザのシェルの権限を与えていなかったからだと気づきました(分かってしまえば単純でしたが解明するのに苦労しました)。

コマンド:インストール
# apt-get install vsftpd
 次に、FTPユーザを追加します。ここで作成したユーザ名とパスワードはそのままFTPへのログイン名とパスワードになります。 ここでの設定例では(公開ディレクトリとユーザ名は適当に作成しました。任意のディレクトリとユーザが設定できます)
 

公開ディレクトリ:/mnt/ftp/pub/
 ユーザ名:ftpman
 パスワード:xxxxxxx ←適当につけて下さい

としていますが公開ディレクトリとユーザを追加設定すれば複数のユーザにFTPのディレクトリを公開できます。

ファイル編集:/etc/shells
/etc/shellsに下記の文字を追加します。これでユーザ登録の際に、シェルを/bin/falseと指定されたユーザは FTPログインが出来てFTPコマンドは通りますが、一般シェルの操作はできずに余計な操作をされるのを防ぎます
/bin/false
コマンド:FTPユーザ追加
FTPで公開したいディレクトリを作成
今回の例では/mnt/ftp/pub/が公開ディレクトリになる
# mkdir /mnt/ftp/
# mkdir /mnt/ftp/pub/

FTPユーザ用のグループを作成(例ではftpgroup)
# groupadd ftpgroup

ユーザ追加コマンドの-dのあとにホームディレクトリを指定(このディレクトリが公開されます)、この例ではftpmanという名前のユーザを作成しています。作成するユーザはFTPのためだけに作成するものと考えてください。
# useradd -d /mnt/ftp/pub -g ftpgroup -s /bin/false ftpman

パスワードを設定 ここで設定したパスワードがFTPへのログインパスワードになります
# passwd ftpman ←エンターを押して続けてパスワードを入力する
次にvsFTPdの設定をします。

ファイル編集:/etc/vsftpd.conf
anonymous_enable=NO アノニマスでのアクセスを許可しない
local_enable=YES サーバで登録したユーザ名でアクセスする
write_enable=YES FTPサーバに書き込みを許可する
ls_recurse_enable=YES コメントアウトをはずしてサブディレクトリの処理も行えるようにする

pasv_enable=yes PASVモードを有効
pasv_min_port=50000(例) PASVモードで使用するポートを指定(範囲始め)
pasv_max_port=50029(例) PASVモードで使用するポートを指定(範囲終わり)

chrootの設定。この設定をしないとFTPでログインしたディレクトリより上位のディレクトリへ移動できてしまいます
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

バナーを非表示にして余計な情報を公開しないようにします
ftpd_banner=Welcome to FTP service.

local_umask=022 書き込みパーミッションをrw-r--r--にする



転送量が多すぎたりするとプロバイダに帯域制限をされる可能性がありますので転送速度を程ほどに抑えておいたほうがいい場合もあります
その場合、例えば下記の一文を追加すると転送速度が300KB/秒に制限されます。anonymous接続の場合は「anon_max_rate」
local_max_rate=300000(例)
コマンド:公開ディレクトリのパーミッション変更
/mnt/ftp/pub/のグループをftpgroupにする
# chgrp ftpgroup /mnt/ftp/pub/

/mnt/ftp/pub/のオーナーをftpmanにする
# chown ftpman /mnt/ftp/pub/

vsFTPdを再起動して設定を反映させる
# /etc/init.d/vsftpd restart
上記vsftpd.confファイル内のchroot設定で指定した/etc/vsftpd.chroot_listのファイルを作成します。

コマンド:/etc/vsftpd.chroot_list作成
何も記載せずに保存して空ファイルを作成する
# vi /etc/vsftpd.chroot_list すぐに:wqコマンドで保存終了させる
あとは玄箱ファイアウォールiptableの設定で20番、21番、50000から50029番のポートを開放させ、ルータのファイアウォールも開放、 かつポートフォワーディングの設定も行います。
外部からftp://xxx.xxxx.xxx(サーバのアドレス)にブラウザからアクセスすれば公開フォルダの中身が閲覧できます。 または 「FFFTP」のようなFTPクライアントソフトを使用しても同様です。ユーザ名とパスワードは上記作成したものを使用します。


玄箱で遊ぼう!!―玄箱/玄箱HG対応
玄箱で遊ぼう!!―玄箱/玄箱HG対応
玄箱の本
玄箱の本
玄箱をハックしよう!―ハックキットで夢のVine Linuxホームサーバー
玄箱をハックしよう!―ハックキットで夢のVine Linuxホームサーバー