Linux で自宅サーバ [ Home Server Techncial ]

>>トップページに戻る

 FTP サーバ(ProFTPD)

まず、FTPとは、File Transfer Plotocol の略で、ネットワーク間でデータをやりとりする時に使用するプロトコルです。
実際の操作は、FTP クライアントソフトを用いて操作をします。
FTP クライアントソフトは web サーバで言うところのブラウザに相当します(ブラウザ上からも操作できますが)。
この FTP クライアントソフトを用い、外部端末からサーバ機へのファイルのアップロード(送信)やダウンロード(受信)を行います。

ProFTPD とは、Vine Linux で採用されている FTP サーバです。
設定方法は、web サーバである Apache と似た設定ファイル( httpd.conf )の書き方と似ています。

配布元は The ProFTPD Project です。
ここのドキュメントを日本語化しているサイトがあります。
http://www.infoscience.co.jp/technical/proftpd/index.html です。
大変参考になりました。ダウンロードもこのサイト上から可能です。

なお、Vine Linux には標準で ProFTPD がインストールされている為、インストール方法の説明は割愛させていただきます
ご了承下さい。

ページ内コンテンツ一覧

▲ページの最上部に戻る

 ユーザの追加

ProFTPD は、Vine をインストールしただけでも一応、動作はする様になっています。
しかし、初期設定のままでは「誰も使えない」状況になっているので、ProFTP を使用できるユーザを追加します。

ユーザの追加について、ユーザの乱造はセキュリティ上好ましくまりません。
パスワードの管理が難しくなってくるからです。必要なユーザを必要なだけ追加する様にしましょう。

ユーザを追加します。が、前提条件をここで決めておきます。

上記、「管理者グループ」というのは、root 権限を与えるのではなく、
ただどのディレクトリ・ファイルも見に行けるというだけです。
管理者グループと言えど、他のユーザのファイルを勝手に消去したり、書き換えたりは
するのはマズいので、書き込み不可にします。

Anonymouse FTP というのはメールアドレスだけでだれでもログイン可能な FTP サーバです。
私は「誰でも」が怖いので絶対に使わないです。

上記を踏まえて以下を前提とします。

ユーザの追加には Webmin を利用します。
Webmin の設定方法は当サイト内 Webmin について をご覧下さい。

ブラウザを起動し、Webmin にログインしたら、
上部のメニュー群より、「システム」をクリックします。
次に「ユーザおよびグループ」をクリックします。

[ 図F-001 「システム」>「ユーザおよびグループ」をクリック ]

図F-001 「システム」>「ユーザおよびグループ」をクリック

「ユーザおよびグループ」メニューが表示されたら、「ローカルユーザ」という表組と「ローカルグループ」という表組があります。
まず、グループを作成するので、「ローカルグループ」の表組のすぐ外にある「新しいグループを作成」をクリックします。

[ 図F-002 「ローカルグループ」の「新しいグループを作成」をクリック ]

図F-002 「ローカルグループ」の「新しいグループを作成」をクリック

「グループの作成」メニューが表示されるので、「グループ名」に「 admin 」と記入し、「作成」ボタンをクリックします。

[ 図F-003 グループの追加 ]

図F-003 グループの追加

ローカルグループ」の表組の中に「admin」が追加されている事を確認して下さい。
「guests」グループも同様に作成します。

そして、本題であるユーザを作成します。

先ほどの「ユーザおよびグループ」メニューで「ローカルユーザ」の表組のすぐ外にある「新しいユーザを作成」をクリックします。

[ 図F-004 「ローカルユーザ」の「新しいユーザを作成」をクリック ]

図F-004 「ローカルユーザ」の「新しいユーザを作成」をクリック

「ユーザの作成」メニューの中にある「ユーザの詳細」表組中で以下の用に記入します。

を入力します。
そして「所属するグループ」表組中の「プライマリグループ」で、
既存のグループ」にチェックを入れ、「admin」とグループ名を入力します。

[ 図F-005 必要事項を記入後「作成」をクリック ]

図F-005 必要事項を記入後「作成」をクリック

