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