Las cargas TFTP fallan

Las cargas TFTP fallan

Estoy ejecutando TFTPD vía xinetd en un servidor Centos 5.4. Puedo acceder bien a los archivos a través de tftp, así que sé que el servicio está funcionando bien. Sin embargo, cada vez que intento cargar un archivo aparece un mensaje 0 Permiso denegado.

Ya creé el archivo en /tftpboot y configuré los permisos en 666.

Mi configuración tftpd tiene un registro detallado (-vvvv), pero todo lo que veo en mi /var/log/messages es:

INICIO: tftp pid=20383 desde=192.168.77.4

He visto algunas menciones de que SELinux puede evitar las cargas TFTPD, pero esperaría ver algo en los registros. Tengo SELinux configurado en modo permisivo.

¿Algunas ideas?

Respuesta1

Seguí la información enhttp://grimwell.wikispaces.com/tftpd, prestando especial atención a "enjuagar y repetir" para implementar las políticas de Selinux. Después de algunos intentos, todo empezó a funcionar: carga y creación de nuevos archivos.

En breve:

  • asegúrese de tener la auditoría instalada en centos, de lo contrario, es posible que SELinux no registre nada.
  • asegúrese de que su xinetd.d/tftpd esté -c -v -s /tftpbooten la línea de argumentos del servidor
  • asegúrese de que el directorio en el que escribirá tftp tenga 777 permisos
  • haga un tftp localhost e intente colocar un archivo en el directorio
  • toque un archivo en el directorio, chmod 666 y luego a través de tftp localhost, intente sobrescribir el archivo
  • hacer grep tftp /var/log/audit/audit.log | audit2allow -m tftpwritepara crear una política selinux. Asegúrese de que la política incluya líneas de escritura y creación. De lo contrario, intente escribir y crear nuevamente para generar alertas en el registro de auditoría e inténtelo nuevamente.
  • cree una política instalable usando grep tftp /var/log/audit/audit.log | audit2allow -M tftpwritey luego instálela usandosemodule -i tftpwrite.pp
  • service xinetd reloade intente usar tftp.

Espléndido. ¡Espero que otros encuentren esto útil!

Respuesta2

Encontré otra solución mejor a este problema. No podía creer que las personas que escribieron los archivos de políticas de Selinux no pensaran que la gente necesitaría cargas tftp, así que investigué un poco. No pude encontrar nada en Internet que no esté mencionado aquí, pero al buscar en la política de Selinux pude encontrar otro contexto de seguridad que ya está en el sistema para escrituras tftp. Cambiar el contexto de /tftpboot solucionó el 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         ..

Respuesta3

¿Estás iniciando tftpd con la opción -s? Algunos clientes pueden estar esperando esto, por ejemplo, cargar un archivo llamado fooque /foorealmente está destinado /tftpboot/fooal servidor. Agregar -s /tftpbootesencialmente le dice al servidor que haga un "chroot" en ese directorio.

Intente ejecutar tftpd manualmente, por ejemplo, no mediante xinetd, y vea cuál es el resultado. También puede intentar ejecutarlo para stracever exactamente qué archivos intenta abrir y qué llamadas a sistemas está realizando.

Verifique dos veces /etc/hosts.allowy /etc/hosts.denyasegúrese de que se permita el tráfico en el servidor.

Con respecto a SELinux, dependiendo de cómo esté configurado su sistema, es posible que esté iniciando sesión /var/log/audit/audit.logsi ha habilitado auditd. Ver la sección 5 deesta página.

información relacionada