上記全て記入が終えたらページ最下部の「作成」をクリックします。
ローカルユーザ」表組中に作成したユーザが追加されている事を確認します。

グループ名:guests 、ユーザ名:user も同様に追加します。

これでユーザの追加作業は終了です。
次は ProFTPD の設定を行います。

▲ページの最上部に戻る

 ホストアドレスの追加

2002/12/26 追記

次に、サーバ機のホスト名の固定を行います。
現段階で ProFTPD を起動さそうとしても、「 Host名に対応する IP アドレスがないよ!
と怒られてしまします。
そこで、サーバ機に任意のホスト名を付け、そのIPアドレスを指定しなければなりません。

この項目は、サーバ機のローカルIPアドレスの固定が 192.168.0.2 になっているものとして説明して行きます。
サーバ機のIPアドレスの固定方法は、当サイト内の「 サーバ機のIPアドレスを固定 」で行っていますのでご一読下さい。

では早速、設定に入っていきます。

Webmin にログインして上部メニューより「ネットワーク」をクリックします。
次に「ネットワーク設定」をクリックし、「ネットワーク設定」の画面を表示させます。

DNS クライアント 」ボタンをクリックします。

[ 図F-011 「ネットワーク」>「ネットワーク設定」>「 DNS クライアント 」をクリック ]

図F-011 「ネットワーク」>「ネットワーク設定」>「 DNS クライアント 」をクリック

「 DNS クライアント 」をクリックすると、設定画面が表示されるので、「 ホスト名 」の欄に任意のホスト名を入力します。

例ではホスト名に、我が家のアイドル犬の名前である「 milo 」としておきます。
入力し終わったらページ下部の「保存」をクリックします。

[ 図F-012 任意のホスト名を入力します ]

図F-012 任意のホスト名を入力します

「保存」をクリックすると、先ほどの「ネットワーク設定」画面に戻ってくるので、次は「ホストアドレス」をクリックします。

[ 図F-013 「ホストアドレス」をクリックします ]

図F-013 「ホストアドレス」をクリックします

「ホストアドレス」画面が表示されページ中央に一つの表組が表示されます。
この表組のすぐ上の「新規のホスト アドレスを追加」をクリックします。

[ 図F-014 「ホスト アドレス」>「新規のホスト アドレスを追加」をクリックします ]

図F-014 「ホスト アドレス」>「新規のホスト アドレスを追加」をクリックします

ホスト アドレスの作成」画面が表示されますので、以下の様に入力します。

入力し終わったら、ページ下部の「作成」をクリックします。

[ 図F-015 「IP アドレス」と「ホスト名」を入力 ]

図F-015 「IP アドレス」と「ホスト名」を入力

先ほどの「ホスト アドレス」表組内に作成した IP アドレスとホスト名が追加されている事を確認します。

[ 図F-016 「ホスト アドレス」表組内への追加を確認します ]

図F-016 「ホスト アドレス」表組内への追加を確認します

以上でホストアドレスの追加は終了です。

設定を確実に反映させる為に一度サーバ機の再起動が必要です!
Webmin からログアウトし、サーバ機の再起動を行って下さい。

以下の作業は、再起動後の作業です!

▲ページの最上部に戻る

 ProFTPD の設定

ProFTPD の 起動はクリック一発で可能です。
Webmin の上部メニュー群で「サーバ」をクリックし、「 ProFTP Server 」をクリックします。

[ 図F-006 ProFTPD の起動準備 ]

図F-006 ProFTPD の起動準備

「 ProFTPD Server 」メニュー最下部の「 Start Server 」をクリックしたら ProFTPD は起動します。

さていよいよ設定に入って行きます。
この設定は毎度の事ながら Webmin の中途半端な日本語化がうっとおしいので、直接設定ファイルを編集します
この設定ファイルは Webmin 上から編集が可能です

先ほどの「 ProFTPD Server 」メニューの「 Global Configuration 」中にある「 Edit Config Files 」をクリックします。
設定ファイルが表示されるので、それを設定します。設定後は「保存」ボタンをクリックして ProFTPD の再起動をかければ設定が反映します。

