How to build Internet Server with Linux
last update: 29 Sep 2004
home
|index
|previous
|next
|contents
vsftpdのインストールと運用
RedHat7.3からFTPサービスデーモンとして(wu-ftpdとともに)"vsftpd"が配布されるようになり、
RedHat 9ではvsftpdが標準のFTPサービスデーモンとなりました。
2003年7月現在の最新版は"vsftpd-1.1.0-1.i386.rpm"です。
環境によっては既にインストール済の場合もあるので、whichコマンド等で確認してください。
次のrpmコマンドで、パッケージをインストールしてください。
% rpm -ihv vsftpd-1.1.0-1.i386.rpm
vsftpdはrpmパッケージをインストールしただけでは稼働させることができません。
次に示す初期設定を行った上で起動してください。
- サービス登録
RedHatのvsftpdはデーモンプロセスとして稼働します。
よってサーバマシンの起動時に自動起動するためには
chkconfigコマンドでサービス登録をしなければなりません。
% chkconfig vsftpd on
以降、サーバ起動時、vsftpdは自動起動します。
- iptablesの設定
次に外部からのアクセスを許可するため、iptablesの設定を行います。
ここで注意しなければならないことは、
FTPプロトコルは2つのTCP/IPポート(21番ポート、他の任意のポート)が使われることです。
よって1024番ポート以降にアクセス可能とするようにiptablesを設定しなければなりません。
RedHatのGUIツール"setup"を使ってiptablesの設定を行う場合、
"Firewall configuration"を起動し、セキュリティレベルは"Medium"を選択します。
次に"Customize"で"FTPサービス"が使用できるように選択します。
設定を終えたら、iptablesに設定を反映させます。
% /etc/rc.d/init.d/iptables restart
- /etc/hosts.allowの編集
外部からvsftpdによるFTPサービスを受けるために、
/etc/hosts.allowファイルでサーバマシンへのアクセス許可を与えます。
ここでは、例として全てのアクセスを許可する設定を示します。
/etc/hosts.allowファイルに、次の行を追加してください。
/etc/hosts.allow の例
- 起動
次のコマンドでvsftpdを起動します。
% /etc/rc.d/init.d/vsftpd start
2.3.1 ユーザ毎のアクセス制御
vsftpdのユーザ毎のアクセス制御は/etc/vsftpd.user_listファイル、
および/etc/vsftpd.ftpuserファイルで行います。
/etc/vsftpd.user_listファイルによるアクセス制御はvsftpdデーモン自身が、
/etc/vsftpd.ftpusersファイルによるアクセス制御はPAM機構が行います。
つまり、FTPサービスに関するユーザのアクセス制御は二重に行われるということです。
- /etc/vsftpd.use_list
注意しなければならないのは、
/etc/vsftpd/vsftpd.confファイルの userlist_deny の値によって、
/etc/vsftpd.use_listファイルの意味がまったく逆になってしまうことです。
userlist_deny に YES を設定すると、
/etc/vsftpd.user_listファイルに書かれたユーザのアクセスを禁止します。
これはデフォルトの設定です。
userlist_deny に NO を設定すると、
/etc/vsftpd.user_listファイルに書かれたユーザのアクセスを許可します。
- /etc/vsftpd.ftpusers
/etc/vsftpd.ftpusersファイルにはアクセスを禁止するユーザを列挙します。
- 運用のヒント
サーバの一般ユーザ全員に対してFTPサービスを提供するのであれば、
userlist_deny に YES に設定すると便利です。
なぜなら一般ユーザの追加や削除のたびに/etc/vsftpd.user_listを編集する必要がないからです。
もしもアクセスできるユーザを明示的に指定したい場合には、
userlist_deny を NO に設定し、
/etc/vsftpd.user_listにアクセス可能なユーザ名だけを列挙します。
いずれにせよ、
userlist_denyの値が意図した設定となっているか否か確認してください。
2.3.2 一般ユーザの読み出し、書き込み制御
一般ユーザとしてファイルの読み書きを行うには、
/etc/vsftpd/vsftpd.confファイルで次の値を設定しなければなりません。
読み出し | local_enable=YES |
書き込み | local_enable=YES,write_enable=YES |
これらの値を設定後、vsftpdを再起動してください。
% /etc/rc.d/init.d/vsftpd restart
2.3.3 anonymous(匿名)ユーザのアクセス制御
anonymous(匿名)ユーザによるデータの読み書きのための設定を解説します。
- /etc/vsftpd/vsftpd.confファイルの設定
匿名ユーザにファイルの読み書きを許可するには、
/etc/vsftpd/vsftpd.confファイルで次の値を設定しなければなりません。
読み出し | anonnymous_enable=YES |
書き込み | anonymous_enable=YES,anon_upload_enable=YES,anon_mkdir_write_enable=YES(ディレクトリ作成を許可するならば) |
これらの値を設定後、vsftpdを再起動してください。
% /etc/rc.d/init.d/vsftpd restart
- 書き込み用ディレクトリの設定
anonymous(匿名)ユーザがファイルの書き込みを行うディレクトリのパーミッションは、
一般ユーザが書き込み可能である必要があります。
一方、vsftpdはanonymousユーザのルートディレクトリ(デフォルトでは/var/ftp)への
書き込みを禁止しており、
書き込み可能な場合には接続できません。
# ftp ftp.server.net
Connected to ftp.server.net (192.168.1.101)
220 (vsFTPd 1.1.3)
Name (ftp.server.net:ftp_user): anonymous
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.
|
よって、
anonymousユーザが書き込み可能なサブディレクトリを作成する必要があります。
例えば、
RedHatが準備しているディレクトリ/var/ftp/pubを書き込みに使うには、
次のようにしてパーミッションを変更してください。
% chmod 777 /var/ftp/pub
:注意 |
なお、
anonymousユーザにデータの書き込みを許可することは、
クラッカーに絶好のチャンスを与えることになります。
運用ポリシーを十分に考慮した上で設定を行ってください。
|
home
|index
|previous
|next
|contents
since 04/Oct/2004