vsftpd: 500 OOPS: prctl PR_SET_SECCOMP falhou


8

Eu tenho um problema com vsftpd. Quando eu me conecto ao meu servidor FTP via FileZilla, recebo o erro:

500 OOPS: prctl PR_SET_SECCOMP falhou
Erro: Erro crítico
Erro: Não foi possível conectar ao servidor

Eu tentei conectar também através do meu gerenciador de arquivos e ele não parece funcionar. Posso me conectar a todos os meus outros servidores sem problemas, por isso tenho certeza de que é um problema relacionado ao servidor.

Eu corro o Ubuntu 14.04 em um VPSDime VPS. vsftpdversão 3.0.2. O erro não ocorreu após uma atualização ou alteração na configuração, mas o erro começou a ocorrer quando eu estava trabalhando em um site; estava funcionando bem antes de eu receber o erro.

Reiniciei, reiniciei vsftpde atualizei meu sistema. Alguma ideia?

Respostas:


17

A mensagem indica que a prctl(PR_SET_SECCOMP, ...)chamada falhou.

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

Isso pode acontecer quando seu kernel não tem o CONFIG_SECCOMP_FILTERativado. Mas isso dificilmente pode mudar enquanto você "trabalha no site".

Citação da prctlpágina de manual :

PR_SET_SECCOMP (desde Linux 2.6.23)

Defina o modo de computação segura (seccomp) para o encadeamento de chamada, para limitar as chamadas de sistema disponíveis. O modo seccomp é selecionado via arg2. (As constantes seccomp são definidas em<linux/seccomp.h>

...

Com arg2definido como SECCOMP_MODE_FILTER(desde o Linux 3.5), as chamadas do sistema permitidas são definidas por um ponteiro para um Berkeley Packet Filter passado em arg3. Este argumento é um ponteiro para struct sock_fprog; Ele pode ser projetado para filtrar chamadas arbitrárias do sistema e argumentos de chamada do sistema. Este modo está disponível apenas se o kernel estiver configurado com CONFIG_SECCOMP_FILTERativado.


Como uma solução alternativa ruim, você pode configurar o vsftpd para não ativar o modo seccomp .

Use a seccomp_sandbox=noopção no vsftpd.conf.

A opção não parece estar documentada.


Obrigado que funcionou. Você sabe se pode haver alguma complicação ao fazer isso? O que é seccomp?
Xweque 30/04


2
Obrigado, funcionou para mim também. Eu me pergunto por que repentinamente tenho esse tipo de problema. Estou usando um servidor virtualizado OVH com Ubuntu 14.04 e kernel 2.6.32.
Miguel El Merendero

Eu tinha exatamente o mesmo problema, a mesma configuração que o @MiguelElMerendero, e ele resolveu. Muito Obrigado!
Bigood 16/07/2015

0

A razão pela qual esse erro do vfstpd ocorre em alguns kernels do Linux (principalmente o RHEL / Centos 6.x a partir do 6.5) é a seguinte suposição nas fontes do 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(), enquanto antes / em kernels mais antigos, ele saía limpa / silenciosamente nessa chamada.


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

O erro "500 OOPS" retorna vsftpd é uma medida de segurança projetada para impedir o acesso raiz gravável para usuários de FTP por padrão. Para resolver esse problema, existem duas opções principais disponíveis.

Permitindo acesso de usuário gravável à raiz

O método mais simples é alterar o arquivo /etc/vsftpd.conf novamente e ativar uma configuração específica:

nano /etc/vsftpd.conf

Edite o arquivo para que ele se pareça com o seguinte:

# 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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.