[ 図F-007 ProFTPD 設定ファイルの編集準備 ]

図F-007 ProFTPD 設定ファイルの編集準備

[ 図F-008 ProFTPD 設定ファイルの編集 ]

図F-007 ProFTPD 設定ファイルの編集

それでは設定します。
proftpd.conf の設定です。

下記の設定中のコメント行に日本語を記述していますが、実際の設定時には日本語は使用しない方が吉です。

2003/07/14 全面的に書き直し VirtualHost の記述は不要でした。 # ここの ServerName は任意のもので結構です。接続した時に表示されます。 ServerName "FTP Server" # standalone でシステムに常駐が可能です。 ServerType standalone # デフォルトサーバを有効にします。 DefaultServer on # 接続された時に表示されるバナーメッセージを記述します。 # この項目はあっても無くても良いのですが、 # 無いと ProFTPD を使っている事とバージョンが相手に知られます。 ServerIdent on "FTP server ready." # 名前解決の部分で接続が遅くなる事があります。 # この二つの項目を off にする事で高速に接続可能になります。 UseReverseDNS off IdentLookups off # admin グループに属するユーザ意外は、 # 自分のホームディレクトリより上位層には行けなくしています。 DefaultRoot ~ !admin # ProFTPD が動作するポート番号 Port 21 Umask 022 TimesGMT FALSE # 子プロセスの最大値を設定します。 MaxInstances 30 # ユーザが認証されるまでの間、ProFTPD はこのユーザ権限で走っています User nobody Group nobody # 上書きを許可しています。 <Directory /*> AllowOverwrite on </Directory> # ここの ServerName は任意のもので結構です。接続した時に表示されます。 ServerName "ProFTPD" # standalone でシステムに常駐が可能です。 ServerType standalone # DefaultServer が on になっていると、後で設定する VirtualHost に該当しないユーザへの # 設定になります。当サイト設定では既知のユーザにしかアクセスを許可しないので、off にします。 DefaultServer off # この DefaultServer を on にしないと、後述の VirtualHost の設定が適用されません。- 2003/02/13 修正 DefaultServer on # Port 21 is the standard FTP port. # デフォルトで使用するポート番号です。 Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # Use localtime TimesGMT FALSE # 子プロセスの最大値を設定します。 MaxInstances 30 # ユーザが認証されるまでの間、ProFTPD はこのユーザ権限で走っています User nobody Group nobody # ここからが大切。 # <VirtualHost "サーバ機のローカルIPアドレス"> を指定します。 # ここがドメイン名でも構いませんが外部からのドメイン名宛てのパケットは全て、 # ルータを経由し LAN 内では「192.168.0.2」として扱われます。 <VirtualHost 192.168.0.2> # アクセスしたユーザにはこの名前が表示されます。 ServerName "guestFTPD" # DefaultRoot ~ とする事で、全てのユーザはホームディレクトリしか参照できません。 # そのオプションで !admin とする事で、 # admin グループ以外のグループはホームディレクトリしか見に行けないとなります。 DefaultRoot ~ !admin # ここで上書きを許可しています。 AllowOverwrite on </VirtualHost>

デフォルトでは <Anonymous> の記述がありますが、全て「#」でコメントアウトする事によって、
Anonymous としては動作しなくなります。

以上で proftpd.conf の設定は終了です。

保存」ボタンをクリックして、
ProFTPD Server 」メニュー最下部の「 Apply Changes 」をクリックし、設定を反映させます。

これで先述した前提条件が実現されます。

▲ページの最上部に戻る

 接続テスト

接続テストを行います。
これは内部(LAN内)、外部からのアクセスが可能かどうかをチェックすると同時に
設定したアクセス制御が正常に反映されているかをチェックします。
大まかなチェック方法を以下に示します。


FTP サーバを外部ネットワークから接続可能にする方
FTP サーバを外部ネットワークから接続可能にする方は、ルータの設定が必要になります。
ルータの 20 - 21 番ポート向けのパケットをサーバ機のローカルIPアドレスである、192.168.0.2 に変換しなければなりません。

