Configurando BIND 9 + chroot sem mistérios
Cansado de procurar como fazer uma coisa tão baba como esta e não encontrar? Acabou seu martírio, este artigo ensina como fazer configurar seu servidor DNS.
Parte 6: Verificando as permissões dentro da gaiola
Agora que nós já criamos os arquivos necessários dentro da gaiola,
precisamos garantir que as permissões de acesso e os donos dos
arquivos estejam acertados para perfeito funcionamento dentro da gaiola.
É possível fazer isto na mão, mas imagine: cada vez que você alterar
alguma coisa vai ter que checar tudo de novo. Se esquecer apenas uma coisa,
todo esforco irá pelo ralo.
Por causa disso, normalmente criamos um arquivo que contém as regras de permissões na raiz em /chroot para cada gaiola que criamos, assim fica menos fácil de errar alguma coisa. Em nosso caso, chamaremos o arquivo de named.perms e o colocaremos em /chroot.
Abaixo uma listagem com os comandos para manter nossa gaiola em dia.
Por causa disso, normalmente criamos um arquivo que contém as regras de permissões na raiz em /chroot para cada gaiola que criamos, assim fica menos fácil de errar alguma coisa. Em nosso caso, chamaremos o arquivo de named.perms e o colocaremos em /chroot.
Abaixo uma listagem com os comandos para manter nossa gaiola em dia.
#
# named.perms
#
# Configura os donos e as devidas permissões dentro do diretório named
#
cd /chroot/named
# Por padrão, root é o dono de tudo e apenas ele pode gravar, mas os diretórios
# tem execução para todos. Note que algumas plataformas usam como
# marcador/separador um ponto entre usuário/grupo nos parâmetros do chown}
chown -R root.named .
find . -type f -print | xargs chmod u=rw,og=r # regular files
find . -type d -print | xargs chmod u=rwx,og=rx # directories
# os arquivos named.conf e rndc.conf precisam ter suas chaves protegidas
chmod o= etc/*.conf
# o diretório secondaries cria arquivos dinamicamente a partir dos
# servidores de DNS Master e o daemon named precisa de poderes para gravar ali
# afim de criar os arquivos das zonas.
touch conf/secondaries/.empty # placeholder
find conf/secondaries/ -type f -print | xargs chown named.named
find conf/secondaries/ -type f -print | xargs chmod ug=r,o=
chown root.named conf/secondaries/
chmod ug=rwx,o= conf/secondaries/
# Garante que a criação do arquivo de PID em var/run seja efetivado
chown root.root var/
chmod u=rwx,og=x var/
chown root.named var/run/
chmod ug=rwx,o=rx var/run/
# Permite que o daemon named crie sossegado seus arquivos de log.
chown root.named logs/
chmod ug=rwx,o=rx logs/
# named.perms
#
# Configura os donos e as devidas permissões dentro do diretório named
#
cd /chroot/named
# Por padrão, root é o dono de tudo e apenas ele pode gravar, mas os diretórios
# tem execução para todos. Note que algumas plataformas usam como
# marcador/separador um ponto entre usuário/grupo nos parâmetros do chown}
chown -R root.named .
find . -type f -print | xargs chmod u=rw,og=r # regular files
find . -type d -print | xargs chmod u=rwx,og=rx # directories
# os arquivos named.conf e rndc.conf precisam ter suas chaves protegidas
chmod o= etc/*.conf
# o diretório secondaries cria arquivos dinamicamente a partir dos
# servidores de DNS Master e o daemon named precisa de poderes para gravar ali
# afim de criar os arquivos das zonas.
touch conf/secondaries/.empty # placeholder
find conf/secondaries/ -type f -print | xargs chown named.named
find conf/secondaries/ -type f -print | xargs chmod ug=r,o=
chown root.named conf/secondaries/
chmod ug=rwx,o= conf/secondaries/
# Garante que a criação do arquivo de PID em var/run seja efetivado
chown root.root var/
chmod u=rwx,og=x var/
chown root.named var/run/
chmod ug=rwx,o=rx var/run/
# Permite que o daemon named crie sossegado seus arquivos de log.
chown root.named logs/
chmod ug=rwx,o=rx logs/
Após gravar os arquivo, você deve executá-lo com a seguinte linha de comando:
sh -x /chroot/named.perms
A saída vai se parecer com isso :
+ cd /chroot/named
+ chown -R root.named .
+ find . -type f -print
+ xargs chmod u=rw,og=r
+ find . -type d -print
+ xargs chmod u=rwx,og=rx
+ chmod o= etc/named.conf etc/rndc.conf
+ touch conf/secondaries/.empty
+ find conf/secondaries/ -type f -print
+ xargs chown named.named
+ find conf/secondaries/ -type f -print
+ xargs chmod ug=r,o=
+ chown root.named conf/secondaries/
+ chmod ug=rwx,o= conf/secondaries/
+ chown root.root var/
+ chmod u=rwx,og=x var/
+ chown root.named var/run/
+ chmod ug=rwx,o=rx var/run/
Algumas considerações podem ser importantes:
- Nós não estamos limpando os diretórios etc/ e conf/ pois acreditamos que fazer isso manualmente contribui para que você mantenha seu sistema mais seguro já que cada arquivo nestes diretórios merecem uma atenção especial.
- O diretório conf/secondaries recebe arquivos gerados a partir
do servidor de DNS MASTER e será constantemente alterado
dinamicamente. Por isso ele possui direitos de gravação.
Agora o mais importante é que o nameserver não possa ter modificados seus arquivos master, pois se alguma vulnerabilidade existir com relação ao bind isto poderá ser FATAL! - Em etc/named.conf e etc/rndc.conf estão o segredo do servidor bind. É imprescindível que estes arquivos não possam ser alterados remotamente.