vsftpd: 500 OOPS: prctl PR_SET_SECCOMP falló

8

Tengo un problema con vsftpd. Cuando me conecto a mi servidor FTP a través de FileZilla me sale el error:

500 OOPS: prctl PR_SET_SECCOMP falló
Error: error crítico
Error: no se pudo conectar al servidor

También intenté conectarme a través de mi administrador de archivos y parece que no funciona. Puedo conectarme a todos mis otros servidores sin problemas, así que estoy seguro de que es un problema relacionado con el servidor.

Ejecuto Ubuntu 14.04 en un VPSDime VPS. vsftpdversión 3.0.2. El error no ocurrió después de una actualización o cambio en la configuración, pero el error comenzó a ocurrir cuando estaba trabajando en un sitio web; estaba funcionando bien antes de que recibiera el error.

He reiniciado, reiniciado vsftpdy actualizado mi sistema. ¿Algunas ideas?

Xweque
fuente

Respuestas:

17

El mensaje indica que la prctl(PR_SET_SECCOMP, ...)llamada falló.

ret = prctl(PR_SET_SECCOMP, 2, &prog, 0, 0);
if (ret != 0)
{
  die("prctl PR_SET_SECCOMP failed");
}

Puede suceder cuando su núcleo no tiene CONFIG_SECCOMP_FILTERhabilitado. Pero eso difícilmente puede cambiar mientras "trabaja en el sitio web".

Cita de la prctlpágina man :

PR_SET_SECCOMP (desde Linux 2.6.23)

Establezca el modo de computación segura (seccomp) para el hilo de llamada, para limitar las llamadas disponibles del sistema. El modo seccomp se selecciona mediante arg2. (Las constantes seccomp se definen en<linux/seccomp.h>

...

Con arg2set to SECCOMP_MODE_FILTER(since Linux 3.5), las llamadas al sistema permitidas se definen mediante un puntero a un filtro de paquetes Berkeley pasado en arg3. Este argumento es un puntero a struct sock_fprog; se puede diseñar para filtrar llamadas arbitrarias del sistema y argumentos de llamadas del sistema. Este modo solo está disponible si el núcleo está configurado con CONFIG_SECCOMP_FILTERhabilitado.


Como solución alternativa deficiente, puede configurar vsftpd para que no habilite el modo seccomp .

Use la seccomp_sandbox=noopción en el vsftpd.conf.

La opción no parece estar documentada.

Martin Prikryl
fuente
Gracias que funcionó. ¿Sabes si puede haber alguna complicación al hacer esto? ¿Qué es seccomp?
Xweque
Ver en.wikipedia.org/wiki/Seccomp
Martin Prikryl
2
Gracias, funcionó para mí también. Me pregunto por qué de repente tengo este tipo de problema. Estoy usando un servidor virtualizado OVH con Ubuntu 14.04 y el kernel 2.6.32.
Miguel El Merendero
Tuve exactamente el mismo problema, la misma configuración que @MiguelElMerendero, y lo resolvió. ¡Muchas gracias!
Bigood
0

La razón por la cual este error de vfstpd ocurre en algunos núcleos de Linux (más notablemente RHEL / Centos 6.x desde 6.5 en adelante) es la siguiente suposición en las fuentes de vsftpd,

https://github.com/dagwieers/vsftpd/blob/master/seccompsandbox.c#L642


  ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
  if (ret != 0)
  {
    if (errno == EINVAL)
    {
      /* Kernel isn't good enough. */
      return;
    }
    die("prctl PR_SET_NO_NEW_PRIVS");
  }

  if (!tunable_seccomp_sandbox)
  {
    return;
  }
[ ... ]
  ret = prctl(PR_SET_SECCOMP, 2, &prog, 0, 0);
  if (ret != 0)
  {
    die("prctl PR_SET_SECCOMP failed");
}

With https://rhn.redhat.com/errata/RHSA-2015-0864.html Redhat added:

Note: the fix for this issue is the kernel part of the overall fix, and introduces the PR_SET_NO_NEW_PRIVS functionality and the related SELinux exec transitions support.

This breaks vsftpd's assumption above that any kernel which supports PR_SET_NO_NEW_PRIVS also supports PR_SET_SECCOMP mode 2.

vsftpd silently ignores the EINVAL from the first prctl() but fails with the shown error message on the second.

The configuration parameter Martin Prikryl mentioned above is merely making it exit cleanly just after the (now-successful) first prctl(), mientras que antes / en núcleos más antiguos, salía limpia / silenciosamente en esa llamada.

FrankH.
fuente
0
Response:    500 OOPS: vsftpd: refusing to run with writable root inside chroot()

El error "500 OOPS" vsftpd devuelve es una medida de seguridad diseñada para evitar el acceso de root de escritura para usuarios FTP de forma predeterminada. Para resolver este problema, hay dos opciones principales disponibles.

Permitir acceso de usuario-root escribible

El método más simple es alterar el archivo /etc/vsftpd.conf una vez más y habilitar una configuración particular:

nano /etc/vsftpd.conf

Edite el archivo para que se parezca a lo siguiente:

# Allow users to write to their root directory
allow_writeable_chroot=YES

https://uk.godaddy.com/help/how-to-set-up-an-ftp-server-on-ubuntu-1404-12301

Máxima
fuente