AnonymousFTPの設定


目次

はじめに
FTPの概略
Anonymouse FTP とは?
Anonymouse FTP の設定

一つ前へ


はじめに

 インターネットによって計算機どうしがIP接続され、ネットワークを利用できるようになると、これまでフロッピーディスクや光磁気ディスクを使ってやりとりしていたデータをネットワークを使って効率的にやりとりしたくなります。データの受け渡しにはさまざまな手法が考えられます。古くからあるものとしてはFTPや電子メールを使う方法が挙げられます。その他、NFSやAFS、WWFSなどのネットワーク・ファイルシステム、WWWを用いる方法もあるでしょう。特に、WWWを使うと簡単に個人からの情報発信ができるため、ここ数年で急速に普及してきました。

FTPの概略

 FTP(File Transfer Protocol)とは、その名のとおり、ファイルを転送するためのプロトコルです。1985年にJon Postel氏(IPなどの仕様を提案した人)によって提案され、現在事実上の業界標準プロトコルとなっています。詳しい仕様を知りたい人は、RFC959を読んでみてください。
 FTPの目的は、遠隔計算機とのファイルのやりとりと、遠隔計算機上のファイル操作です。ユーザ・インターフェイスはftpコマンドが受け持ちます。以下におもに使われる操作を列挙します。なお、括弧内は対応するftpコマンドの命令です。
 
●遠隔計算機からのファイル取得(get、mget)
●遠隔計算機へのファイル転送(put、mput)
●遠隔計算機上のファイル操作
 −ファイル一覧の取得(ls、dir、mdir)
 −ディレクトリ作成/削除(mkdir、rmdir)
 −ファイルの削除(delete)
 −ファイル名の変更(rename)

 ここでは、皆さんがftpコマンドの使い方を知っているものと仮定して、ftpコマンドの使用法についての解説は省略します。
 

AnonymouseFTPとは?

 FTPを用いることにより、ネットワークで接続された遠隔計算機のファイルを自分の計算機に取ってきたり、逆に遠隔計算機にファイルをもっていくことができるようになります。遠隔計算機と自分の計算機のあいだでFTPを用いたファイル転送をおこなうためには、遠隔計算機に自分のアカウントが必要です。ですから、担当内の全員にファイルを配布したいと思ったら、1つのFTPサーバに配布したいファイルを集めておき、FTPサーバに全員のアカウントを用意すればいいことになります。そうすれば、FTPサーバにアカウントをもつ人は、FTPサーバにある読み込み可能なすべてのファイルを入手することができます。
 しかし、現実には、FTPサーバ上のすべてのファイルを配布したいような状況は稀で、一部のファイルのみを配布したいことのほうが多いはずです。計算機に固有のファイルはそもそも全員に配布する必要がありませんし、passwdファイルのように外部にさらすには危険過ぎるファイルもあります。また、共有する人間が増えてくると、FTPサーバのアカウント管理がたいへんになるだけでなく、使用頻度の低いアカウントが出てくることも考えられます。そうしたアカウントは不正な侵入の経路として狙われやすく、不正に使われたことが発覚しにくいため、セキュリティ的に問題となります。
 そこで、FTPを用いたファイル配布には、Anonymouse FTP を利用することを勧めます。Anonymouse FTP は特定のディレクトリ以下のファイルしか公開しない代わりに、匿名でのFTP利用を許すシステムです。Anonymouse FTP には次のような利点があります。

●特定のディレクトリ以下のみを公開するため、セキュリティ的に重要なファイルを保護することができる。
●公開したいファイルのみを利用者に見せることができるので、ディレクトリの見通しがよい。
●匿名のアカウントを1つ作るだけでよく、それぞれの利用者ごとにアカウントを発行する必要がない。

 Anonymouse FTP は次の手順で利用します
1.Anonymouse FTP サーバに接続する。
2.ログイン名として "anonymous" もしくは "ftp" を入力する。
3.パスワードとして、自分のメールアドレスを入力する
  (けっしてパスワードを入力しないこと、特に自組織外のサーバ利用のとき)

 無事に処理されると、公開されたディレクトリにログインできます。あとは通常のftpのコマンドを使ってファイルを入手します。
