Anonymous FTPサーバを構築する (ftpd)

対象プラットフォーム: FreeBSD 7.x / FreeBSD 6.x


はじめに

このページでは、Anonymous FTPサーバの設定方法について説明します。

inetdの設定

FTPサーバのソフトウェアであるftpdはネットワーク用アプリinetdより起動される為、まず初めにinetdを起動させる必要があります。
インストールするFreeBSDのバージョンによっては、インストール直後の状態でinetdが有効になっていない場合があります。
その場合には、「/etc/rc.conf」に以下の記述を追記して、システム起動時にinetdが動作するように設定します。

「/etc/rc.conf」の設定
inetd_enable="YES"

inetdが有効になっても、inetdからftpdが起動される設定になっていないと、FTPサーバは利用できません。
inetdの設定ファイルである「/etc/inetd.conf」にてコメントアウトされている該当部分を下記のようにアンコメントしてください。

「/etc/inetd.conf」の編集(編集前)
#ftp    stream  tcp   nowait   root    /usr/libexec/ftpd              ftpd -l

「/etc/inetd.conf」の編集(編集後)
ftp    stream  tcp   nowait   root    /usr/libexec/ftpd              ftpd -l

上記の設定が完了後、下記のようにして「inetd」を再起動させるか、システムを再起動させて設定を有効にしてください。

「inetd.conf」の再起動
$ kill -HUP `cat /var/run/inetd.pid`

Anonymous FTPの設定

前項の設定により、通常のftpdが動作するようになりましたので、次にこのftpdがAnonymous(匿名)で利用できるようにします。

anonymous FTPの設定は、「sysinstall」を利用して対話形式で設定を行います。

「sysinstall」(FreeBSD 5.x / 6.x)ないしは「/stand/sysinstall」(FreeBSD 4.x)とタイプし、sysinstallメニューを呼び出します。

「Configure」→「Networking」→「Anon FTP」を選択します。

Anonymous FTPを利用することによるセキュリティ上の警告が表示されますが、構わず「YES」を選択します。

「FTP Root Directory」および「Upload Subdirectory」を環境に合わせて設定します。
それ以外の部分はデフォルトのままで問題ありません。

設定完了後、Welcomeメッセージを表示するかの確認画面が出てきますので、必要な場合は「OK」を選択します。

以上で設定は完了です。

FTPプロトコルの詳細

FTPはファイルの送受信を行うために、コントロール用のコネクションと、データ用のコネクションの2つのTCPコネクションを利用します。
これはFTPが元々、制御元、転送元、転送先が別々のサーバでも動作するよう実装されているからです。(制御元がファイルの転送元/転送先である必要はなく、制御元とは別の場所に存在する2点間でファイルの転送ができるようになっています。)

また、この2つのコネクションの張り方の向きによって、2つの転送モードが存在します。
以下では、この2つのモードについて説明します。

ACTIVEモード

一つ目のモードは、ACTIVEモードと呼ばれます。

image

サーバはFTPコントロール用コネクションのポートとして21番ポートで待ち受けます。
クライアントはこのサーバの21番ポートに接続し、データ転送の直前にPORTコマンドでクライアント側の接続先ポート(転送の度に違うポートが割り当てられるのが一般的です)を通知します。
実際にデータ転送が始まると、サーバ側はデータ用コネクションの20番ポートから、先ほど通知を受けたクライアントの接続先ポートに接続し、データの送受信を行います。

PASSIVEモード

もうひとつのほうは、PASSIVEモードと呼ばれます。

image

先ほどのACTIVEモードでは、転送の度にサーバ側からクライアント側の動的に変化するポートに対して接続が成されるため、クライアント側がファイアウォール内に存在する場合、ファイアウォールによって接続が途絶されてしまいます。
結果として、FTPサーバに対してコマンドは発行できるが、実際に転送ができない状態になります。

PASSIVEモードは、これを解決するために、クライアントがサーバの21番ポートに接続した後、データ転送の直前にPASVコマンドを発行し、サーバ側にデータコネクション用の接続先ポートを用意してもらいます。
一方サーバ側は、PASVコマンドの回答として、用意した接続先ポートを通知します。
実際にデータ通信が始まると、ACTIVEモードの時とは逆に、クライアント側から先ほどPASVコマンドの回答で通知を受けたサーバ側の接続先ポートに接続し、データの送受信を行います。

Firewallの設定

ここまで、FTPの基本的な動作について説明してきましたが、FTPがモードによってコネクションの向きを変えたりするため、FTPサーバに対してファイアウォールを適用する場合には、注意が必要になります。

FTPがACTIVEモードのみで利用される場合には、FTPサーバのOutGoingなTCPコネクションさえ許可されていれば、FTPは問題なく動作します。
しかしながら今日では、ほとんどのクライアントが、クライアントへのInComingがブロックされてしまうファイアウォール内に存在する為、PASSIVEモードが必須になります。

ファイアウォール内にあるFTPサーバに対し、PASSIVEモードでFTPを利用できるようにするには、FTPサーバがPASVコマンドの結果としてクライアントに返却する可能性のある接続先ポートを、クライアント側からアクセスできるようにファイアウォールを設定する必要があります。

FTPサーバにおいて、PASSIVEモードで利用するサーバ側の接続先ポートの帯域を指定する方法については、各FTPサーバのソフトウェアのマニュアルをご確認ください。


あなたの探し物は見つかりましたか?
まさにこれだ 参考になった ちょっと違う これじゃない
何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。


目次に戻る
image