vsftpdのホワイトリスト/ブラックリストの設定

仕事でvsftpdを入れたのでメモ。
ホワイトリスト/ブラックリストの設定


userlist_fileで指定するファイル(以降、userlist_file)には、ユーザをリストするのだが、このファイルの扱いは、vfstpd.confの設定により180度変わる。

userlist_enable=YES かつ userlist_deny=YESのとき;
 userlist_fileにリストされているユーザのログインを拒否する。


userlist_enable=YES かつ userlist_deny=NOのとき;
 基本的にすべてのユーザのログインが拒否される。
 しかし、uselist_fileにリストされているユーザについてはログイン許可


つまり、userlist_fileがホワイトリストになったり、ブラックリストになったりする。

で。それとは別に、vsftpdのデフォルトPAM設定(後述)では、ブラックリストとして/etc/vsftpd/ftpusersもチェックしているので注意が必要。

あるユーザがftpusersにリストされた時と、ブラックリストとしてのuserlist_fileにリストされた時の違いは、前者はパスワード入力後に失敗となり、後者はユーザ名を入れた瞬間に失敗となる。

いずれにしろ/etc/vsftpd/ftpusersがブラックリストとして動作するので、userlist_fileはホワイトリストとして使うことにする。

なお、anonymousユーザ(anonymous, ftp)もこのリストの対象になるようだ。



PAM設定(CentOSでの内容)

# grep pam_service ./vsftpd.conf
pam_service_name=vsftpd
# cat  /etc/pam.d/vsftpd
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny
file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
session    required     pam_loginuid.so