Tutorial: Enjaulando Bind9 (DNS) com Chroot

Tutorial: Enjaulando Bind9 (DNS) com Chroot

O DNS está entre os principais alvos de ataque hacker, conseguir hackear um DNS pode ser a porta de entrada para diversos ataques de outras naturezas no mesmo servidor que hospeda o serviço.
Este tutorial explica como configurar o BIND em uma “jaula”, quando executado com este método, o processo BIND é incapaz de ver qualquer parte do sistema de arquivos fora da cadeia do processo. Aos olhos do BIND, o conteúdo do diretório enjaulado parecerá / ou o diretório raiz. Todas as coisas fora desse diretório não possuirão acesso. Também será configurado para não ser executado com usuário root, para evitar que o invasor possua os poderes deste usuário.

Instalação

Realize a instalação do pacote, caso não esteja instalado:

apt-get install bind9

Por razões de segurança queremos executar DNS enjaulado, por isso temos de fazer as seguintes configurações:

/etc/init.d/bind9 stop

Edite o arquivo /etc/default/bind9 para que o daemon seja executado como o vínculo do usuário sem privilégios em /var/lib/named. Modificar a linha: OPTIONS=”-u bind” para que seja OPTIONS=”-u bind -t /var/lib/named”:

vim /etc/default/bind9

# run resolvconf?
RESOLVCONF=yes

# startup options for the server
OPTIONS="-u bind -t /var/lib/named"

Crie os diretórios necessários para guardar no /var/lib:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Em seguida, mova o diretório de configuração do /etc para /var/lib/named/etc:

mv /etc/bind /var/lib/named/etc

Criar um link simbólico para o novo diretório de configuração do local antigo (para evitar problemas ao BIND é atualizado no futuro):

ln -s /var/lib/named/etc/bind /etc/bind

Faça dispositivos nulos e aleatórios e permissões de correção dos diretórios:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Precisamos criar o arquivo /etc/rsyslog.d/bind-chroot.conf:

vim /etc/rsyslog.d/bind-chroot.conf

Com a seguinte linha de modo que nós ainda pode obter mensagens importantes registrados nos logs de sistema:

$AddUnixListenSocket /var/lib/named/dev/log

Reinicie o daemon:

/etc/init.d/rsyslog restart

Inicie BIND e verifique /var/log/syslog para visualizar erros:

/etc/init.d/bind9 start

Pronto, após realizar essas configurações, você terá um DNS enjaulado e seguro.

Jean Oliveira

Mais de 7 anos de experiência em suporte e administração de redes e servidores. Formado em Redes de Computadores pela Uninove em 2014. Experiência em Windows Server, Hyper-v, VMWare, pfSense, Veeam Backup e Office 365. Profissional dinâmico, comprometido, proativo e diligente. Atualmente trabalha na Solve System Informática, autor do blog friendsti.com.br onde escreve sobre diversos assuntos relacionados a Tecnologia da Informação.

Related Posts
Leave a reply
Captcha Click on image to update the captcha .