FTPサーバー構築
FTPサーバーの構築手順を記す。
vsftpd インストール
yum -y install vsftpd
vsftpdを起動
service vsftpd start
chkconfig vsftpd on
chkconfig --list vsftpd
iptablesの 20,21番ポートが開いているのを確認
iptables -vnL
パケットフィルタリングに関する設定を施す。
vim /etc/sysconfig/iptables-config
IPTABLES_MODULES=""
↓
IPTABLES_MODULES="ip_conntrack_ftp"
iptables を再起動
service iptables restart
FTP ログイン・ユーザーの制限
FTP接続ユーザーの設定を行う。
etc/vsftpd/ftpusers に設定したユーザーは、FTPでログインすることが不可である。
デフォルトでは、root や nobody などがFTPでログインできないように設定されている。
また、/etc/vsftpd/user_list というユーザーを設定するリストも存在する。
これはデフォルトでは、/etc/vsftpd/ftpusers と同様にブラックリストとして機能する。
しかし、/etc/vsftpd/vsftpd.conf に以下のように記述するとホワイトリストとなる。
vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES
↓
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
匿名ログインを拒否
anonymous_enable=YES
↓
anonymous_enable=NO
上記設定をすると/etc/vsftpd/user_list がホワイトリストとして機能する。
userlist_deny=NO(拒否するユーザーリストを拒否=許可するユーザーリストして使う)という設定になる。
また、/etc/vsftpd/user_listをホワイトリストとして使用しても、
/etc/vsftpd/ftpusers がブラックリストとして機能することは変わらない。
つまり、/etc/vsftpd/ftpusers に記されたユーザーはFTPログインができない。
chroot(FTPログイン時にユーザー自身のディレクトリのみを見せる)を有効にする。
#chroot_list_enable=YES
↓
chroot_local_user=YES
FTPログの保存先を指定する
#xferlog_file=/var/log/xferlog
↓
xferlog_file=/var/log/vsftpd.log
ホワイトリスト作成
vi /etc/vsftpd/user_list
username
FTPログインを許可するユーザーを設定。
vsftpdを再起動
service vsftpd restart
FTPクライアントから接続時のエラー対応
下記エラーが表示された時は、SELinuxを無効にし、サーバーを再起動する。
500 OOPS: cannot change directory:/home/username
#SELINUX=enforcing
SELINUX=disabled
サーバー再起動を実行
shutdown -r now
再度FTP接続が行い、接続可能になった事を確認。