具体的な手順を以下に示します。

 $ ftp ftp.kaisya.co.jp
 Connected to ftp.kaisya.co.jp
 220 ftp.kaisya.co.jp FTP server (Version wu-2.4(4) Fri Mar 10 12:43:21 MST 1995) ready.
 Name (ftp:saru):anonymous
 331 Guest login ok, send your complete e-mail address as passwoed.
 Password:メールアドレス(表示されません)
 230 Guest login ok,access restrictions apply.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp>■


 
Anonymouse FTP の設定

 Anonymouse FTP サービスを提供する方法を解説します。匿名でのログインを許しファイル転送するシステムを構築するというとたいへんそうに聞こえますが、実際の作業はとくに難しいことはありません。以下の作業を実行するだけで、Anonymouse FTP サーバが実現できます。
 1."ftp" というユーザを作る。
 2.ユーザ "ftp" のホームディレクトリを設定する。
   ・pub、bin、etc ディレクトリの作成
   ・ls コマンドと passwd、group ファイルのコピー
   ・OSによっては、共有ライブラリのコピー

 
 ◆ユーザ ”ftp”の追加
 
 Anonymouse FTP サーバにログインする場合、ユーザ名として "anonymous" あるいは "ftp" を使うと書きました。Anonymouse FTP も通常のFTPも、受け口は ftpd というデーモンプロセスです。ftpdは利用者がftpコマンドを使って送ってきたユーザ名を見て、Anonymouse FTPなのかどうかを判断し、処理を変更しているにすぎません。ポイントは普通のFTPはユーザ名に対応するホームディレクトリに移動するのに対し、Anonymouse FTPの場合はユーザ "ftp" のホームディレクトリをルートディレクトリとして設定することで、大切なファイルが覗かれることを防止しているのです。
 Anonymouse FTPの場合、ルートディレクトリとして設定するディレクトリの位置情報を、ユーザ "ftp" のパスワードエントリから取得します。これが、Anonymouse FTPを実現するために、新しくユーザ "ftp" を作る理由です。通常のユーザを作るときと同じ手順でユーザ "ftp" を作ってください
 

 $ su
 Password: ********
 # vipw (ユーザ "ftp" のエントリを追加)

 
 セキュリティを高めるため、ユーザ "ftp" を追加する際は、パスワードの項目をかならず "*" にして通常のアカウントとして使用できないようにしてください。
 ユーザ "ftp" のホームディレクトリも忘れずに作ります。ディレクトリの所有権を ftp にし、書込み禁止にします。
 

 # mkdir /var/spool/ftp
 # chown ftp /var/spool/ftp
 # chmod ftp /var/spool/ftp

 

 ◆ホームディレクトリの設定

 ユーザ "ftp" の追加ができたら、次にホームディレクトリを設定します。通常は次に示すディレクトリを作ります。
