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ログインができない。

 

chrootFTPログイン時にユーザー自身のディレクトリのみを見せる)を有効にする。

#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

 

vim /etc/sysconfig/selinux

#SELINUX=enforcing

SELINUX=disabled

 

サーバー再起動を実行

shutdown -r now

 

再度FTP接続が行い、接続可能になった事を確認。