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

  1. 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 />

  1. Cria grupo:

<br /> groupadd -g 220 namedg<br />

  1. Cria usuário:

<br /> useradd -u 220 -g 220 namedu<br /> id namedu<br />

  1. Locka a senha do usuário namedu:

<br /> passwd -l namedu<br />

  1. Remove usuário named previamente existente:

<br /> userdel named<br />

  1. 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 />

  1. 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 />

  1. Copia localtime:

<br /> cp /etc/localtime etc/<br />

  1. 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 />

  1. Cria arquivo de root-servers:

<br /> dig +tcp @a.root-servers.net . ns > /var/chroot/named/conf/db.rootcache<br />

  1. 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 />

  1. Cria link no /var:

<br /> ln \-s /var/chroot/named/conf /var/named<br />

  1. 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 />

  1. 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.