Sniffing de conexiones del vsftpd
Instalar un servidor FTP con vsftpd no tiene ningún misterio, pero cuando hemos cometido algún tipo de error en la configuración e intentamos acceder a nuestro servidor usando un cliente tipo Filezilla y no conseguimos conectarnos, nos podemos volver locos, sobre todo si no aparece ningún tipo de mensaje de error ni en el fichero de logs del vsftpd, ni en /var/log/messages, ni en ningún otro fichero de log.
La semana pasada estuvimos en mi empresa instalando un nuevo servidor vsftpd en una máquina y al conectarnos con FileZilla recibiamos este error:
GnuTLS error -8: A record packet with illegal version was received |
Si alguna vez te encuentras con este mensaje veras que no aparece ningún error en ningún fichero de log. Desde hace mucho tiempo se le ha indicado a los desarrolladores de vsftpd un bug por el cual muchos errores no aparecen en los logs y son volcados en el stream de datos de la conexión TCP, lo que hace que no aparezcan en el log de errores de nuestro cliente FTP.
La única manera de solucionar esto es realizando un sniffing de la conexión con wireshark. Cuando realicé un seguimiento de los datos que se estaban comunicando vía TPC, por fin encontré el error. Bastante sencillo de solucionar, si por supuesto hubiera aparecido el error en los ficheros de logs del vsftpd:
4.085525 xx.xx.xx.44 -> xx.xxx.xx.xx FTP Response: 500 OOPS: 4.085538 xx.xx.xx.44 -> xx.xxx.xx.xx FTP Response: cannot change directory:/var/www/usuario_ftp |
Un consejo, recomiendo deshabilitar temporalmente la encriptación del vsftpd, para poder ver los mensajes de error mientras utilizamos wireshark.
Si os encontrais como fue nuestro caso con que estais trabajando en una consola, y no podéis tener acceso a un terminal visual (a las “x”), podéis usar tshark (terminal shark):
tshark -i eth1 > /tmp/fichero_logs_conexión_ftp |
Solo tendréis que lanzar el anterior comando antes de establecer la conexión con Filezilla. Mientras os conecteis se irán almacenando todos los errores en el fichero de logs que indiqueis.