FTPの設定


 FTPとは、コンピュータ間でファイルのやり取りを行うためのサービスです。 もちろん外部からファイルのやり取りも可能です。ホームページのデータのアップロード等によく使用されています。 ここではFTPサーバーのプログラムとして”proftpd”を使用してますので、その説明をします。

≪ 項目 ≫
1.Proftpdの設定とインストールについて
2.起動の仕方
3.再開(リジューム)の設定
4.Anonymous接続(匿名FTP)の設定
5.FTPで接続できるユーザーについて
6.Proftpd ver 1.2.10 について
7.エラーの覚書

 1.Proftpdの設定とインストールについて

 パッケージを使用する場合は、以下のコマンドでインストールします。

 rpm -ihv proftpd-1.2.8-3.i586.rpm

 ※ 2004/08/02時点で最新版です。

 Plamo Linux などの場合は、ソースから make する必要があるので proftpd のサイトよりソースをダウンロードしてきます。以下が proftpd のサイトです。

 http://www.proftpd.org/
 ※ 2013/01 今回の version は 1.3.4b を使用しました。

 ダウンロードしてきたファイルは”proftpd-1.3.4b.tar.gz”。 これを”/usr/local/src”にコピーして解凍します。

 tar zxvf proftpd-1.3.4b.tar.gz

 解凍できたら”/usr/local/src/proftpd-1.3.4b”というディレクトリィが出来ていますので、カレントをそちらに移動します。
 以下のコマンドを実行してインストールします。

 ./configure --sysconfdir=/etc --localstatedir=/var
 make
 make install

 エラーがなければ、インストール完了です。

 ”proftpd”の設定ファイルは以下の2つです。

 /etc/proftpd/proftpd.conf (ソースからコンパイルした場合は /etc/proftpd.conf にあります。)
 /etc/ftpusers
 パッケージもソースからコンパイルした場合も、設定の仕方は同一のようです。(ファイルの置き場所が違うだけで)

 ”/etc/proftpd/proftpd.conf” がFTPを動作するための設定で、”/etc/ftpusers” がFTPサーバーへログインを拒否するためのユーザー一覧表です。 インストール直後のデフォルトの設定でもFTPは十分動作します。
 以下が”/etc/proftpd/proftpd.conf”のファイルの中身です。
(コメントは外してます。)

ServerName "ProFTPD Default Installation" <<--(1)
ServerType standalone <<--(2)
DefaultServer on <<--(3)

Port 21 <<--(4)
Umask 022 <<--(5)

MaxInstances 30 <<--(6)
TimeoutStalled 300 <<--(7)

User nobody <<--(8)
Group nobody

PersistentPasswd off <<--(9)

ExtendedLog /var/log/proftpd.log <<--(10)

