Debian 11 (bullseye) - DNS サーバ BIND9 の chroot 化!

Updated:


Debian GNU/Linux 11 (bullseye) に構築した DNS サーバを chroot 化する方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

  • Debian GNU/Linux 11.0.0 (bullseye; 64bit) での作業を想定。
  • DNS サーバ BIND が構築済みであることを想定。
  • chroot ディレクトリは /var/named/chroot/ とする。
  • root ユーザでの作業を想定。

1. BIND の停止

BIND が起動していると設定に失敗するので、BIND が起動している場合は停止する。

# systemctl stop named

2. 起動オプションの編集

起動時のオプションを変更するよう /etc/default/named を編集する。

File: /etc/default/named

#OPTIONS="-u bind -4"
OPTIONS="-u bind -4 -t /var/named/chroot"

3. ディレクトリの作成

chroot 用ディレクトリを作成する。

# mkdir -p /var/named/chroot/{etc,dev,var/cache/bind,var/run/named,usr/share}

4. スペシャルファイルの作成

chroot 化に必要なスペシャルファイルを作成し、パーミッションを変更する。

# mknod /var/named/chroot/dev/null c 1 3
# mknod /var/named/chroot/dev/random c 1 8
# mknod /var/named/chroot/dev/urandom c 1 9
# chmod 660 /var/named/chroot/dev/{null,random,urandom}

5. ディレクトリ/ファイルの移動

元々の BIND ディレクトリを chroot 用ディレクトリへ移動する。
root hints ファイルも移動する。

# mv /etc/bind /var/named/chroot/etc/
# mv /usr/share/dns /var/named/chroot/usr/share/

6. シンボリックリンクの作成

BIND を chroot 用ディレクトリにリンクするようシンボリックリンクを設定する。

# ln -s /var/named/chroot/etc/bind /etc/bind

7. 所有者・グループ・パーミッションの変更

# chown bind:bind /var/named/chroot/etc/bind/rndc.key
# chmod 775 /var/named/chroot/var/{cache/bind,run/named}
# chgrp bind /var/named/chroot/var/{cache/bind,run/named}

8. 起動スクリプトの編集

起動スクリプト /etc/init.d/named 内の PID ファイルのパスを変更する。

File: /etc/init.d/named

PIDFILE=/var/named/chroot/var/run/named/named.pid

9. システムログの設定

rsyslog にログを出力するよう設定を編集する。(ファイル新規作成)

File: /etc/rsyslog.d/bind-chroot.conf

$AddUnixListenSocket /var/named/chroot/dev/log

10. syslogd の再起動

システムログ設定を編集したので、syslogd を再起動する。

# systemctl restart rsyslog

11. AppArmor の設定

File: /etc/apparmor.d/local/usr.sbin.named

/var/named/chroot/**            rwm,

そして、変更を適用。

# systemctl reload apparmor

12. BIND の起動

停止させていた BIND を起動する。

# systemctl start named

参考サイト


以上。





 

Sponsored Link

 

Comments