BIND
BINDを触ってみる。
そもそもBINDとは
BINDとはLinuxで使用されている有名なDNSサーバ。
権威サーバとしての機能とキャッシュサーバとしての機能を持っている。
またchrootで実行でき、セキュリティに配慮されている。
その他、DNSsecなどのセキュリティ関連機能も使用できる。
DNSとは
DomainNameSystemの略。
Domain名とIPアドレスの相互変換をするためのもの。
これのおかげで各Webサイトにアクセスするときなどにわかりにくくまた、変更される可能性があるIPアドレスを用いずにアクセスできている。
BINDのインストール
BINDは有名なので各種パッケージシステムから直接インストールできる。
CentOS7
yum install bind bind-chroot bind-utils
Debian8
apt-get install bind9 dnsutils
なお、bind-utilsやdnsutilsは必須ではないが、ないとdigやnslookupなどの確認コマンドが使用できない。
chroot
セキュリティのことを考えると外部に公開するサービスはchrootで利用したい。
BINDはchrootに対応しているため、各種設定を行うことでchroot環境にて使用できる。
ここではchroot先として/var/named/chroot/を想定している。
CentOS7は bind-chrootというchrootにするためのパッケージが用意されているのでお手軽です。
debianについてはBind9 - Debian Wikiにやり方が記載されています。
CentOS7
/usr/libexec/setup-named-chroot.sh /var/named/chroot/ on
Debian8
- /lib/systemd/system/bind9.service を編集する。
ExecStart=/usr/sbin/named -f -u bind -t /var/named/chroot/
と -t に続けてchroot先を指定するとchrootで動かせる。
systemctl daemon-reload
にて変更を有効化する。 - chroot環境の作成
mkdir -p /var/named/chroot/{etc,dev,var/cache/bind,/var/run/named}
にて必要なディレクトリを作成する。mknod /var/named/chroot/dev/null c 1 3
mknod /var/named/chroot/dev/random c 1 8
chmod 600 /var/named/chroot/dev/{null,random}
にて/dev/nullと/dev/randomを作成する。mv /etc/bind /var/named/chroot/etc
ln -s /var/named/chroot/etc/bind /etc/bind
とbind関連ファイルをchroot環境下へ移動させたあと、元の場所へシンボリックリンクを作成する。syslogなどでタイムゾーン情報が必要であれば
cp /etc/localtime /var/named/chroot/etc/
のようにタイムゾーン情報をchroot環境へコピーする。chown -R bind:bind /etc/bind/*
chmod 775 /var/named/chroot/var/{cache/bind,run/named}
chgrp bind /var/named/chroot/var/{cache/bind,run/named}
にて各種ファイルの所有者情報やパーミッションを変更する。最後に、必要があればsyslog設定を変更する。
echo #\$AddUnixListenSocket /var/named/chroot/dev/log > /etc/rsyslog.d/bind-chroot.conf