仕事で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