vsftpd: 500 OOPS: échec de prctl PR_SET_SECCOMP

8

J'ai un problème avec vsftpd. Lorsque je me connecte à mon serveur FTP via FileZilla, j'obtiens l'erreur:

500 OOPS: échec de prctl PR_SET_SECCOMP
Erreur: erreur critique
Erreur: impossible de se connecter au serveur

J'ai également essayé de me connecter via mon gestionnaire de fichiers et il ne semble pas fonctionner. Je peux me connecter à tous mes autres serveurs sans problème, donc je suis certain que c'est un problème lié au serveur.

Je lance Ubuntu 14.04 sur un VPS VPSDime. vsftpdversion 3.0.2. L'erreur ne s'est pas produite après une mise à jour ou un changement de configuration, mais l'erreur a commencé à se produire lorsque je travaillais sur un site Web; cela fonctionnait bien avant que j'obtienne l'erreur.

J'ai redémarré, redémarré vsftpdet mis à jour mon système. Des idées?

Xweque
la source

Réponses:

17

Le message indique que l' prctl(PR_SET_SECCOMP, ...)appel a échoué.

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

Cela peut arriver lorsque votre noyau n'a pas CONFIG_SECCOMP_FILTERactivé. Mais cela peut difficilement changer pendant que vous "travaillez sur le site Web".

Citation de la prctlpage de manuel :

PR_SET_SECCOMP (depuis Linux 2.6.23)

Définissez le mode informatique sécurisé (seccomp) pour le thread appelant, afin de limiter les appels système disponibles. Le mode seccomp est sélectionné via arg2. (Les constantes seccomp sont définies dans<linux/seccomp.h>

...

Avec arg2la valeur SECCOMP_MODE_FILTER(depuis Linux 3.5), les appels système autorisés sont définis par un pointeur vers un filtre de paquets Berkeley passé dans arg3. Cet argument est un pointeur vers struct sock_fprog; il peut être conçu pour filtrer les appels système et les arguments d'appel système arbitraires. Ce mode n'est disponible que si le noyau est configuré avec CONFIG_SECCOMP_FILTERactivé.


Comme solution de contournement médiocre, vous pouvez configurer vsftpd pour ne pas activer le mode seccomp .

Utilisez l' seccomp_sandbox=nooption dans le vsftpd.conf.

L'option ne semble pas être documentée.

Martin Prikryl
la source
Merci qui a fonctionné. Savez-vous si cela peut entraîner des complications? Qu'est-ce que seccomp?
Xweque
Voir en.wikipedia.org/wiki/Seccomp
Martin Prikryl
2
Merci, ça a marché pour moi aussi. Je me demande pourquoi j'ai soudain ce genre de problème. J'utilise un serveur virtualisé OVH avec Ubuntu 14.04 et le noyau 2.6.32.
Miguel El Merendero
J'ai eu exactement le même problème, la même configuration que @MiguelElMerendero, et cela l'a résolu. Merci beaucoup!
Bigood
0

La raison pour laquelle cette erreur de vfstpd se produit dans certains noyaux Linux (notamment RHEL / Centos 6.x à partir de 6.5) est l'hypothèse suivante dans les sources 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(), alors qu'avant / sur les noyaux plus anciens, il se terminait proprement / silencieusement à cet appel.

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

L'erreur "500 OOPS" renvoyée par vsftpd est une mesure de sécurité conçue pour empêcher l'accès root en écriture pour les utilisateurs FTP par défaut. Pour résoudre ce problème, deux options principales sont disponibles.

Autorisation d'accès root accessible en écriture

La méthode la plus simple consiste à modifier à nouveau le fichier /etc/vsftpd.conf et à activer un paramètre particulier:

nano /etc/vsftpd.conf

Modifiez le fichier pour qu'il ressemble à ce qui suit:

# 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

Maxime
la source