●~ftp/pub
●~ftp/bin
●~ftp/etc
●共有ライブラリのためのディレクトリ

 ◆pubディレクトリの設定
 pubディレクトリには配布したいファイルを集めます。配布したいファイルの内容に従って、階層的にディレクトリを構成しましょう。稀に、pubディレクトリの下にディレクトリをまったく作らず、膨大なファイルをフラットに置いているところを見かけます。これだとどんなファイルが配布されているのかを把握できませんし、1画面に表示することもできず分かりづらいので、できるだけ構造的に配置しましょう。pubディレクトリの所有者はftp、モードは777にします。
 

 # cd ~ftp
 # mkdir pub
 # chown ftp pub
 # chmod 777 pub


 ◆binディレクトリの設定

 binディレクトリには、lsコマンドなど、FTPユーザの要求に応答するために必要なコマンドをコピーします。前述のように AnonymousFTP の場合、ユーザ "ftp" のホームディレクトリがルートディレクトリになります。当然、もともとの /bin/ls などのコマンド類は見えないので、必要なコマンドを ~ftp/bin の下に保持する必要があるのです。bin ディレクトリの所有者は root 、モードは 555 にします。コマンド類のモードは 111 にします。
 

 # cd ~ftp
 # mkdir bin
 # chown root bin
 # chmod 555 bin
 # cd bin
 # cp /bin/ls .
 # chmod 111 ls


 wu-ftpd のように ftpd がディレクトリのアーカイブ機能やファイルの圧縮機能をもっている場合には、ls のほかに gzip、compress、 tar などの支援コマンド類も同様に ~ftp/bin ディレクトリにコピーします。
 wu-ftpd は、ftp://wg.omron.co.jp/pub/net/misc/wu-ftpd-2.6.1.tar.gz から入手できます。

 ◆etcディレクトリの設定

 etc ディレクトリにはパスワード・ファイルとグループ・ファイルをコピーします。これは AnonymousFTP を利用中に ls コマンドでファイル属性を表示するとき、ユーザ名やグループ名が数字で表示されるのを避けるためです。/etc/passwd や /etc/group をそのままコピーするとセキュリティ的に問題があるので、通常は AnonymousFTP でも ls の表示に必要なユーザ root とユーザ ftp のエントリのみ残し、普通のユーザのエントリは削除します。~ftp/etc/passed の例を下に示します。etc ディレクトリの所有者は root 、モードは 777 にします。パスワード・ファイルなどのモードは 444 に設定します。
 

 # cd ~ftp
 # mkdir etc
 # chmod 444 etc
 # cd etc
 # cp /etc/passwd /etc/group .
 # vi passwd
  (ここでパスワード・ファイルを適切に編集します)  
 % cat ~ftp/etc/passwd
 root:*0:1:Operator:/:/bin/csh
 ftp:*:65534:65534:AnonymousFTP:/var/spool/ftp:
 %■


 OSによっては、パスワード・ファイルそのものを利用せずに、パスワード・ファイルから作られたデータベース・ファイルを参照するものがあります。その場合はデータベース・ファイルの方をコピーしてください。
 ◆共有ライブラリの設定

 最後に共有ライブラリのためのディレクトリを設定します。旧いOSでは上記の3つのディレクトリを設定するだけでよいのですが、共有ライブラリを用いるOSの場合は、ls などのコマンド類を実行するために共有ライブラリもコピーしなければなりません。例としてSunOS と BSD/OS の場合を紹介します。
▲Sun OS の場合
 2つのディレクトリを新たに追加します。
 ・~ftp/usr/lib
 ・~ftp/dev

  まづ、~ftp/usr/lib ディレクトリに次のライブラリをコピーします。

 ・/usr/lib/ld.so
 ・/usr/lib/libc.so.l.9
 ・/usr/lib/libdl.so.l.0

 

 # cd ~ftp
 # mkdir usr
 # mkdir usr/lib
 # cd usr/lib
 # cp /usr/lib/ld.so /usr/lib/libc.so.* /usr/lib/libdl.so.* .

  (さらに、~ftp/devディレクトリには、共有ライブラリの
  実行時ローダが利用するデバイス・ファイルを作ります)
 
 # cd ~ftp
 # mkdir dev
 # cd dev
 # mknod zero c 3 12


▲BSD/OS の共有ライブラリ設定
 次のディレクトリを作ります。
 ・~ftp/shlib

 ~ftp/shlib には /shlib/libc_s.2.0 をコピーします。

 

 # cd ~ftp
 # mkdir shlib
 # cd shlib
 # cp /shlib/libc_s.2.0 .


 以上、AnonymousFTP の開設までを説明しました。ただ、AnonymousFTP を公開するということはその計算機の存在を公にするということであり、クラッカーからの攻撃を受ける可能性が高くなることを忘れてはいけません。インターネットを介して外部に公開する場合は、防火壁の外に構築するなどの対策を施しましょう。

一つ前へ