Concluindo, outra medida saudável de segurança é fazer com que o Bind rode em um chroot, sem acesso aos arquivos do sistema. Com isso, ele tem acesso apenas aos seus próprios arquivos de configuração e outras funções necessárias para seu trabalho, limitando os danos que podem ser causados por eventuais brechas de segurança.
Para ativar o uso do chroot, é necessário fazer uma série de mudanças, recriando a estrutura de arquivos utilizada pelo Bind dentro do diretório “/var/lib/named” e reconfigurar o Bind para trabalhar dentro do diretório.
Esta receita é destinada ao Debian Etch (e também no Debian Sarge) ao utilizar o pacote “bind9”, mas a configuração em outras distribuições é bastante similar. Uma pesquisa por “bind9 chroot” mais o nome da distribuição costuma levar aos passos necessários.
O primeiro passo é desativar temporariamente o serviço:
Em seguida, edite o arquivo “/etc/default/bind9“, substituindo a linha
por:
Essa alteração orienta o Bind a rodar em modo chroot, dentro do diretório especificado. Falta agora preparar o diretório, criando as pastas e os devices utilizados pelo Bind:
# mkdir /var/lib/named/dev
# mkdir -p /var/lib/named/var/cache/bind
# mkdir -p /var/lib/named/var/run/bind/run
# mknod /var/lib/named/dev/random c 1 8
# chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
Um passo importante é ajustar as permissões da pasta ” /var/lib/named/var/”, de forma que o usuário “bind”, usado pelo servidor tenha permissão para alterar os arquivos:
Em seguida, migramos os arquivos de configuração, concentrados na pasta “/etc/bind”, para a pasta correspondente dentro do chroot, deixando um link para ela no local original (evitando assim problemas futuros ao atualizar o pacote). Assim como no passo anterior, é necessário acertar as permissões de acesso, de forma que o diretório seja propriedade do usuário usado pelo Bind:
# ln -s /var/lib/named/etc/bind /etc/bind
# chown -R bind:bind /var/lib/named/etc/bind
Uma última alteração é feita no arquivo “/etc/default/syslogd“, de forma que o daemon sysklogd continue gerando os logs do Bind, apesar das alterações.
Dentro do arquivo, substitua a linha:
por:
Concluindo, reinicie os serviços para que as alterações entrem em vigor:
# /etc/init.d/bind9 restart
Você pode verificar se o servidor está realmente funcionando usando o comando “rndc status”. Ele deverá retornar algo similar a:
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running
Se, por outro lado, você receber um erro como:
… verifique a cópia dos arquivos de configuração do diretório “/etc/bind” e os demais passos na configuração do chroot e reinicie o Bind novamente.
Concluindo, é importante reforçar que, ao ativar o chroot, todos os arquivos de configuração devem ser incluídos dentro das pastas criadas. O arquivo “/etc/bind/named.conf.local” passa a ser o “/var/lib/named/etc/bind/named.conf.local” e assim por diante.
O mesmo se aplica à configuração das zonas, cujos arquivos também devem ser criados dentro da pasta “/var/lib/named/etc/bind/”, ou outra dentro do chroot, como em “/var/lib/named/etc/bind/db.dominio”.
Apesar disso, a configuração dentro dos arquivos não muda. Ao adicionar uma nova zona no arquivo named.conf, ou named.conf.local, você continua especificando a localização dos arquivos como se nada tivesse sido alterado. Em vez de usar algo como file “/var/lib/named/etc/bind/db.gdhn”, você continua usando file “/etc/bind/db.gdhn”, como no exemplo:
type master;
file “/etc/bind/db.gdhn”;
};
Isso acontece porque, dentro do chroot, a pasta “/var/lib/named/” é vista pelo Bind como sendo o diretório raiz, já que a idéia é justamente que ele não tenha acesso às demais pastas do sistema. Com isso, a pasta “/var/lib/named/etc/bind/” é vista por ele como apenas “/etc/bind”.
Deixe seu comentário