Red Hat Training

A Red Hat training course is available for RHEL 8

4.5. BIND ACL の作成

BIND の特定の機能へのアクセスを制御することで、サービス拒否 (DoS) などの不正アクセスや攻撃を防ぐことができます。BIND アクセス制御リスト (acl) ステートメントは、IP アドレスと範囲のリストです。各 ACL には、指定された IP アドレスと範囲を参照するために allow-query などのいくつかのステートメントで使用できるニックネームがあります。

警告

BIND は、ACL で最初に一致したエントリーのみを使用します。たとえば、ACL { 192.0.2/24; !192.0.2.1; } を定義し、IP アドレス 192.0.2.1 でホストが接続すると、2 番目のエントリーでこのアドレスが除外されていてもアクセスが許可されます。

BIND には次の組み込み ACL があります。

  • none : どのホストとも一致しません。
  • any : すべてのホストに一致します。
  • localhost: ループバックアドレス 127.0.0.1::1、および BIND を実行するサーバー上のすべてのインターフェイスの IP アドレスに一致します。
  • localnets : ループバックアドレス 127.0.0.1::1、および BIND を実行するサーバーが直接接続しているすべてのサブネットに一致します。

前提条件

  • BIND は、たとえばキャッシングネームサーバーとしてすでに設定されています。
  • named または named-chroot サービスが実行しています。

手順

  1. /etc/named.conf ファイルを編集して、次の変更を行います。

    1. acl ステートメントをファイルに追加します。たとえば、127.0.0.1192.0.2.0/24、および 2001:db8:1::/64 に対して internal-networks という名前の ACL を作成するには、次のように入力します。

      acl internal-networks { 127.0.0.1; 192.0.2.0/24; 2001:db8:1::/64; };
      acl dmz-networks { 198.51.100.0/24; 2001:db8:2::/64; };
    2. ACL のニックネームをサポートするステートメントで使用します。たとえば、次のようになります。

      allow-query { internal-networks; dmz-networks; };
      allow-recursion { internal-networks; };
  2. /etc/named.conf ファイルの構文を確認します。

    # named-checkconf

    コマンドが出力を表示しない場合は、構文に間違いがありません。

  3. BIND をリロードします。

    # systemctl reload named

    change-root 環境で BIND を実行する場合は、systemctl reload named-chroot コマンドを使用してサービスをリロードします。

検証

  • 設定された ACL を使用する機能をトリガーするアクションを実行します。たとえば、この手順の ACL は、定義された IP アドレスからの再帰クエリーのみを許可します。この場合は、ACL の定義に含まれていないホストで次のコマンドを入力して、外部ドメインの解決を試みます。

    # dig +short @192.0.2.1 www.example.com

    コマンドが出力を返さないと、BIND はアクセスを拒否し、ACL は機能しています。クライアントで詳細な出力を得るには、+short オプションを指定せずにコマンドを使用します。

    # dig @192.0.2.1 www.example.com
    ...
    ;; WARNING: recursion requested but not available
    ...

関連情報