vsftpd: 500 OOPS: prctl PR_SET_SECCOMP fehlgeschlagen

8

Ich habe ein Problem mit vsftpd. Wenn ich über FileZilla eine Verbindung zu meinem FTP-Server herstelle, wird folgende Fehlermeldung angezeigt:

500 OOPS: prctl PR_SET_SECCOMP fehlgeschlagen
Fehler: Kritischer Fehler
Fehler: Verbindung zum Server konnte nicht hergestellt werden

Ich habe versucht, auch über meinen Dateimanager eine Verbindung herzustellen, und es scheint nicht zu funktionieren. Ich kann ohne Probleme eine Verbindung zu allen anderen Servern herstellen, daher bin ich mir sicher, dass es sich um ein Serverproblem handelt.

Ich starte Ubuntu 14.04 auf einem VPSDime VPS. vsftpdVersion 3.0.2. Der Fehler trat nicht nach einer Aktualisierung oder Änderung der Konfiguration auf, aber der Fehler trat auf, als ich an einer Website arbeitete. Es hat gut funktioniert, bevor ich den Fehler bekam.

Ich habe vsftpdmein System neu gestartet, neu gestartet und aktualisiert. Irgendwelche Ideen?

Xweque
quelle

Antworten:

17

Die Nachricht zeigt an, dass der prctl(PR_SET_SECCOMP, ...)Anruf fehlgeschlagen ist.

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

Dies kann passieren, wenn in Ihrem Kernel das nicht CONFIG_SECCOMP_FILTERaktiviert ist. Das kann sich aber kaum ändern, wenn Sie "an der Website arbeiten".

Zitat aus der prctlManpage :

PR_SET_SECCOMP (seit Linux 2.6.23)

Legen Sie den Secure Computing-Modus (seccomp) für den aufrufenden Thread fest, um die verfügbaren Systemaufrufe zu begrenzen. Der Seccomp-Modus wird über ausgewählt arg2. (Die seccomp-Konstanten sind in definiert<linux/seccomp.h>

...

Bei arg2Einstellung auf SECCOMP_MODE_FILTER(seit Linux 3.5) werden die zulässigen Systemaufrufe durch einen Zeiger auf einen in arg3 übergebenen Berkeley-Paketfilter definiert. Dieses Argument ist ein Zeiger auf struct sock_fprog; Es kann entworfen werden, um beliebige Systemaufrufe und Systemaufrufargumente zu filtern. Dieser Modus ist nur verfügbar, wenn der Kernel mit CONFIG_SECCOMP_FILTERaktiviert konfiguriert ist .


Als schlechte Problemumgehung können Sie vsftpd so konfigurieren, dass der Seccomp-Modus nicht aktiviert wird .

Verwenden Sie die seccomp_sandbox=noOption in der vsftpd.conf.

Die Option scheint nicht dokumentiert zu sein.

Martin Prikryl
quelle
Danke, das hat funktioniert. Wissen Sie, ob dies zu Komplikationen führen kann? Was ist seccomp?
Xweque
Siehe en.wikipedia.org/wiki/Seccomp
Martin Prikryl
2
Danke, es hat auch bei mir funktioniert. Ich frage mich, warum ich plötzlich so ein Problem habe. Ich verwende einen virtualisierten OVH-Server mit Ubuntu 14.04 und Kernel 2.6.32.
Miguel El Merendero
Ich hatte genau das gleiche Problem, die gleiche Konfiguration wie @MiguelElMerendero, und es hat es gelöst. Danke vielmals!
Bigood
0

Der Grund, warum dieser Fehler von vfstpd in einigen Linux-Kerneln auftritt (insbesondere RHEL / Centos 6.x ab 6.5), ist die folgende Annahme in den Quellen von 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()Während / vor älteren Kerneln, wurde es bei diesem Aufruf sauber / leise beendet.

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

Der Fehler "500 OOPS" vsftpd gibt eine Sicherheitsmaßnahme zurück, die standardmäßig den beschreibbaren Root-Zugriff für FTP-Benutzer verhindert. Um dieses Problem zu beheben, stehen zwei Hauptoptionen zur Verfügung.

Zulassen des beschreibbaren User-Root-Zugriffs

Die einfachste Methode besteht darin, die Datei /etc/vsftpd.conf erneut zu ändern und eine bestimmte Einstellung zu aktivieren:

nano /etc/vsftpd.conf

Bearbeiten Sie die Datei so, dass sie wie folgt aussieht:

# 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
quelle