vsftpd
インストール
# yum install vsftpd
ユーザ作成
# useradd -s /sbin/nologin ftpuser01
Configuration
隠しファイルを表示するようにする
- クライアントの設定もする必要ある
- サーバの設定
- force_dot_files=YES
パッシブモード
設定
pasv_enable=YES pasv_min_port=60000 pasv_max_port=60010
pasv_address XXX.XXX.XXX.XXX
- 設定ファイルで上記を設定していると、データ通信時に、XXX.XXX.XXX.XXX と通信するように求められる
- ローカル環境からの接続だと、XXX.XXX.XXX.XXX が GIP の場合、接続できない
- 回避策は FTP インスタンスを 2 つ設けるのが良いかな
local_umask=022
- 新規ファイルに適用するパーミッションの umask 値を設定
- 各数値はビット展開され、パーミッションの rwx に対応
- 先頭が "0" の数値は 8 進数と解釈され、各桁は owner, group, other に該当
- "0" 以外の数値を設定すると、10 進数と解釈
- owner に "0" 以外を指定するには、先頭に "0" を付加して 4 桁の数値にする
- 下 3 桁が owner, group, other として処理
/etc/vsftpd/user_list
- 記載されているユーザのログインを禁止する
- このファイルに記載されたアカウントを使おうとすると、パスワードの入力を行う前にログインが拒否される
- このファイルに一般ユーザのアカウントを記載すると、システム内にそのユーザが設定されていることを容易に知ることができてしまい、総当たり攻撃などを実施しやすくなるので、一般ユーザは
/etc/vsftpd/ftpusers
に追加する
- chroot の設定
- ホームディレクトリの権限注意
- root にしておくとか、書き込み権限を不要にするとか
chroot_local_user
- YES
- すべてのローカルユーザのログインを chroot した環境で処理
- すべてのローカルユーザは自分のホームディレクトリ以外のデータを参照することが不可
- YES
chroot_list_enable
- YES AND
chroot_local_user=NO
chroot_list_file=/etc/vsftpd/chroot_list
に設定されたユーザだけ chroot した環境で処理するようになる
- YES AND
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
に設定されたユーザ以外を chroot した環境で処理するようになる
- YES AND
- ホームディレクトリの権限注意
ログ
xferlog_enable=YES
xferlog_std_format=YES
書式
- 前半
- 日時 転送時間(秒) クライアントのIPアドレス 転送バイト数 転送ファイル名
- 後半
- 前半
xferlog_std_format=NO と設定した上で、vsftpd_log_file にログファイル名を指定すると、ファイル転送のログに加え、サーバへの接続に関するログも出力されるようになる
xferlog_std_format=NO vsftpd_log_file=/var/log/vsftpd.log
セキュリティ
- vsftpd のバージョンを隠す
- ftpd_banner="Welcome to FTP service."
- ログインした時に表示されるメッセージ
- デフォルトではvsftpdのバージョンが表示される。
ユーザリストファイル
FTP アクセスを許可するかどうかをユーザ単位で設定できる
デフォルト(/etc/vsftpd/user_list) にユーザの一覧を記述する
- プロセスの再起動は不要
ブラックリスト形式の場合(デフォルト)
userlist_file=/etc/vsftpd/user_list userlist_enable=YES userlist_deny=YES
ホワイトリスト形式の場合
userlist_file=/etc/vsftpd/user_list userlist_enable=YES userlist_deny=NO
FTP サーバをファイル配布用途として利用する場合は、ファイルのアップロードは不要
write_enable=NO
- ファイルのアップロードを禁止
匿名 FTP を禁止にする ※ デフォルトは許可
``` anonymous_enable=NO ```