Vsftpd

提供: Wikinote
2011年2月27日 (日) 11:26時点におけるHagio (トーク | 投稿記録)による版 (設定例)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

RHEL の vsftpd について。

設定

/etc/vsftpd/vsftpd.conf で設定を行う。

デフォルト設定

RHEL5 のデフォルト設定は以下の通り。

# "anonymous" でのログインを許可するかどうか。"ftp" でもログイン可能になる。
# デフォルトでは、ftp ユーザのホームディレクトリ /var/ftp に chroot される。
anonymous_enable=YES

# /etc/passwd にあるローカルユーザのログインを許可するかどうか。
local_enable=YES

# ファイルシステムを変更するような FTP コマンドを許可するかどうか。
write_enable=YES

# ローカルユーザが生成したファイルの umask 値。
local_umask=022

# ディレクトリを移動した際に、ディレクトリの .messages の内容を見せるかどうか。
dirmessage_enable=YES

# ログファイルにアップロードとダウンロードのログを記録するかどうか。
xferlog_enable=YES

# PORT でのデータ接続でサーバが送信もとポートに 20(ftp-data) を使用するかどうか。
connect_from_port_20=YES

# wu-ftpd と同様の標準的なフォーマットで記録するが、読みづらい。
xferlog_std_format=YES

# vsftpd 自身で接続を受け付けるかどうか。xinetd などから起動する場合は NO。
listen=YES

# vsftpd が使用する PAM サービス名
pam_service_name=vsftpd

# ログインを許可するあるいは拒否するユーザを userlist_file から読み取るかどうか。
userlist_enable=YES

# tcp_wrappers のアクセス制御を使用するかどうか。
tcp_wrappers=YES

その他、主に以下の設定がデフォルトでなされているので注意が必要。

# userlist_enable が有効な場合に読み込まれるファイル。
userlist_file=/etc/vsftpd/user_list

# userlist_enable が有効な場合、userlist_file に記載されたユーザを拒否するかどうか。
# NO の場合、許可リストとなる。
userlist_deny=YES

# ローカルユーザを chroot するかどうか。
chroot_local_user=NO

# chroot_list_enable が有効な場合に読み込まれるファイル。
chroot_list_file=/etc/vsftpd/chroot_list

# chroot_list_file で指定したファイルを読み込むかどうか。
# ★注意:chroot_local_user が有効の場合は、chroot しない ユーザのリストとなる。
chroot_list_enable=NO

上記の暗黙の設定も含めると、デフォルトでのアクセス制御は以下の通りとなる。

  • anonymous, ftp ユーザはログイン可能 (/var/ftp に chroot される)
  • ローカルユーザはログイン可能 (chroot されない)
    • しかし、/etc/vsftpd/user_list あるいは /etc/vsftpd/ftpusers に記載されているユーザはログイン不可
      • 前者は、デフォルトで userlist_deny=YES のため。
      • 後者は、PAM で拒否リストとして使用されているため。(/etc/pam.d/vsftpd 参照のこと。)

設定例

以下のポリシーでアクセス制御を行う場合に、デフォルトからどう変更するか。

  1. anonymous ログインを不可とする。
  2. 指定したユーザのみアクセスを許可し、chroot させる。
[/etc/vsftpd/vsftpd.conf]
#anonymous_enable=YES ★NO に変更
anonymous_enable=NO
local_enable=YES ★そのまま
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

userlist_file=/etc/vsftpd/user_list.allow ★追記
userlist_deny=NO ★上記 userlist_file を許可リストとする
chroot_local_user=YES ★追記
# どのみち指定したユーザしかログインできないので、
# リストでの chroot 指定はしていない。

[/etc/vsftpd/user_list.allow]
hagio ★ログイン許可するユーザ