私が使用しているルータ( MELCO BUFFALO Broad Station BLR-TX4 )での設定画面は、ルータの設定(Webサーバ用)で解説しています。
「FTP(TCPポート:20-21)」のプロトコルを追加するだけです。
Web サーバで設定した「HTTP(TCPポート:80)」が「FTP(TCPポート:20-21)」になるだけですネ。


それでは、FTP クライアントソフトを利用して Windows クライアントから接続テストをしてみましょう。

FTP クライアントソフトには、高機能なフリーソフトである FFFTP を利用します。

FFFTP はhttp://www2.biglobe.ne.jp/~sota/ffftp.html(FFFTP の作者 曽田 純 さんのサイトです。)

FFFTP をインストール後、起動させて「接続(F)」>「接続(C)...」をクリックすると「ホスト一覧」画面が表示されるので、
新規ホスト」をクリックします。
次に表示される「ホスト設定」で接続への設定を記入していくワケですが、
LAN 内テストと外部ネットワークからのテストが必要になりますから、2つ分けて説明します。

同一 LAN 内の場合

以下の様に記入します。

[ 図F-009 FFFTP を用いた接続テスト(同一 LAN 内から) ]

図F-009 FFFTP を用いた接続テスト(同一 LAN 内から)

外部ネットワークの場合

以下の様に記入します。

[ 図F-010 FFFTP を用いた接続テスト(外部ネットワークから) ]

図F-009 FFFTP を用いた接続テスト(外部ネットワークから)

記入が終われば「OK」をクリックし、接続をしてみましょう。
接続できましたか?

2004/08/07 FFFTP の設定に関して以下を追記
ここで、接続できない方は以下の点を修正して下さい。

接続できない方は ProFTPD のバージョンをご確認下さい。
バージョンが、「 ProFTPD1.2.10rc1 」以降であるならば次の方法が有効です。
その理由は、「 NLST 」というオプション指定が未サポートになり、「 LIST 」コマンドでファイル一覧を取得する様にすれば問題ないとのことです。

それでは、実際の設定です。

FFFTP を起動後、対象となるホストを選択し、「設定変更(M)...」をクリックします。
次に表示される「ホストの設定」で次の箇所を変更します。

[ 図F-017 バージョンが ProFTPD1.2.10rc1 以降の場合は上図を設定します ]

図F-017 バージョンが ProFTPD1.2.10rc1 以降の場合は上図を設定します

設定を終えたら「 OK 」をクリックし、設定を反映させましょう。

2004/08/07 追記内容に関して

今回追加した FFFTP の設定内容の変更に関しては、元々のネタは当サイトの BBS で話題に挙がったものです。
同じく当サイトのゲストブックでひろちゃんさんに更新して頂きたいとのご要望を請け追加いたしました。
ひろちゃんさんには心より感謝いたします。

そして、BBS でのレスを付けていただいた ken さん、スレッド作成者の HARU さん、ありがとうございます。
特に ken さんは的確な対処法を公開して頂き、まことにありがとうございました。

当サイトBBS 過去ログの該当記事:No.2281 FFFTPで接続できない
ken さんのサイト「 虚無 」の該当記事:ProFTPD Version 1.2.10rc1 Default Install Guide?

2004/08/07 追記 ここまで

ここで、チェック項目として大まかに以下の項目があります。

特に、guests グループの上位層ディレクトリへの移動不可かどうかは必ずチェックしなければなりません。
admin グループ、 guests グループともにファイルの上書きを許可していますので、guests はホームディレクトリ以上の上位層ディレクトリに移動できるとマズイですよね・・・。

FTP サーバの立ち上げに関しての注意点
FTP サーバに限った事ではありませんが、外部向けのサービスを開始する場合、
「外部からの操作が可能になる」という事を忘れてはいけません。

設定ミスなどは、クラッキングなどの不正アクセスに直結しているので、接続テストは十二分に行う必要があります。

▲ページの最上部に戻る

 .htaccessをアクセス不可にする

この項目は、当サイト内の ユーザを /~username で分ける を設定している事が前提になります。

この項目の前提条件を示します。

