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サービスデーモンとなりました。
2.1 インストール
2003年7月現在の最新版は"vsftpd-1.1.0-1.i386.rpm"です。 環境によっては既にインストール済の場合もあるので、whichコマンド等で確認してください。

次のrpmコマンドで、パッケージをインストールしてください。

    % rpm -ihv vsftpd-1.1.0-1.i386.rpm

2.2 vsftpdの初期設定、起動
vsftpdはrpmパッケージをインストールしただけでは稼働させることができません。 次に示す初期設定を行った上で起動してください。
  1. サービス登録
    RedHatのvsftpdはデーモンプロセスとして稼働します。 よってサーバマシンの起動時に自動起動するためには chkconfigコマンドでサービス登録をしなければなりません。
      % chkconfig vsftpd on

    以降、サーバ起動時、vsftpdは自動起動します。
  2. 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

  3. /etc/hosts.allowの編集
    外部からvsftpdによるFTPサービスを受けるために、 /etc/hosts.allowファイルでサーバマシンへのアクセス許可を与えます。

    ここでは、例として全てのアクセスを許可する設定を示します。 /etc/hosts.allowファイルに、次の行を追加してください。

    	vsftpd : ALL : Allow
    

    /etc/hosts.allow の例


  4. 起動
    次のコマンドでvsftpdを起動します。
      % /etc/rc.d/init.d/vsftpd start


2.3 アクセス制御

    2.3.1 ユーザ毎のアクセス制御

    vsftpdのユーザ毎のアクセス制御は/etc/vsftpd.user_listファイル、 および/etc/vsftpd.ftpuserファイルで行います。
    /etc/vsftpd.user_listファイルによるアクセス制御はvsftpdデーモン自身が、 /etc/vsftpd.ftpusersファイルによるアクセス制御はPAM機構が行います。 つまり、FTPサービスに関するユーザのアクセス制御は二重に行われるということです。
    1. /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ファイルに書かれたユーザのアクセスを許可します。

    2. /etc/vsftpd.ftpusers
      /etc/vsftpd.ftpusersファイルにはアクセスを禁止するユーザを列挙します。

    3. 運用のヒント
      サーバの一般ユーザ全員に対して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(匿名)ユーザによるデータの読み書きのための設定を解説します。

    1. /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

    2. 書き込み用ディレクトリの設定
      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