FTPサーバー。めったに使わないけどたまに使う。SMTPサーバー同様、セットアップは大抵1年に数回しかしないからどの製品を使ってるのかよく忘れる。
CentOSにVsftpdをインストールする
1. yumでインストールします。
#yum install vsftpd
2. 設定ファイルを変更します。
#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO # 匿名ログインを禁止します
listen=NO # xinetdで起動する場合には"NO"に変更します。スタンドアロンで動作させる場合にはYESのままにします。
3. ファイヤーウォール(iptables)を設定します。
#vi /etc/sysconfig/iptables
パッシブモード用の設定です。RELATEDというのが重要です。
設定されていない場合には設定してください。
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
こういった形のエントリが1行増えます。もちろん21というのは
アクセスに必要なポート番号です。ルール名は必要に応じて変更してください。
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
編集が終わったらiptablesを再起動して設定を反映してあげます。
#service iptables restart
OSにip_conntrack_ftpモジュールを組み込みます。このモジュールでOSが接続を追跡できるようになり、パッシブモードで動作するよう動的にポートを開いてくれます。
先ほどのiptablesに設定したRELATEDという設定と関連しています。
#vi /etc/sysconfig/iptables-config
IPTABLES_MODULESというエントリに "ip_conntrack_ftp" を設定します。
NATの背後にある場合には、"ip_nat_ftp"も設定します。
複数設定する場合にはスペースで区切ります。
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"
iptables-config ファイルで設定しても現在動作中のOSには反映されないため、
動的にモジュールを読み込んであげるようにします。
#modprobe ip_conntrack_ftp
※このコマンドは何も出力しません。もしエラーが発生した場合にはメッセージが表示されます。
4. xinetdで起動するよう、設定ファイルを配置します。
(この項目はxinetdでvsftpdを起動する場合にのみ行います。)
#cp -p /usr/share/doc/vsftpd-2.0.5/vsftpd.xinetd /etc/xinetd.d/vsftpd
デフォルトで disable=yes となっており無効化されているので、 disable=noに変更して動作するようにしてあげます。
#vim /etc/xinetd.d/vsftpd
disable = no
設定ファイルを反映させるためにxinetdを再起動します。
service xinetd restart
終わり
以上でした。社内LAN内でたまに動作させるだけの目的のため、特に設定変更せずデフォルトで使っています。
匿名アクセス(anonymous)はたまにドツボにはまる以外に特に役にたった経験が無いため無効にしてあります。
OSの操作に慣れていると何も見なくても上記の設定はできるようになります。が、デフォルトの設定で不都合がある場合が多いと思うのでマニュアルは読んでおいたほうが良いと思います。
ところで最近の公開サーバーではセキュリティのためFTPではなく、FTPSがよく使われています。多くのFTPサーバーはFTPSで動作させることができ、設定もそんなに難しくないので、FTPアクセスは無効にし、FTPSでのアクセスに制限しても良いと思います。