|
|
FTPサーバーの構築
|
FTPサーバーについて
vsFTPdの基本設定
|
ローカルユーザー接続の設定(CentOS5)このパートでは、 構築中のLinuxサーバー に アカウント を持つユーザーからの FTP 接続の設定を行います。
もちろん、
vsFTPd
全体に関する設定は必要ですから、こちら
また、
デフォルト
の
"/etc/vsftpd/vsftpd.conf"
の内容は、
WBEL3,CentOS3,WBEL4,CentOS4
をご利用の場合は、アクセスの制御に用いる
ユーザーリストファイル
のファイル名と
パス
が、このページの解説とは異なりますのでこちら
"local_enable"〜L1.ローカルユーザーからのFTP接続の許可ローカルユーザーからの接続を行うかどうかを設定するキーワードです。 以下のように デフォルト では、有効になっています。
もしも vsFTPd を アノニマスFTP でのみ運用するのであれば、"#"でコメントアウトするか、明示的に、
と記述してください。 その場合は当然、このパートの以下の設定は必要ありません。
アクセスを許可するユーザーアカウントの設定(CentOS5)デフォルト の vsFTPd では、 ユーザーアカウント 全てに対して FTP による ログイン が許可されます。 もしも 構築中のLinuxサーバー に作成したユーザーアカウント全てに対してFTP接続を許可するような運用を行う場合には、もちろんこのデフォルトの設定のままで構いません。 useradd で新しく追加したユーザーアカウントに逐次FTP接続が許可されていきます。 これは例えば、知人などにホームページ公開のためのスペースを貸し出すのが サーバー 運用の主な目的であるような場合が考えられます。 しかしながら、例えばユーザーアカウントを作成する主な目的がメールアドレスの提供であるような場合には、ユーザーに対してFTP接続を許可する必要はありませんから、デフォルトの設定ではユーザーに余分なサービスを与えてしまうことになります。 つまり、「特定のユーザーアカウントにのみFTP接続を許可する」という運用方法が中心となるサーバー運用を行う場合には、そういう部分の基本的な設定を変更しなければなりません。 このステップではこのような、「明示的に指定したユーザーアカウントにのみFTP接続を許可する設定。」について説明します。 "userlist_enable"〜L5.アクセスユーザーリストの使用vsFTPd には、予め ユーザーアカウント に対して FTP 接続の許可、拒否を制御するユーザーリスト "/etc/vsftpd/user_list" が準備されています。 |
||||||||||
|
|
そして、"/etc/vsftpd/vsftpd.conf"中で、"userlist_enable"キーワードが、
と有効化されていますので、 デフォルト で"/etc/vsftpd/user_list"が参照されることになります。 ただし、この"/etc/vsftpd/user_list"の内容は、デフォルトでは 「FTPによるアクセスを拒否するアカウントリスト」 として機能します。 この機能の変更は、次の"userlist_deny"キーワードで行いますので、この"userlist_enable"キーワードは修正せず、そのままにしておきます。 "userlist_deny"〜アクセスユーザーリストの動作の指定デフォルト で 「FTPによるアクセスを拒否するアカウントリスト」 として機能する"/etc/vsftpd/user_list"は、"/etc/vsftpd/vsftpd.conf"中で、"userlist_deny"キーワードを、
と追加記述することで意味が逆転し、 「FTPによるアクセスを許可するアカウントリスト」 となります。 従って、 「特定のユーザーアカウントにのみFTP接続を許可する」 という運用方法が中心となるサーバー運用を行う場合には、この設定を追加記述してください。 "pam_service_name"〜L4.PAM認証サービス名の指定上の"userlist_deny"キーワードを "userlist_deny=NO" と設定して、"/etc/vsftpd/user_list"を「FTPによるアクセスを許可するアカウントリスト」と設定した場合、少し"/etc/vsftpd/user_list"に手を加える必要があります。 まず、 デフォルト の"/etc/vsftpd/user_list"の内容をご覧ください。
実は、ここに記述されているのは 「システムの セキュリティ の面で、 FTP で ログイン することが望ましくない アカウント 。」 です。 もともと"/etc/vsftpd/user_list"は「アクセスを拒否するアカウントのリスト」ですからそういうリストになっているわけですが、この意味を逆転させて「アクセスを許可するアカウントのリスト」として使用する場合には、このリストの全てのアカウント名を"#"でコメントアウトするか、削除してしまわなければなりません。 もちろん、 nanoエディタ で修正するだけですので大した手間ではないかもしれませんが、この"/etc/vsftpd/user_list"でアクセス制御を行う場合、アクセスを拒否するアカウントからの接続に対しても、 vsFTPd は、 とりあえず接続だけは受け付けなければならない ため、余分な仕事をしなければならなくなります。 またこの場合、接続を試みる側には、 「パスワードが一致しません」 というメッセージが送られてしまいますので、FTPで不正侵入を行うクラッカーや不正プログラムにとっては、 「パスワードが一致すれば進入できるかもしれない」 と判断される恐れがあり、何度も進入を試みられる恐れがあります。 つまりこういう設定方法では、貴重な通信を不正侵入のために無駄遣いされてしまいかねないというわけです。 そこでvsFTPdはデフォルトで PAM による認証サービスを利用して、この問題に対処するようになっています。
このキーワード設定によってPAMによる認証サービスが有効になり、 "/etc/pam.d/vsftpd" の設定、
が機能するようになりますので、vsFTPdの動作とは無関係に "/etc/vsftpd/ftpusers" に記述されるアカウントは"sense=deny"、つまり アクセス拒否 されることになります。 |
||||||||||
|
|
結果としてこの"pam_service_name=vsftpd"が記述されていることにより、外部からのFTP接続要求に対しては、 1."/etc/vsftpd/ftpusers"に記述されているアカウントが接続拒否される。 2."/etc/vsftpd/user_list"に記述されているアカウントが接続許可される("userlist_deny=NO"の場合)。 という順序でアカウントの「ふるいわけ」が行われるようになります。 つまり、"/etc/vsftpd/user_list"にアカウント名を記述されて接続を許可されていても、同じアカウント名が"/etc/vsftpd/ftpusers"に記述されていれば接続は許可されないことになるわけです。 ちなみに、デフォルトの"/etc/vsftpd/ftpusers"は、
ですから、内容そのものは"/etc/vsftpd/user_list"と 全く同じ です。 従って、"userlist_deny=NO"という設定を行って"/etc/vsftpd/user_list"の意味が 拒否から許可に逆転 したからといって、"/etc/vsftpd/user_list"のアカウント名を削除したり、無効化したりする必要はないということになります。 という訳ですから、この"pam_service_name=vsftpd"はそのまま有効にしておきます。すると、 ・新しく追加された ユーザーアカウント にはFTP接続が許可されない。 ・ユーザーアカウントにFTP接続を許可するには、"/etc/vsftpd/user_list"にアカウント名を追記する。 ・デフォルトでFTP接続を認めないアカウントでも、"/etc/vsftpd/ftpusers"の中のアカウントを"#"でコメントアウトすれば、一時的にFTP接続を許可することができる。 という柔軟な使い方が可能になるわけです。
例えば、ユーザーアカウント"tanaka"にFTP接続を許可する場合には、nanoエディタで"/etc/vsftpd/user_list"を開き
|
||||||||||
| tanaka の前に一行空けているのは、もともと記述されているアカウントと区別するためです。他に理由はありません。 |
また、 構築中のLinuxサーバー 上の各 サーバー アプリケーション の設定ファイルなどは、一般のユーザーアカウントによるFTP接続では パーミッション の制限で ダウンロード が面倒な場合がありますから、本来アクセス拒否に設定されている root アカウントでのFTP接続を行いたい場合があります。 |
||||||||||
|
|
こういう場合はnanoエディタで"/etc/vsftpd/ftpusers"を開き
もちろん、rootアカウントによるFTP接続は本来好ましいものではないので、必要がなくなったら忘れずに元の設定に戻す必要があります。
|
||||||||||
上位ディレクトリの参照許可の設定(CentOS5)デフォルト の vsFTPd では、 ログイン したすべてのユーザーが、 CentOS5 のシステムの最上位である "/(ルート)" ディレクトリまで参照できるようになっています。 もちろんこれは、 構築中のLinuxサーバー を CUI や GUI で操作する場合と同じで、ローカルユーザーが FTP でログインした場合でも、 パーミッション で許可されている範囲であれば、任意の アカウント で自由にファイルシステム内を散歩できるというわけです。 FTPでログインするのが サーバー 管理者のみであれば、このままの設定でも何ら問題はありませんから、このステップでの設定は必要ありません。 しかし、例えば知り合いに Webサーバー の コンテンツ のためのスペースを貸してあげるとか、あるいは直接のファイル置き場として FTPサーバー を使わせてあげるとか、そういう運用のケースもあるかもしれません。 こういう場合では、自分以外のユーザーがFTPで 構築中のLinuxサーバー にローカルユーザーとして一般アカウントで接続することになるわけですが、当然これらのユーザーに対しても最上位のファイルシステムまで覗かせる権限を与えてしまうことになります。 もちろん、きちんとファイルシステムのパーミッションが設定されていれば、 構築中のLinuxサーバー 自身にとっては、それでも セキュリティ 上の問題はないはずです。 しかしながら、もしもサーバー管理者がパーミッションの設定を間違えていて、本来見られてはいけない設定ファイルを見られてしまう可能性もないとはいえませんし、どちらにせよファイルシステムを第三者の目に晒してしまうのは気持ちの良いものではありません。 |
|||||||||||
| ホームページを 公開 するわけですから、コンテンツを置くディレクトリに対して 「誰でも参照可能」 にしなければならないわけですね。 |
また、Webサーバーのためのスペースを貸し出す場合には、貸し出した
ユーザーアカウント
の
ホームディレクトリ
のパーミッションを
"755"
に変更する必要があります
そうすると、貸し出したユーザーアカウントの所有者同士はお互いのホームディレクトリを自由に参照することができるようになります。 もちろん参照されるだけなら「気持ち悪い」だけで済むかもしれませんが、例えば CGI などの サーバーサイドアプリケーション を利用する場合、データ領域には "777" や "666" といった、「誰でも書き換え可能なファイル」を設置しなければならないことが珍しくありません。 |
||||||||||
|
|
また、利用者が充分なパーミッションの知識を持っていない場合には、別のファイルやディレクトリにまで誤ったパーミッションを与えかねませんから、 構築中のLinuxサーバー 上にアカウントを持つ別のユーザーから自由に読み書きできるディレクトリが設置されないとも限りません。 こうなるともう「気持ち悪い」だけではなく明らかな「セキュリティホール」です。 このステップでは、一般アカウントのユーザーにそういった「ファイルシステム内の自由な散歩」をさせないための設定について説明します。 "chroot_list_enable"〜L2.ディレクトリ参照リストの使用ユーザーアカウント に対して、各々の ホームディレクトリ よりも上位のディレクトリの参照を許可するか、許可しないかの判別のためのユーザーリストを使うか否かのキーワードです。 デフォルト では、
と"#"でコメントアウトされており、「使用しない」に設定されていますから、"#"を削除して、
"chroot_list_file"〜L3.参照リストファイルの指定上位ディレクトリ参照ユーザーリストファイルを具体的に指定するキーワードです。 任意のファイル名が使用できますが、 vsFTPd の作法に従って、 デフォルト の
で記述されているファイル名をそのまま使用しましょう。当然この部分の設定は"#"を削除して、
"chroot_local_user"〜参照リストファイルの動作の指定上の設定で有効にした上位ディレクトリの参照ユーザーリストファイル"/etc/vsftpd/chroot_list"は、 デフォルト では 「上位ディレクトリを参照させない ユーザーアカウント のリスト」 として振舞います。 つまり、上位ディレクトリを参照させたくないユーザーアカウントを、この"/etc/vsftpd/chroot_list"に nanoエディタ などで記述していけば良い訳です。 しかし、実際に上位ディレクトリの参照を許可しても構わないユーザーアカウントというと、一番最初に作成する管理用の一般アカウントくらいです。 後から追加するユーザーアカウントの大部分は、基本的に上位ディレクトリを参照させない設定が望ましいわけですから、このデフォルトの設定のままでは、新規のユーザーアカウントを作成するたびに"/etc/vsftpd/chroot_list"を編集しなければなりません。これはとても面倒です。 ところが、"/etc/vsftpd/vsftpd.conf"に
という設定を加えると、"/etc/vsftpd/chroot_list"が示す意味が逆転して、 「上位ディレクトリの参照を許可するユーザーアカウントのリスト」 となります。 このように設定しておけば、"/etc/vsftpd/chroot_list"には編集を加えることなく、新しく追加されたユーザーアカウントには最初から上位のディレクトリへの参照が拒否されるようになり、それぞれのユーザーアカウントの ホームディレクトリ がそのユーザーアカウントにとっての最上位のディレクトリとなります。 一般的にいうとこちらの設定のほうがデフォルトよりも「常識的」ですので、このキーワードの記述は必須と思われます。 "/etc/vsftpd/chroot_list"の作成"/etc/vsftpd/chroot_list" は、予め準備されているわけではありませんから自分で作成する必要があります。 |
||||||||||
|
|
"root" アカウント で ログイン した状態で、例えば以下のような方法で新規に"/etc/vsftpd/chroot_list"を作成してください。
ファイルを作成したら、編集を行う前に パーミッション を設定します。 この方法で新規に作成された"/etc/vsftpd/chroot_list"は、所有者、所有グループが "root" 、パーミッションが "644" になっているはずです。 vsFTPd はroot アカウント で実行されますので、所有者とと所有グループはrootのままでOKです。しかしパーミッションが "644" のままでは、root以外の ユーザーアカウント でも内容を参照することができてしまいます。 もちろん、きちんと セキュリティ 対策ができていれば、第三者が"/etc/vsftpd/chroot_list"にアクセスすることはできないはずですが、万が一のことを考えてrootアカウント以外には読み書きできないように、 chmod コマンド でパーミッションを "600" に変更しておきましょう。
この"/etc/vsftpd/chroot_list"をnanoエディタで開き
"/etc/vsftpd/chroot_list"の記述例
記述が終わったら"/etc/vsftpd/chroot_list"を保存してください
|
|
|
vsFTPdの基本設定
(CentOS5) <<Previous |
Next>>
アノニマスFTPの設定
(CentOS5) |
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |