vsftpd: 500 OOPS: prctl PR_SET_SECCOMP falhou

8

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

500 OOPS: prctl PR_SET_SECCOMP failed
Error: Critical error
Error: Could not connect to server

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

Eu corro o Ubuntu 14.04 em um VPSDime VPS. vsftpd versã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 vsftpd e atualizei meu sistema. Alguma idéia?

    
por Xweque 30.04.2015 / 12:14

3 respostas

16

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

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

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

Citação da prctl man page :

PR_SET_SECCOMP (since Linux 2.6.23)

Set the secure computing (seccomp) mode for the calling thread, to limit the available system calls. The seccomp mode is selected via arg2. (The seccomp constants are defined in <linux/seccomp.h>

...

With arg2 set to SECCOMP_MODE_FILTER (since Linux 3.5) the system calls allowed are defined by a pointer to a Berkeley Packet Filter passed in arg3. This argument is a pointer to struct sock_fprog; it can be designed to filter arbitrary system calls and system call arguments. This mode is available only if the kernel is configured with CONFIG_SECCOMP_FILTER enabled.

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

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

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

    
por 30.04.2015 / 13:07
0

A razão pela qual esse erro do vfstpd ocorre em alguns kernels do Linux (mais notavelmente o RHEL / Centos 6.x de 6.5 em diante) é a seguinte suposição nas fontes do vsftpd,

link


  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");
}

Com o link Redhat adicionou:

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.

Isto quebra a suposição do vsftpd acima de que qualquer kernel que suporta PR_SET_NO_NEW_PRIVS também suporta PR_SET_SECCOMP mode 2.

O vsftpd silenciosamente ignora o EINVAL do primeiro prctl (), mas falha com a mensagem de erro mostrada no segundo.

O parâmetro de configuração Martin Prikryl mencionado acima é meramente fazer com que ele saia de forma limpa logo após o (agora bem-sucedido) primeiro prctl (), enquanto antes / em kernels mais antigos, ele encerra limpa / silenciosamente naquela chamada.

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

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

Permitindo acesso à raiz do usuário gravável

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

nano /etc/vsftpd.conf

Edite o arquivo para que seja semelhante ao seguinte:

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

link

    
por 09.12.2016 / 01:57