AlmaLinux9のBIND設定 外部公開用DNS

AlmaLinux9のBIND設定 はどのようにすべきか?イマドキの設定はセキュリティ的にも安全で、将来の拡張にも強い構成が求められます。外部公開用DNSの場合は特にセキュリティ面を考慮することと同様にセカンダリDNSとの連携で止まらない設計・設定が重要となります。

関連サイト:BIND9 ISC
関連ページ:DKIMの導入 AlmaLinux9+AlmaLinux8+CentOS7

AlmaLinux9でBIND設定し運用する

AlmaLinux9でBIND設定の仕様

要素設定値
プライマリDNSaq3.aquila.jp(161.34.68.88)
セカンダリDNSdns13.dion.ne.jp(211.5.1.220)
ゾーン転送allow-transfer { 211.5.1.220; };
ゾーン通知(NOTIFY)also-notify { 211.5.1.220; };
BINDポートUDP/TCP 53番を開放(双方向)
IPv6使用しない
サーバ実IPアドレス192.168.1.11/24 (NAT: 192.168.1.11 = 161.34.68.88)
  • 権威DNS機能を持ちつつ、内部ネットワーク(192.168.1.0/24)に対しては再帰問い合わせも許可し、全てのドメイン名(自ドメインおよび外部ドメイン)の名前解決を行う。
  • 外部ネットワークからの再帰問い合わせは禁止し、セキュリティを確保する。
  • 内部ゾーンは扱わない
  • キャッシュは最小限
  • ゾーン転送は許可しないか、特定のセカンダリに限定
  • DNSSEC有効(ただし手動署名を省略)
  • サーバ実IPアドレスのネットワーク上にあるPCはこのDNSサーバを指定する
  • DNSの死活チェックなどを行う外部IPアドレスの問い合わせは許可する (164.70.115.131)

AlmaLinux9でBIND設定の各種設定ファイル

named.conf

acl "trusted-nets" {
    192.168.0.0/24;
    172.0.0.0/8;
    10.0.0.0/8;
    164.70.115.131;
};

acl "trusted-slaves" {
    211.5.1.220; // セカンダリDNS(dns13.dion.ne.jp)
};

options {
    listen-on port 53 { 127.0.0.1; 192.168.1.11; }; // IPアドレスを指定
    listen-on-v6 { none; }; 
    directory "/var/named";
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursion yes;
    allow-query { any; };
    allow-recursion { trusted-nets; };
    allow-transfer { trusted-slaves; };
    dnssec-validation auto;
    auth-nxdomain no;
};

zone "aq3.aquila.jp" IN {
    type master;
    file "aq3.aquila.jp.zone";
    allow-transfer { trusted-slaves; };
};

zone "88h.68.34.161.in-addr.arpa" IN {
    type master;
    file "88h.68.34.161.rev";
    allow-transfer { trusted-slaves; };
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

/var/named/aq3.aquila.jp.zone

$TTL 300
@       IN  SOA     ns.aquila.jp. root.aq3.aquila.jp. (
                2025072001 ; Serial
                3600       ; Refresh
                1800       ; Retry
                604800     ; Expire
                300 )      ; Minimum

        IN  NS      ns.aquila.jp.
        IN  NS      dns13.dion.ne.jp.
ns      IN  A       210.255.164.66
@       IN  A       161.34.68.88

/var/named/88h.68.34.161.rev

$TTL 86400
@       IN  SOA     ns.aquila.jp. root.aq3.aquila.jp. (
                2025072001 ; Serial
                3600       ; Refresh
                1800       ; Retry
                604800     ; Expire
                86400 )    ; Minimum

        IN  NS      ns.aquila.jp.
        IN  NS      dns13.dion.ne.jp.

88      IN  PTR     aq3.aquila.jp.

/var/named/named.local

$TTL 1D
@       IN  SOA     localhost. root.localhost. (
                2025072001 ; Serial
                8H         ; Refresh
                2H         ; Retry
                1W         ; Expire
                1D )       ; Minimum

        IN  NS      localhost.
1       IN  PTR     localhost.

AlmaLinux9でBIND設定の各種設定ファイルをChat-GPTで検証

このAlmaLinux9でBIND設定は、外部公開専用の権威DNSサーバとして非常に適切に構成されています。IPv6を拒否する方針も、以下の点から妥当です:


IPv6 拒否の妥当性

  • 要件に「IPv6は使用しない」と明記されており、listen-on-v6 { none; }; で無効化済み。
  • ネットワーク構成(NAT 変換)も IPv4 のみで、IPv6ルーティングの必要なし。
  • セキュリティ的にも安全。IPv6を不用意に開けてしまうと、管理対象外からのアクセス経路になり得るため。

この構成の長所

  • 再帰問い合わせは信頼ネットのみ許可され、外部には閉鎖(権威DNSとして理想的)。
  • ゾーン転送・NOTIFY もセカンダリに限定されており、漏洩リスク最小。
  • NAT環境対応(内部 192.168.1.11 → 外部 161.34.68.88)も問題なし。
  • 外部監視(164.70.115.131)からのアクセスを個別許可しており、監視用途にも柔軟対応。

BIND(Berkeley Internet Name Domain)は、DNSサーバーのソフトウェアとして広く利用されているオープンソースのソフトウェアです。特に、Linuxディストリビューションで標準的に採用されていることが多いです。BINDは、権威DNSサーバーとキャッシュDNSサーバーの両方の機能を持ち、インターネットの基本的なサービスを提供するために重要な役割を果たします。しかし、その一方で、コードが複雑で脆弱性が潜みやすく、セキュリティ上の問題が指摘されることもあります。