/etc/ftpd ディレクトリに置かれた構成ファイルを使用して FTP サーバーへのアクセスを制御します。次に構成ファイルを示します。
ftpusers には、FTP サーバーへのアクセスを拒否するユーザーが列挙されています。
ftphosts は、複数のホストから FTP サーバー上の複数のアカウントへのログインを許可または拒否するために使用します。
ftpaccess は、メインの FTP 構成ファイルです。-a オプション付きで呼び出された場合、FTP サーバーは /etc/ftpd/ftpaccess ファイルだけを読み取ります。ftpaccess を使用する場合、すべてのユーザーは FTP サーバーへのアクセスを許可されたクラスのメンバーである必要があります。特定のクラスにのみ適用される ftpaccess 指令を複数指定することができます。
詳細は、ftpusers(4)、ftphosts(4)、ftpaccess(4) のマニュアルページを参照してください。
FTP サーバーのすべての構成ファイルで、# 記号で始まる行はコメントとして扱われます。
ftpaccess を使用する場合、FTP サーバーにログインするには、ユーザーはクラスのメンバーである必要があります。class 指令を ftpaccess に追加するには、特定のホストからアクセスを許可されているユーザーの class 名と typelist を指定します。
スーパーユーザーになります。
ftpaccess ファイルに匿名ユーザー、ゲストユーザー、実ユーザーのエントリを追加します。
class class typelist addrglob[addrglob...] |
class |
FTP ユーザーの定義に使用するキーワード |
class |
class キーワードを使用して定義する名前。各ログインは、定義されているクラスのリストと比較される。ログインしたユーザーは、一致した最初のクラスのメンバーと見なされる |
typelist |
3 種類のユーザー (anonymous、guest、real) に一致するキーワードからなる、コンマで区切られたリスト |
addrglob |
展開されたドメイン名または展開された数値アドレス。addrglob は、スラッシュ ('/') で始まるファイル名にすることもできる。address:netmask または address/cidr という形のアドレス展開を追加できる
|
class local real,guest,anonymous *.provider.com class remote real,guest,anonymous * |
この例では、local クラスを、*.provider.com からログインする real、guest、または anonymous のいずれかの種類のユーザーとして定義します。最後の行では、remote を、*.provider.com 以外からログインするユーザーとして定義します。
ftpaccess ファイルに設定された指令により、特定のクラスのユーザーが同時にログインできる数を制限できます。各ログインの制限には、クラス名、UUCP スタイルの曜日リスト、制限を超過した場合に表示するメッセージファイルが含まれます。
ユーザーログインの制限を設定するには、次の手順を実行します。
スーパーユーザーになります。
次のエントリを ftpaccess ファイルに追加します。
limit class n times [message_file] |
limit |
定義されたクラスの特定時刻の同時ログイン数を、指定したユーザー数に制限するキーワード |
class |
class キーワードを使用して定義する名前。各ログインは、定義されているクラスのリストと比較される。ログインしたユーザーは、一致した最初のクラスのメンバーと見なされる |
n |
ユーザー数 |
times |
クラスが接続可能な曜日と 1 日の時間帯。任意の曜日を指定する場合は Any を指定する |
message_file |
ユーザーがアクセスを拒否された場合に表示されるメッセージファイル |
limit anon 50 Wk0800-1800 /etc/ftpd/ftpmsg.deny limit anon 100 Any /etc/ftpd/ftpmsg.deny limit guest 100 Any /etc/ftpd/ftpmsg.deny |
前述の例の最初の行では、毎週勤務時間中のクラス anon のユーザーの同時ログイン数が 50 に制限されています。2 行目では、勤務時間外の anon のユーザーの同時ログイン数を 100 に制限しています。最後の行では、常時 guest ユーザーの同時ログイン数が 100 に制限されています。日時パラメータの指定方法の詳細は、ftpaccess(4) のマニュアルページを参照してください。
前述の例では、そのほかに、指定したログイン制限数に達した場合に /etc/ftpd/ftpmsg.deny ファイルの内容が返されることを示しています。この場合、ftpmsg.deny は存在するものと仮定しています。/usr/sbin/ftpcount コマンドを使用して、特定の時刻にログインしている各クラスのユーザーの数とログイン制限を表示する方法については、ftpcount(1) のマニュアルページを参照してください。
ユーザーは、その時刻の指定ログイン制限数に達していなければ、FTP サーバーへのログインを許可されます。匿名ユーザーは、ユーザー ftp としてログインします。実ユーザーは、自分自身としてログインします。ゲストユーザーは、アクセス特権を制限する chroot 環境を持つ実ユーザーとしてログインします。
/usr/sbin/ftpwho コマンドを使用して、FTP サーバーにログインするユーザーの識別情報を検査する方法については、ftpwho(1) のマニュアルページを参照してください。
必要な情報を誤入力するなどの理由で FTP サーバーへのログインが失敗すると、通常はログインが繰り返されます。ユーザーは、特定回数連続してログインを試行できます。その回数を超えるとメッセージが syslog ファイルに記録されます。その時点でユーザーとの接続は切断されます。ログイン失敗時の試行回数を制限するには、次の手順を実行します。
スーパーユーザーになります。
次のエントリを ftpaccess ファイルに追加します。
loginfails n |
loginfails |
FTP 接続が切断されるまでのログインに失敗できる回数を割り当てるキーワード |
n |
ログインに失敗できる回数 |
loginfails 10 |
この例では、ユーザーがログイン試行に 10 回失敗すると FTP サーバーから接続を切断されることを示します。
/etc/ftpd/ftpusers には、FTP サーバーへのログインを拒否するユーザーの名前が列挙されています。ログインが試行されると、FTP サーバーは /etc/ftpd/ftpusers ファイルを検査して、そのユーザーからのアクセスを拒否するかどうかを判定します。ユーザーの名前がそのファイルにない場合は、次に /etc/ftpusers ファイルを検査します。
/etc/ftpusers の中にユーザー名に一致するものがあった場合、使用を差し控えるべきファイルで一致するユーザー名が見つかったことを示す syslogd メッセージが書き込まれます。また、このメッセージでは、/etc/ftpusers の代わりに /etc/ftpd/ftpusers を使用することを推薦します。
/etc/ftpusers ファイルのサポートは、本リリースでは推奨されていません。FTP サーバーをインストールする時に /etc/ftpusers ファイルがすでに存在している場合は、/etc/ftpd/ftpusers に移動されます。
詳細は、syslogd(1M)、in.ftpd(1M)、および ftpusers(4) のマニュアルページを参照してください。
root daemon bin sys adm lp uccp nuucp listen nobody noaccess nobody4 |
この例では、ftpusers ファイルの通常のエントリが列挙されています。ユーザー名は /etc/passwd ファイルのエントリに一致します。通常このリストには、スーパーユーザー root、その他の管理に使用するユーザー、システムアプリケーションを示すユーザーが含まれます。
root エントリは、セキュリティ手段の 1 つとして ftpusers に追加されています。デフォルトのセキュリティポリシーでは、root のリモートログインを拒否します。また、/etc/default/loginfile ファイルの CONSOLE エントリとして設定されているデフォルト値も同じポリシーに従っています。login(1) を参照してください。
これまでに説明した制御方法以外に、ftpaccess ファイルに明示的に文を追加して FTP サーバーへのアクセスを制限することができます。
スーパーユーザーになります。
次のエントリを ftpaccess ファイルに追加します。
デフォルトでは、すべてのユーザーはデフォルト (非仮想) FTP サーバーへのアクセスを許可されています。特定のユーザー (anonymous 以外) のアクセスを拒否するには、次のエントリを追加します。
defaultserver deny username [username...] |
defaultserver |
アクセスの拒否または許可を設定する非仮想サーバーの識別に使用するキーワード |
username |
defaultserver へのアクセスを制限するユーザーのログイン名 |
deny 行に列挙されていないユーザーのアクセスを許可するには、次の行を追加します。
defaultserver allow username [username...] |
匿名ユーザーのアクセスを拒否するには、次のエントリを追加します。
defaultserver private |
defaultserver deny * defaultserver allow username |
この例では、FTP サーバーは、anon ユーザーと allow 行に列挙されているユーザー以外のユーザーのアクセスをすべて拒否するように設定されています。
また、ftphosts ファイルを使用して、複数のホストからの特定のログインアカウントのアクセスを拒否することができます。その他の情報は、ftphosts(4) のマニュアルページを参照してください。