<Directory /*> <<--(11)
  AllowOverwrite on
</Directory>

<Anonymous ~ftp> <<--(12)
 User ftp
 Group ftp

 UserAlias anonymous ftp <<--(13)

 #RequireValidShell off <<--(14)
 MaxClients 10 "Sorry, max %m users -- try again later" <<--(15)
 DisplayLogin welcome.msg <<--(16)
 DisplayFirstChdir .message <<--(17)

 <Limit WRITE> <<--(18)
  DenyAll
 </Limit>
</Anonymous>


(1) クライアントがFTPサーバーに接続した時、表示するサーバー名の指定をします。

(2) proftpd の実行方法の指定します。standalone または inetd のどちらかを指定できます。
 standalone の場合は常にデーモンが起動させます。そのためメモリには常時駐在となりますが、接続要求を受けた場合比較的速く処理を行います。
 inetd の場合はスーパーサーバーである xinetd がFTPを管理するようになります。つまり接続要求を受けて、FTPが起動される事になります。 そのため処理速度は遅くなりますがメモリに常時駐在せず、何らかの理由でデーモンが停止した場合でも、再接続すればデーモンが再起動されることになります。
匿名FTP(Anonymous)を使用して頻繁にアクセスされるような状況でないなら、 xinetd で起動する方が良いでしょう。( xinetd の設定が必要です。)

(3) VirtualHostを使用する際に使われる項目です。on の場合、宛先不明の接続をデフォルトで受け取ります。FTPサーバーが1つしかない場合は on off どちらを指定しても動作は変わりません。

(4) 接続用のポートを指定します。 ServerType が xinetd の場合は効果がありません。

(5) ファイルをアップロードした時の属性を指定します。666 に対してのマスクなので実際には 666 - 022 = 644 がファイルをアップした時の属性となります。

(6) 同時に接続できる最大数を指定します。

(7) 転送待ち時間(転送が停止してからタイムアウトするまで)の指定です。秒単位で指定します。0 を指定した場合は無限に待ちます。

(8) 標準の状態で proftpd の利用するユーザーIDとグループIDを指定します。

(9) パスワード情報を管理の指定をします。on した場合、パスワード情報を保持し chroot した後でも一回取得したパスワード情報を継続的に使用します。  off した場合は必要に応じて /etc/passwd から取得します。(Turbo Linuxは /etc/passwd からパスワード情報を取得できるので off ままでOKです。)

(10) ログファイルの指定をします。

(11) ディレクトリィブロック <Directory ファイルパス> とする事でファイルパスで指定したディレクトリィ以下に細かいせっていができます。
AllowOverwrite はアップデートする時、同じファイルがあった場合に上書きするかどうかを指定します。

(12) Anonymousブロック 匿名FTPでログインできる設定をします。

(13) FTPサーバーへの匿名ログインは Anonymous というユーザーを使用するのが一般ですが、サーバー内部に通常は Anonymous というユーザーは存在しません。 その為、存在するユーザーにマッピングしておく必要があります。Turbo Linuxでは anonymous ftp となっています。

(14) ログイン認証を行うとき、ログインシェルが有効かどうかチェックします。 Turbo Linuxの場合はそのままでは匿名ログインができません。 匿名ログインを許可する場合は off に設定する必要があります。

(15) 匿名ログインの最大接続数の指定します。

(16) ログイン直後のメッセージを指定します。

(17) ディレクトリィ移動直後のメッセージを指定します。

(18) リミットブロック クライアントからサーバーへのアクセスを制限します。
<Limit command> で指定した command に対して制限します。ここではWRITEコマンドを全て禁止する事になっています。


以上が /etc/proftpd/proftpd.conf の説明です。
匿名ログインを使用しないのであれば、インストール直後の標準の設定でも問題ありません。


 2.起動の仕方

 inetd、xinetd を使用しているなら、proftpd を起動する前に、サーバーへのアクセス権限を設定しなおします。
/etc/hosts.allow が以下の様に編集してください。

   〜 省略 〜
in.proftpd : << FTPのアクセスを許可するIPアドレス>>
   〜 省略 〜


 ServerType が inetd の場合は xinetd の設定も必要です。

 ルーター等に使用しているファイアーウォールの設定も必要です。ポート番号 20、21 をサーバーとクライアントに対して開放します。 外部に公開するのであればGATEWAYのサーバーも開放する必要があります。

 次にログイン用のユーザーをFTPサーバーに作成します。LinuxのユーザーがそのままFTPのユーザーとして使う事ができます。(権限も同じです。) インストール直後の標準の設定では root ではログインできません。 useradd コマンドでユーザーを作成する必要があります。(パスワード設定も忘れないでください。)

 proftpd を起動します。起動コマンドは以下の通りです。

  /etc/rc.d/init.d/proftpd start  <<-- パッケージ

  /usr/local/src/proftpd-1.3.4b/proftpd &  <<-- ソースから

 動作確認は FFFTP みたいなアプリケーションを使用してください。

 3.再開(リジューム)の設定

 アップロードの途中で何らかの理由で接続切れてしまった場合、再度アップロードする時に最初からやり直すのではなく、接続が切れた箇所からアップロードを再開するという設定の仕方です。 特に容量の大きいデータをアップロードする時などに便利です。
 設定方法は”/etc/proftpd/proftpd.conf”に以下の1行を追加してください。

 AllowStoreRestart on

 ServerTypenbsp;の下辺りに追加すれば良いと思います。
(Anonymousブロック等の、ブロック中には記述しないでください。)


 4.Anonymous接続(匿名FTP)の設定

 Anonymous接続とはパスワード無しでもそのFTPサーバーは誰でも使用できる設定の事です。もちろんウィルスファイル等をアップロードされる可能性があるのでセキュリティはしっかり設定する必要があります。 通常Anonymous接続は、アップロードできないような設定をします。(Read Onlyのみ設定にします。標準設定で既にそうなっています。)

◆ Anonymous接続を有効にするには

 インストール直後の標準の設定ではAnonymous接続は使用できません。OS側の設定に不足があるためです。

 まずは”/etc/proftpd/proftpd.conf”のファイルの <Anonymous ~ftp> ブロックの設定を見直します。

以下は <Anonymous ~ftp> ブロックの部分だけを表示しています。
<Anonymous ~ftp>
 User ftp <<--(1)
 Group ftp

 UserAlias anonymous ftp

 #RequireValidShell off <<--(2)
 MaxClients 10 "Sorry, max %m users -- try again later"
 DisplayLogin welcome.msg
 DisplayFirstChdir .message

 <Limit WRITE> <<--(3)
  DenyAll
 </Limit>
</Anonymous>


 まず(1)を確認します。これはAnonymousで接続した時はどのユーザーでログインするか指定します。通常は変更の必要はありませんが、Linuxに存在するユーザーにする必要があります。 (Turbo Linuxでは ftp は標準で存在します。)
 (2) の箇所のコメントを外します。
 (3) でアップロードできないようにセキュリティをかけているか確認します。(標準で既に設定されているので変更は必要ありません。)

 次に”/etc/passwd”の中身を確認します。このファイルはユーザーのパスワードのファイルですが、(パスワードは暗号化されています。)その中にAnonymousのユーザーが存在するか確認してください。 標準設定では ftp なので ftp の行が存在するか確認します。
Turbo Linuxでは ftp は標準で存在しますので

 ftp:x:14:50:FTP User:/var/ftpd:

となっているはずです。(無い場合は仮想ユーザーを作成すると良いです。)この下線部のところがAnonymous接続して最初に入るディレクトリィです。ディレクトリィを変更したい場合はこの箇所を変更してください。
次に ”/var/ftpd” というディレクトリが存在するかチェックします。存在しなかった場合は新規で作成する必要があります。(Turbo Linuxは標準では存在しません。)
 以上でAnonymous接続の設定は終わりです。FFFTP等で動作確認をしてください。

◆ Anonymous接続を不可にするには

 Anonymous接続を不可にしたい場合は、Anonymousブロックを全てコメント化してください。

 5.FTPで接続できるユーザーについて

 上記でも記述しましたが、FTPで接続できるユーザーを設定するには”/etc/ftpusers”というファイルで行います。 このファイルにユーザーを記述する事で、そのユーザーは FTP でログインできなくなります。 root権限でFTPに接続できないのは、初期状態でここに root が記述されているからです。 (ここで root を削除すると root でログインできるようになります。セキュリティ上好ましくありませんが。)
Linux でユーザーを追加していくと、そのユーザーは初期状態でFTPで接続できるので、必要の無いユーザーはここに記述しておいた方が良いでしょう。

 ◆ 補足

FTPに接続できるユーザーは仮想ユーザーでも構いません。FTP接続しか使用しないのであれば仮想ユーザーが好ましいです。

 useradd -s /bin/false << ユーザー名 >>

で作成しましょう。(パスワードも忘れずに)

 6.Proftpd ver 1.2.10 について

 Proftpd の version が 1.2.10 になってから、ファイル一覧取得時に使用されている”NLST”コマンドが未対応になっています。(RFC959に基づく変更だそうです。)
 この対応として”NLST”から”LIST”コマンドへと変更します。まず proftpd の設定ファイルを以下の様に変更します。
 ListOptions  "-a"


 上の1行を追加すると”LIST”コマンド用の設定で、隠しファイル(”.”から始まるファイル)を表示するようにします。

 次にクライアントの設定です。FFFTP を例に挙げると、ホスト設定の箇所で以下の設定になっているか確認します。

FFFTPの図

 ”高度”の箇所の”LISTコマンドでファイル一覧を取得”を選択してください。
 (FFFTP-1.9.2a は初期状態でなっています。)

 7.エラーの覚書
 ◆Proftpdが起動していない
  proftpd start をした時には特にエラーが出ず
  proftpd status で確認したときに、”proftpd dead but subsys locked”とメッセージが出る場合、 ”/var/log/message”に以下の様なログが出ていないか確認してください。

  error:unable to datermine IP Address of 〜〜〜〜

  これは”/etc/hosts”の

   127.0.0.1   << ホスト名 >> localhost
      :
      :

  と”/etc/sysconfig/network”の
      :
      :
   HOSTNAME=<< ホスト名 >>
      :
      :

  のホスト名が一致しないと起きますので一致させてください。

 ◆Proftpdが起動していない2
 Plamp Linux でコンパイルした時に嵌ったエラーです。
 ソースからインストールした場合は、起動確認は基本 ps コマンドで行います。(ps -aef がいいかな?) が、確認したところプロセスが無いことに気付きます。
 起動する前に netstat -ln で開いているポートを確認し、ps コマンドで起動しているプロセスを確認したところ inetd がポートを掴んでいました。 なので inetd の設定を変更してあげる必要があります。
 以下のページを参考に

 Plamo Linux インストール後の設定



先頭に戻る  TOPページに戻る