「 /home/user/public_html/cgi-bin 」というのは、ホームディレクトリ( /home/user )内に「 public_html 」ディレクトリがあり、その中に「 cgi-bin 」ディレクトリがあると言う事を示しています。
/~user/index.html 」で表示される物理的なパスは「 /home/user/public_html/index.html 」になると言う事です。

以上の様な条件になりますので、グループ名が「 guests 」でユーザ名が「 user 」、ホームディレクトリが「 /home/user 」のUNIX ユーザが既に存在するものとします。
Webmin を使用したユーザの追加は、このページの最上部、「 ユーザの追加 」で行っています。
ユーザ名やグループ名などは適宜読み替えて下さい。

さらにこの項目は、「 ユーザの追加 」でも示している前提条件を元にします。
ユーザの追加 」でも示している前提条件は以下の通りです。

ここに「 .htaccess 」ファイルに関する条件を追加します。

ちょっと分かりにくい条件ですが、やろうとしている事はご理解頂けますネ!?

では、早速 ProFTPD の設定ファイルを Webmin 上で直接編集していきます。
編集方法は、このページの「 ProFTPD の設定 」で行っています。

まずは、完成した設定ファイルを見て下さい。
以下は、「 ProFTPD の設定 」で行った VirtualHost の部分に変更を加えます。
ですので、以下の設定を試される方は先に「 ProFTPD の設定 」を読んでおいて下さい。

下記の設定中のコメント行に日本語を記述していますが、実際の設定時には日本語は使用しない方が吉です。

2003/07/14 全面的に書き直し VirtualHost の記述は不要でした。 # サーバのローカルIPアドレスを指定します。 <VirtualHost 192.168.0.2> # アクセス時に表示されるサーバ名です。何でもいいです。 ServerName "guestFTPD" # 「 admin 」グループ以外はホームディレクトリより上位層は見に行けない DefaultRoot ~ !admin # ここでファイルの上書きを許可しています。 AllowOverwrite on # どこのディレクトリであっても「 .htaccess 」という名前のファイル # に関する設定を以下で行います。 <Directory /*/.htaccess> # "DIRS" は、「 ディレクトリ表示を処理する全ての FTP コマンド 」を意味しています。 <Limit DIRS> # 「 admin 」グループだけに "DIRS" が適応されます。 DenyGroup !admin </Limit> # "READ" は読み出し、"WRITE" は書き込みを意味しています。 <Limit READ WRITE> # 「 admin 」ユーザに "READ" と "WRITE" を許可しています。 AllowGroup admin # 全てのユーザ・グループに "READ" と "WRITE" を禁止しています。 # 上の AllowGroup admin と合わせると、 # 「 admin 」グループのみが "READ" と "WRITE" を許可される事になります。 DenyAll # この一文が無ければ、「表示されていなくても FTP コマンドによる操作が可能」になってしまいます。 # 完全に隠すアクセス不可にする)為に IgnoreHidden を on にします。 IgnoreHidden on </Limit> </Directory> </VirtualHost>

ちょっとややこしい設定方法になりましたが、これでユーザが「 .htaccess 」ファイルの設置・変更などのアクセスが一切不可能になりました

次に各ユーザ毎のディレクトリ・ファイルの所有権ですが、例を以下に示します。

名前 所有者ユーザ名 所有者グループ名 タイプ
ユーザのホームディレクトリ( /home/user ) root root ディレクトリ
public_html user guests ディレクトリ
cgi-bin user guests ディレクトリ
.htaccess hoge( もしくは root ) admin( もしくは root ) ファイル

「 .htaccess 」の所有者を root にすると、FTP クライアントソフトからの操作が不可能になります。
ProFTPD のデフォルトでは root 権限のログインを認めていません。

これで、/~username で区切られたユーザが外部から FTP クライアントソフトを使用して、ファイルのアップロードが可能になりました。
もちろん、ユーザは、「 .htaccess 」ファイルの存在は知り得ません。
これらの設定はあくまで「例」です。設定は自己責任でお願いします。
十分な接続テストを行って下さい。

▲ページの最上部に戻る

Copyright© Home Server Technical. All Right Reserved.
webmaster@miloweb.net