Solaris のシステム管理 (資源管理とネットワークサービス)

FTP サーバーへのアクセスの制御

/etc/ftpd ディレクトリに置かれた構成ファイルを使用して FTP サーバーへのアクセスを制御します。次に構成ファイルを示します。

FTP サーバークラスの定義方法

ftpaccess を使用する場合、FTP サーバーにログインするには、ユーザーはクラスのメンバーである必要があります。class 指令を ftpaccess に追加するには、特定のホストからアクセスを許可されているユーザーの class 名と typelist を指定します。

  1. スーパーユーザーになります。

  2. ftpaccess ファイルに匿名ユーザー、ゲストユーザー、実ユーザーのエントリを追加します。


    class class typelist addrglob[addrglob...]

    class

    FTP ユーザーの定義に使用するキーワード 

    class

    class キーワードを使用して定義する名前。各ログインは、定義されているクラスのリストと比較される。ログインしたユーザーは、一致した最初のクラスのメンバーと見なされる

    typelist

    3 種類のユーザー (anonymousguestreal) に一致するキーワードからなる、コンマで区切られたリスト

    addrglob

    展開されたドメイン名または展開された数値アドレス。addrglob は、スラッシュ ('/') で始まるファイル名にすることもできる。address:netmask または address/cidr という形のアドレス展開を追加できる

    次に、展開されたアドレスの例を示す。

    • 数値の IPv4 アドレス : 10.1.2.3

    • 展開されたドメイン名 *.provider.com

    • 展開された数値の IPv4 アドレス 10.1.2.*

    • 数値の IPv4 アドレス:ネットマスク 10.1.2.0:255.255.255.0

    • 数値の IPv4 アドレス/CIDR 10.1.2.0/24

    • 数値の IPv6 アドレス : 2000::56:789:21ff:fe8f:ba98

    • 数値の IPv6 アドレス/CIDR: 2000::56:789:21ff:fe8f:ba98/120

例 — FTP サーバークラスの定義


class  local  real,guest,anonymous *.provider.com
class  remote real,guest,anonymous *

この例では、local クラスを、*.provider.com からログインする realguest、または anonymous のいずれかの種類のユーザーとして定義します。最後の行では、remote を、*.provider.com 以外からログインするユーザーとして定義します。

ユーザーログインの制限を設定する方法

ftpaccess ファイルに設定された指令により、特定のクラスのユーザーが同時にログインできる数を制限できます。各ログインの制限には、クラス名、UUCP スタイルの曜日リスト、制限を超過した場合に表示するメッセージファイルが含まれます。

ユーザーログインの制限を設定するには、次の手順を実行します。

  1. スーパーユーザーになります。

  2. 次のエントリを 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 ファイルに記録されます。その時点でユーザーとの接続は切断されます。ログイン失敗時の試行回数を制限するには、次の手順を実行します。

  1. スーパーユーザーになります。

  2. 次のエントリを ftpaccess ファイルに追加します。


    loginfails n
    

    loginfails 

    FTP 接続が切断されるまでのログインに失敗できる回数を割り当てるキーワード 

    n

    ログインに失敗できる回数 

例 — 無効なログイン試行回数の制御


loginfails 10

この例では、ユーザーがログイン試行に 10 回失敗すると FTP サーバーから接続を切断されることを示します。

特定のユーザーの 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) のマニュアルページを参照してください。

  1. スーパーユーザーになります。

  2. FTP サーバーへのログインを拒否するユーザーのエントリを /etc/ftpd/ftpusers に追加します。

例 — FTP サーバーへのアクセスを拒否する


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) を参照してください。

デフォルト FTP サーバーへのアクセスを制限する方法

これまでに説明した制御方法以外に、ftpaccess ファイルに明示的に文を追加して FTP サーバーへのアクセスを制限することができます。

  1. スーパーユーザーになります。

  2. 次のエントリを ftpaccess ファイルに追加します。

    1. デフォルトでは、すべてのユーザーはデフォルト (非仮想) FTP サーバーへのアクセスを許可されています。特定のユーザー (anonymous 以外) のアクセスを拒否するには、次のエントリを追加します。


      defaultserver deny username [username...]

      defaultserver

      アクセスの拒否または許可を設定する非仮想サーバーの識別に使用するキーワード 

      username

      defaultserver へのアクセスを制限するユーザーのログイン名。

    2. deny 行に列挙されていないユーザーのアクセスを許可するには、次の行を追加します。


      defaultserver allow username [username...]
    3. 匿名ユーザーのアクセスを拒否するには、次のエントリを追加します。


      defaultserver private

例 — デフォルト FTP サーバーへのアクセスの制限


defaultserver deny *
defaultserver allow username

この例では、FTP サーバーは、anon ユーザーと allow 行に列挙されているユーザー以外のユーザーのアクセスをすべて拒否するように設定されています。

また、ftphosts ファイルを使用して、複数のホストからの特定のログインアカウントのアクセスを拒否することができます。その他の情報は、ftphosts(4) のマニュアルページを参照してください。