vsftpd: 500 OOPS: сбой prctl PR_SET_SECCOMP


8

У меня проблема с vsftpd. Когда я подключаюсь к своему FTP-серверу через FileZilla, я получаю сообщение об ошибке:

500 OOPS: prctl PR_SET_SECCOMP fail
Ошибка: критическая ошибка
Ошибка: не удалось подключиться к серверу

Я пытался подключиться через мой файловый менеджер, но он не работает. Я могу подключиться ко всем другим серверам без проблем, поэтому я уверен, что это проблема, связанная с сервером.

Я запускаю Ubuntu 14.04 на VPSDime VPS. vsftpdверсия 3.0.2. Ошибка не произошла после обновления или изменения конфигурации, но ошибка начала возникать, когда я работал на веб-сайте; до того как я получил ошибку, все работало нормально.

Я перезагрузил, перезапустил vsftpdи обновил мою систему. Любые идеи?

Ответы:


17

Сообщение указывает, что prctl(PR_SET_SECCOMP, ...)вызов не удался.

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

Это может произойти, когда ваше ядро ​​не имеет CONFIG_SECCOMP_FILTERвключенного. Но это вряд ли изменится, пока вы «работаете над сайтом».

Цитата из prctlсправочной страницы :

PR_SET_SECCOMP (начиная с Linux 2.6.23)

Установите режим защищенных вычислений (seccomp) для вызывающего потока, чтобы ограничить доступные системные вызовы. Режим seccomp выбирается с помощью arg2. (Константы seccomp определены в<linux/seccomp.h>

...

При arg2установленном SECCOMP_MODE_FILTER(начиная с Linux 3.5) разрешенные системные вызовы определяются указателем на пакетный фильтр Berkeley, передаваемый в arg3. Этот аргумент является указателем на struct sock_fprog; он может быть разработан для фильтрации произвольных системных вызовов и аргументов системных вызовов. Этот режим доступен только если ядро ​​настроено с CONFIG_SECCOMP_FILTERвключенным.


В качестве плохого обходного пути вы можете настроить vsftpd так, чтобы он не включал режим seccomp .

Используйте seccomp_sandbox=noопцию в vsftpd.conf.

Опция, похоже, не документирована.


Спасибо, что сработало. Знаете ли вы, могут ли быть какие-либо осложнения от этого? Что такое seccomp?
Xweque


2
Спасибо, у меня это тоже сработало. Интересно, почему у меня такая проблема? Я использую виртуальный сервер OVH с Ubuntu 14.04 и ядром 2.6.32.
Мигель Эль Мерендеро

У меня была точно такая же проблема, тот же конфиг, что и у @MiguelElMerendero, и он решил ее. Большое спасибо!
Bigood

0

Причина, по которой эта ошибка из vfstpd возникает в некоторых ядрах Linux (в частности, в RHEL / Centos 6.x начиная с версии 6.5), заключается в следующем предположении в источниках 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()в то время как до / на старых ядрах, он чистым / тихим образом завершал этот вызов.


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

Ошибка «500 OOPS», возвращаемая vsftpd, является мерой безопасности, разработанной для предотвращения доступного для записи корневого доступа для пользователей FTP по умолчанию. Для решения этой проблемы есть два основных варианта.

Разрешение доступного для записи доступа пользователя-root

Самый простой способ - еще раз изменить файл /etc/vsftpd.conf и включить один конкретный параметр:

nano /etc/vsftpd.conf

Отредактируйте файл так, чтобы он выглядел следующим образом:

# 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.