¿Por qué el chroot_local_user de vsftpd es inseguro?

20

Estoy configurando en mi VPS un vsftpd, y no quiero que los usuarios puedan abandonar su directorio de inicio ftp. Estoy usando ftp local_user, no anónimo, así que agregué:

chroot_local_user = YES

He leído en muchas publicaciones del foro que esto no es seguro.

  1. ¿Por qué esto no es seguro?
  2. Si esto no es seguro debido al uso de ssh para unirse a mi VPS también, entonces podría bloquear a estos usuarios de sshd, ¿verdad?
  3. ¿Hay alguna otra opción para lograr este comportamiento de vsftpd? (No quiero eliminar los permisos de lectura en todas las carpetas / archivos para "mundo" en mi sistema)
p1100i
fuente

Respuestas:

20

Consulte aquí las preguntas frecuentes de VSFTPD para obtener la respuesta que busca. A continuación se muestra el extracto importante que creo que responderá a su pregunta.

Q) Ayuda! ¿Cuáles son las implicaciones de seguridad mencionadas en la opción "chroot_local_user"?

A) En primer lugar, tenga en cuenta que otros demonios ftp tienen las mismas implicaciones. Es un problema genérico. El problema no es demasiado grave, pero es el siguiente: algunas personas tienen cuentas de usuario FTP en las que no se confía para tener acceso completo al shell. Si estas cuentas también pueden cargar archivos, existe un pequeño riesgo. Un usuario malo ahora tiene el control de la raíz del sistema de archivos, que es su directorio de inicio. El demonio ftp puede hacer que se lea algún archivo de configuración, por ejemplo, / etc / some_file. Con chroot (), este archivo está ahora bajo el control del usuario. vsftpd tiene cuidado en esta área. Pero, la libc del sistema puede querer abrir archivos de configuración regional u otras configuraciones ...

Nic Young
fuente
Gracias por eso, yo no sabía todo eso. ¡Aprendí algo! +1
Yanick Girouard
44
En realidad, vine aquí después de leer las preguntas frecuentes porque no entiendo esta declaración preocupante: "El demonio ftp podría hacer que se lea algún archivo de configuración, por ejemplo / etc / some_file. Con chroot (), este archivo ahora está bajo el control de el usuario.". Presumiblemente, ¿este solo sería el caso si vsftpdtuviera una falla de seguridad (desbordamiento de búfer)? ¿De qué manera la ejecución vsftpdcon usuarios conectados a su directorio principal hace que este escenario sea más probable? Por favor explique ...
sxc731
4

El problema es que no puedes usar cuentas locales y también deshabilitar esas cuentas desde el inicio de sesión de shell. Si configura su shell de inicio de sesión en / bin / nologin, tampoco le permitirá iniciar sesión con vsftpd.

Un demonio FTP mejor y más seguro sería Pure-ftpd. Búscalo, está disponible en el repositorio EPEL y permite crear usuarios virtuales. El servidor utiliza un usuario / grupo común para establecer todos los permisos para las carpetas de inicio de los usuarios y "asigna" los usuarios virtuales a ese usuario cuando inicia sesión para tratar los permisos. Eso es más seguro y no tiene que lidiar con la seguridad de inicio de sesión de openssh.

Pure-ftpd también es compatible con una gran cantidad de características, como cuotas, proporciones, etc. Mucho mejor que vsftpd.

Aquí hay un tutorial simple sobre cómo instalarlo y configurar un usuario virtual básico: http://blog.namran.net/2011/05/04/how-to-setup-virtual-ftp-server-using-pure-ftpd- en centos /

Si lees el documento completo (que deberías) sabrás que el modificador -d al crear el usuario virtual es un auto-chroot a ese directorio para ese usuario.

Yanick Girouard
fuente
Uso la AllowUsers user1 user2directiva en mi sshd_config, donde no permito que ftp_user1 inicie sesión con ssh, aún así el usuario ftp_user1 puede iniciar sesión con ftp. Entonces funciona como está previsto, pero mi pregunta principal sigue abierta, ¿por qué no es segura?
p1100i
44
¡Sí lo hará! Solo necesita agregar el "no shell" a / etc / shells. En muchos sistemas, / bin / false o / bin / nologin existe en / etc / shells. Si el shell está allí, vsftpd te permitirá iniciar sesión, también con chroot_local_user habilitado.
Frands Hansen
1
Me corrijo entonces. ¡Gracias por mencionarlo!
Yanick Girouard