Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Aprenda inglês de uma vez por todas

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Problemas com AppArmor e Bind 9

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 07 de setembro de 2011

Recentemente eu tive que mudar a Dicas-L de servidor três vezes. Na última vez em que migrei, optei pela versão 11.05 do Ubuntu. Tudo funcionando, todas as páginas em ordem, serviços, etc. Ao menos era o que eu pensava. No mesmo servidor em que a Dicas-l está hospedada, eu mantenho um servidor DNS secundário. Qual foi minha surpresa ao ver que ele tinha parado de funcionar.

Ao emitir o comando dmesg, recebo dezenas de mensagens como abaixo:

  [1489102.871184] type=1400 audit(1315244843.987:3490):
  apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/named"
  name="/etc/bind/sec/tmp-ImXVqwHRNT" pid=12185 comm="named" requested_mask="c"
  denied_mask="c" fsuid=104 ouid=104

Nunca havia visto algo do tipo. Claramente, é um problema de permissão. Alterei as permissões do diretório em que armazeno os dados do serviço bind mas mesmo assim o problema continuava.

O causador do problema, AppArmor, ou Application Armor, é um módulo de segurança para o kernel do Linux. Segundo a definição da Wikipedia, em tradução livre:

AppArmor ("Application Armor") é um módulo de segurança do kernel do Linux, distribuído sobre a licença GPL (GNU General Public License). De 2005 a setembro de 2007, o AppArmor foi mantido pela Novell. AppArmor permite que o administrador de sistemas associe a cada programa um perfil de segurança que restringe os seus recursos. (...)

Além de adicionar perfis manualmente, o AppArmor inclui um módulo de aprendizado, nos quais violações do perfil são registradas, mas não impedidas. Este log, por sua vez, pode ser transformado em um perfil, baseado no comportamento típico do programa.

No meu caso, como eu fiz migração de todo o servidor entre versões diferentes do sistema operacional, fiquei de repente com um serviço de resolução de nomes inoperante, e o pior, sem saber a razão da falha.

Existem vários documentos na Web ensinando a lidar com o problema, mas a solução definitiva veio ao ler o texto BIND9, AppArmor and WOE!, de autoria de Pokeyoats (???).

O texto a seguir é a tradução adaptada do post citado acima.


Se você já sabe disto, então minhas desculpas, mas eu só queria publicar algo com algumas strings de busca bem claras caso algum pobre idiota (como eu) de repente se encontrar com um bind9 inoperante após um upgrade do Ubuntu.

Se você está usando Ubuntu versão 9.1, instalou o Bind 9 com o kernel nível 2.6.31-14 a 2.6.31-17, conseguiu colocá-lo para funcionar perfeitamente como mestre ou escravo, e de repente começou a receber mensagens do tipo SERVFAILs, o culpado é o AppArmor.

Eu espero que você, como eu, batalhou para resolver este problema e chegou aqui por não ter encontrado uma solução documentada.

Aqui estão alguns dos erros que você terá se o AppArmor estiver interferindo:

  dumping master file: /etc/bind/zones (or other directory)/tmp-FDGDSFDS open: permission denied
  refresh: could not set file modification time of '/etc/bind/XXXXX': permisison denied
  failed while receiving responses: permission denied
  kernel: [ 61.952539] type=1503 audit(1268157790.971:34): operation="mknod"
  pid=960 parent=1 profile="/usr/sbin/named" requested_mask="w::"
  denied_mask="w::" fsuid=114 ouid=114 name="/etc/bind/zones/tmp-9wPWFDSJ"

Todos estes problemas são causados pelo AppArmor. Aqui estão as suas opções. Você pode saber mais sobre AppArmor visitando o link https://help.ubuntu.com/8.04/serverguide/C/apparmor.html

OU então, se você quiser que o Bind 9 comece a funcionar imediatamente, vá até o diretório /etc/apparmor.d e estude o arquivo usr.sbin.named.

Desative o AppArmor com o comando:

  [as root]: aa-complain usr.sbin.named
  [as user]: sudo aa-complain usr.sbin.named

E em seguida, reative o serviço Bind9:

  /etc/init.d/bind9 start (restart, etc)

e o Bind 9 irá começar a funcionar.

Basicamente, você precisa desabilitar as regras do AppArmor ou então o seu serviço Bind 9 não funcionará (no meu caso eu coloquei as minhas zonas em /etc/bind/zones - que crime!!!)


Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.96/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (639 votos)

Opinião dos Leitores

Marco
10 Set 2011, 09:22
Uma coisa que me irrita são os inúmeros tutoriais ensinando a desligar o AppArmor só para que o tutorial favorito de configuração do Bind possa ser seguido ao pé da letra.
Alterar as configurações do AppArmor também é algo que não se deve fazer.
Sugiro que que se faça o que segue a configuração original do AppArmor e se coloque os arquivos no local já reservado para eles: /var/cache/bind/
É muito mais fácil, rápido, lógico e seguro.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Guia Manga Universo