Uploads TFTP falhando

Uploads TFTP falhando

Estou executando o TFTPD via xinetd em um servidor Centos 5.4. Consigo acessar arquivos via tftp, então sei que o serviço está funcionando bem. No entanto, sempre que tento fazer upload de um arquivo, recebo uma mensagem 0 Permissão negada.

Já criei o arquivo em /tftpboot e configurei as permissões para 666.

Minha configuração do tftpd possui registro detalhado (-vvvv), mas tudo que vejo em meu /var/log/messages é:

INICIAR: tftp pid=20383 de=192.168.77.4

Já vi algumas menções de que o SELinux pode impedir uploads de TFTPD, mas espero ver algo nos logs. Eu tenho o SELinux configurado no modo permissivo.

Alguma ideia?

Responder1

Segui as informações emhttp://grimwell.wikispaces.com/tftpd, prestando atenção especial ao "enxágue e repita" para implementar as políticas do Selinux. Depois de algumas tentativas tudo começou a funcionar - upload e criação de novos arquivos.

Resumidamente:

  • certifique-se de ter a auditoria instalada no centos, caso contrário o SELinux pode não registrar nada!
  • certifique-se de que seu xinetd.d/tftpd esteja -c -v -s /tftpbootna linha server args
  • certifique-se de que o diretório no qual o tftp estará gravando tenha permissões 777
  • faça um tftp localhost e tente colocar um arquivo no diretório
  • toque em um arquivo no diretório, chmod 666 e, em seguida, via tftp localhost, tente substituir o arquivo
  • fazer grep tftp /var/log/audit/audit.log | audit2allow -m tftpwritepara criar uma política selinux. Certifique-se de que a política inclua escrever e criar linhas. Caso contrário, tente escrever e criar novamente para gerar alertas no log de auditoria e tente novamente.
  • crie uma política instalável usando grep tftp /var/log/audit/audit.log | audit2allow -M tftpwritee instale-a usandosemodule -i tftpwrite.pp
  • service xinetd reloade tente usar tftp.

Esplêndido. Espero que outros considerem isso útil!

Responder2

Encontrei outra solução melhor para esse problema. Eu não conseguia acreditar que as pessoas que escreveram os arquivos de política do selinux não achavam que precisariam de uploads tftp, então fiz algumas pesquisas. Não consegui encontrar nada na internet que já não estivesse mencionado aqui, mas pesquisando a política do selinux consegui encontrar outro contexto de segurança já no sistema para gravações tftp. Alterar o contexto de /tftpboot corrigiu o problema.

# sesearch -a | grep tftpdir  |grep tftpd_
   allow tftpd_t tftpdir_t : file { read getattr }; 
   allow tftpd_t tftpdir_t : dir { read getattr search }; 
   allow tftpd_t tftpdir_t : lnk_file { read getattr }; 
   allow tftpd_t tftpdir_rw_t : file { ioctl read write create getattr setattr lock append unlink link rename }; 
   allow tftpd_t tftpdir_rw_t : dir { ioctl read write create getattr setattr lock unlink link rename add_name remove_name reparent search rmdir }; 
   allow tftpd_t tftpdir_rw_t : lnk_file { read create getattr setattr unlink link rename }; 
# ls -Z /tftpboot/ -a
drwxrwxrwx  root root system_u:object_r:tftpdir_t      .
drwxr-xr-x  root root system_u:object_r:root_t         ..
# chcon -t tftpdir_rw_t /tftpboot
# ls -Z /tftpboot/ -a
drwxrwxrwx  root root system_u:object_r:tftpdir_rw_t   .
drwxr-xr-x  root root system_u:object_r:root_t         ..

Responder3

Você está iniciando o tftpd com a opção -s? Alguns clientes podem estar esperando isso, por exemplo, enviar um arquivo chamado fooé /foorealmente destinado /tftpboot/fooao servidor. Adicionar -s /tftpbootessencialmente diz ao servidor para fazer um "chroot" nesse diretório.

Tente executar o tftpd manualmente, por exemplo, não via xinetd, e veja qual é o resultado. Você também pode tentar executá-lo stracepara ver exatamente quais arquivos ele está tentando abrir e quais chamadas de sistema está fazendo.

Verifique novamente /etc/hosts.allowe /etc/hosts.denycertifique-se de que o tráfego está sendo permitido no servidor.

Com relação ao SELinux, dependendo de como o seu sistema está configurado, ele pode estar registrando /var/log/audit/audit.logse você tiver habilitado o auditd. Consulte a seção 5 deesta página.

informação relacionada