CentOSにvsftpdをインストールしてFTPサーバー構築する手順です。
1.vsftpdインストール
# yum install vsftpd
2.設定ファイル編集
# vi /etc/vsftpd/vsftpd.conf
今回は以下の内容で設定します。
○タイムスタンプ時間を日本時間に設定
use_localtime=YES
○デフォルトでホームディレクトリより上層へのアクセスを禁止
chroot_local_user=YES
○ホームディレクトリより上層へのアクセスを許可するユーザリストの有効化
chroot_list_enable=YES
○ホームディレクトリより上層へのアクセスを許可するユーザリストの指定
chroot_list_file=/etc/vsftpd/chroot_list
○ドットから始まるファイルの表示設定
force_dot_files=YES
○ディレクトリごと削除できるように設定
ls_recurse_enable=YES
○パッシブモードの利用設定(データ転送用Port設定)
pasv_enable=YES
pasv_min_port=4096
pasv_max_port=4127
○anonymous(匿名)接続を禁止
anonymous_enable=NO
anon_upload_enable=NO
○ログ設定
xferlog_enable = YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
○FTPディレクトリ名を指定
local_root=ftp
3.ユーザリストファイルの作成
対象ユーザがいない場合でもchroot_listファイルを空の状態で作成します。
# touch /etc/vsftpd/chroot_list
4.FTP用アカウント作成
ユーザ作成
# useradd ftpuser
# passwd ftpuser
# New UNIX password: パスワード入力
# Retype new UNIX password: パスワード入力
FTP用ディレクトリ作成
# mkdir /home/ftpuser/ftp
chown ftpuser:ftpuser /home/ftpuser/ftp
chmod 700 /home/ftpuser/ftp
5.iptables設定
FTPはコマンド転送とデータ転送が別々のコネクションで行われます。
サーバ接続時のポートが別々になるという事です。
iptablesでFTPコマンド用、データ転送用Portの許可設定をします。
# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 4096:4127 -j ACCEPT
6.サービスの開始・起動設定
# /etc/rc.d/init.d/vsftpd start
chkconfig vsftpd on
設定作業は以上です。
FFFTPなどでパッシブモード接続して、動作確認を行って完了です。
※ip_conntrack_ftpのロード
ip_conntrack_ftpはデータコネクションやパッシブモードの対応を自動で行ってくれるようです。
iptablesでip_conntrack_ftpモジュールがロードされるようにします。
IPマスカレードをしている場合は、ip_nat_ftp モジュールもロードします。
まずはip_conntrack_ftpとip_nat_ftpモジュールがロードされているか確認します。
以下のようにモジュールが表示されていれば問題ありません。
# lsmod |grep ftp
-------------------------------------------------------
ip_nat_ftp 36545 0
ip_conntrack_ftp 41361 1 ip_nat_ftp
-------------------------------------------------------
モジュールが読み込まれていない場合は、iptales起動時に読み込まれるようiptables-configに設定します。
# vi /etc/sysconfig/iptables-config
IPTABLES_MODULES 設定を以下の内容に変更します。
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_ftp"
iptablesを再起動します。
# /etc/rc.d/init.d/iptables restart
モジュールが読み込まれているか確認します。
# lsmod |grep ftp
-------------------------------------------------------
ip_nat_ftp 36545 0
ip_conntrack_ftp 41361 1 ip_nat_ftp
-------------------------------------------------------
ip_conntrack_ftpとip_nat_ftpが表示されていたら設定完了です。
後は実際にFTP接続してファイルリストの取得が可能か確認します。