Instalação do bind em chroot.
Versão utilizada neste exemplo: bind-9.9.2-P1
Site do bind: https://www.isc.org/software/bind
- Instalação do bind:
<br />
cd /root<br />
mkdir /root/progs<br />
cd /root/progs<br />
wget http://ftp.isc.org/isc/bind9/9.9.2-P1/bind-9.9.2-P1.tar.gz<br />
tar \-zxvf bind-9.9.2-P1.tar.gz<br />
2.1. Se precisar de um novo OpenSSL:
<br />
cd /root/progs<br />
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz<br />
tar \-zxvf openssl-1.0.1c.tar.gz<br />
cd openssl-1.0.1c<br />
./config \--prefix=/usr/local/exemplo/openssl-1.0.1c<br />
make<br />
make install<br />
ln \-s /usr/local/exemplo/openssl-1.0.1c /opt/openssl<br />
cd /root/progs/bind-9.9.2-P1<br />
./configure \--prefix=/usr/local/exemplo/bind-9.9.2-P1 \--enable-threads \--enable-largefile \--with-openssl=/opt/openssl/<br />
2.2. Se não:
<br />
cd /root/progs/bind-9.9.2-P1<br />
./configure \--prefix=/usr/local/exemplo/bind-9.9.2-P1 \--enable-threads \--enable-largefile \--with-openssl<br />
make<br />
make install<br />
ln \-s /usr/local/exemplo/bind-9.9.2-P1 /opt/bind<br />
- Cria grupo:
<br />
groupadd -g 220 namedg<br />
- Cria usuário:
<br />
useradd -u 220 -g 220 namedu<br />
id namedu<br />
- Locka a senha do usuário namedu:
<br />
passwd -l namedu<br />
- Remove usuário named previamente existente:
<br />
userdel named<br />
- Cria estrutura de diretórios:
<br />
rm -rf /var/run/named<br />
rm -rf /var/log/named<br />
rm -f /etc/named.conf<br />
rm -f /etc/rndc.conf<br />
mkdir -p /var/chroot/named<br />
cd /var/chroot/named/<br />
ln -s /var/chroot /chroot<br />
mkdir dev etc<br />
mkdir -p var/run/named<br />
mkdir -p var/log/named<br />
ln -s /var/chroot/named/var/log/named /var/log/named<br />
mkdir conf<br />
ln -s /var/chroot/named/var/run/named /var/run/named<br />
- Cria os devices especiais:
<br />
mknod dev/null c 1 3<br />
mknod dev/zero c 1 5<br />
mknod dev/random c 1 8<br />
- Copia localtime:
<br />
cp /etc/localtime etc/<br />
- Cria link do named.conf no /etc:
<br />
touch etc/named.conf<br />
ln -s /var/chroot/named/etc/named.conf /etc/named.conf<br />
- Cria arquivo de root-servers:
<br />
dig +tcp @a.root-servers.net . ns > /var/chroot/named/conf/db.rootcache<br />
- Acerta permissões:
<br />
cd /var/chroot/named/<br />
chown -R root:namedg .<br />
find . -type f -print | xargs chmod u=rw,og=r<br />
find . -type d -print | xargs chmod u=rwx,og=rx<br />
chmod u=rwx,og=x var/<br />
chown root:namedg conf/<br />
chmod ug=rwx,o= conf/<br />
cd conf/<br />
chown root:namedg /var/chroot/named/var/log/named/<br />
chmod ug=rwx,o=rx /var/chroot/named/var/log/named/<br />
13.1. Se for externo master:
<br />
mkdir -p external/master<br />
13.2. Se for externo slave:
<br />
mkdir -p external/slave<br />
13.3. Se for interno master:
<br />
mkdir -p internal/master<br />
13.4. Se for interno slave:
<br />
mkdir -p internal/slave<br />
- Cria link no /var:
<br />
ln \-s /var/chroot/named/conf /var/named<br />
- Coloque seu named.conf em /chroot/named/etc substituindo o named.conf com tamanho 0 que criamos com o comando touch.
Você deve pegar esse arquivo de uma outra instalação prévia ou então, caso seja uma instalação feita do zero, copiar começar um named.conf novo.
<br />
cd /var/chroot/named/etc/<br />
chown root:namedg named.conf<br />
- Criar chaves:
<br />
cd /var/chroot/named/etc/<br />
/opt/bind/sbin/dnssec-keygen \-a HMAC-MD5 \-b 256 \-n HOST rndc<br />
Pegue o nome dos arquivos gerados por esse comando. Neste exemplo usaremos Krndc.+157+19942.key e Krndc.+157+19942.private.
<br />
[root@exemplo003005 etc]# ll<br />
total 16<br />
-rw------- 1 root root 68 Dec 20 10:17 Krndc.+157+64533.key<br />
-rw------- 1 root root 185 Dec 20 10:17 Krndc.+157+64533.private<br />
-rw-r--r-- 1 root namedg 172 Dec 20 08:32 localtime<br />
-rw-r--r-- 1 root namedg 0 Dec 20 08:33 named.conf<br />
[root@exemplo003005 etc]#<br />
Usando o arquivo Krndc.+157+64533.private vamos ver seu conteúdo:
<br />
[root@exemplo003005 etc]# cat Krndc.+157+64533.private<br />
Private-key-format: v1.3<br />
Algorithm: 157 (HMAC_MD5)<br />
Key: sd81VxtgcC924U82zxl5uFw6NPzi4YsHZwQ5i/0XyOQ=<br />
Bits: AAA=<br />
Created: 20121220121701<br />
Publish: 20121220121701<br />
Activate: 20121220121701<br />
[root@exemplo003005 etc]#<br />
Vamos usar a informação que se encontra no campo Key e criar o arquivo rndc.conf:
`
[root@exemplo003005 etc]# vim rndc.conf</p>
#
# /chroot/named/etc/rndc.conf
#
options {
default-server 127.0.0.1;
default-key "rndckey";
};
server 127.0.0.1 {
key "rndckey";
};
key "rndckey" {
algorithm "hmac-md5";
secret "sd81VztgcC914U82zxl5UFW6NPzi5YIHZwQ5i/0XyOQ=";
};
`
Observe que colocamos a informação da Key neste arquivo.
17. Criar link para o rndc.conf
`
ln -s /var/chroot/named/etc/rndc.conf /etc/rndc.conf`
ln -s /var/chroot/named/etc/rndc.conf /usr/local/exemplo/bind-9.9.2-P1/etc/rndc.conf
</code>
18. Agora vamos adicionar a informação do rndc no início do arquivo /var/chroot/named/etc/named.conf:
`
# -- start rndc configuration --#
key "rndc-key" {
algorithm hmac-md5;
secret "sd81VztgcC914U82zxl5UFW6NPzi5YIHZwQ5i/0XyOQ=";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# -- end rndc configuration --#
`
19.1. Colocando o named para iniciar no boot
`
cd /etc/init.d/`
mv named named.orig
</code>
19.2. Pegue o script de inicialização aqui e copie para este servidor
19.3. Copie para o /etc/init.d:
`
cp -pd /tmp/named /etc/init.d/`
chmod 755 /etc/init.d/named
chown root:root /etc/init.d/named
</code>
19.4. Acertos finais
`
cd /usr/sbin/
mv named named.org
mv rndc rndc.org
ln -s /opt/bind/sbin/rndc
ln -s /opt/bind/sbin/named
chown -R namedu:namedg /var/chroot/named/conf/
`
19.5. Acertando o boot:
`
ln -s /etc/init.d/named /etc/rc.d/rc2.d/S87named
ln -s /etc/init.d/named /etc/rc.d/rc3.d/S87named
ln -s /etc/init.d/named /etc/rc.d/rc0.d/K87named
ln -s /etc/init.d/named /etc/rc.d/rc1.d/K87named
ln -s /etc/init.d/named /etc/rc.d/rc2.d/K87named
ln -s /etc/init.d/named /etc/rc.d/rc3.d/K87named
ln -s /etc/init.d/named /etc/rc.d/rc4.d/K87named
ln -s /etc/init.d/named /etc/rc.d/rc5.d/K87named
ln -s /etc/init.d/named /etc/rc.d/rc6.d/K87named
`
20.1. Para verificar se as configurações funcionaram e se os binários são encontrados.Rode o comando:
`
/etc/init.d/named status
`
20.2. Como o named está parado, o resultado do comando será:
`
[root@exemplo003005 init.d]# /etc/init.d/named status
rndc: neither /usr/local/exemplo/bind-9.9.2-P1/etc/rndc.conf nor /usr/local/exemplo/bind-9.9.2-P1/etc/rndc.key was found
named is stopped
[root@exemplo003005 init.d]#
`
21. Editar
o aquivo /etc/sysconfig/named para indicar o diretório do chroot do named:
`
vim /etc/sysconfig/named
ROOTDIR=/chroot/named
OPTIONS="-u namedu -c /etc/named.conf"
`
Obs: Em anexo um pdf com algumas informações extras de como montar um named chrooted.