vsftpd: 500 OOPS: prctl PR_SET_SECCOMP không thành công


8

Tôi có một vấn đề với vsftpd. Khi tôi kết nối với máy chủ FTP của mình qua FileZilla, tôi gặp lỗi:

500 OOPS: prctl PR_SET_SECCOMP
Lỗi: Lỗi nghiêm trọng
: Không thể kết nối với máy chủ

Tôi cũng đã cố gắng kết nối thông qua trình quản lý tệp của mình và dường như nó không hoạt động. Tôi có thể kết nối với tất cả các máy chủ khác của mình mà không gặp vấn đề gì vì vậy tôi chắc chắn rằng đó là sự cố liên quan đến máy chủ.

Tôi chạy Ubuntu 14.04 trên VPS VPSDime. vsftpdphiên bản 3.0.2. Lỗi không xảy ra sau khi cập nhật hoặc thay đổi cấu hình nhưng lỗi bắt đầu xảy ra khi tôi đang làm việc trên một trang web; nó đã hoạt động tốt trước khi tôi gặp lỗi.

Tôi đã khởi động lại, khởi động lại vsftpdvà cập nhật hệ thống của mình. Có ý kiến ​​gì không?

Câu trả lời:


17

Tin nhắn chỉ ra rằng prctl(PR_SET_SECCOMP, ...)cuộc gọi thất bại.

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

Nó có thể xảy ra khi kernel của bạn không CONFIG_SECCOMP_FILTERđược kích hoạt. Nhưng điều đó khó có thể thay đổi trong khi bạn "làm việc trên trang web".

Trích dẫn từ prctltrang người đàn ông :

PR_SET_SECCOMP (kể từ Linux 2.6.23)

Đặt chế độ điện toán an toàn (seccomp) cho luồng gọi, để giới hạn các cuộc gọi hệ thống khả dụng. Chế độ seccomp được chọn thông qua arg2. (Các hằng số seccomp được định nghĩa trong<linux/seccomp.h>

...

Với arg2cài đặt thành SECCOMP_MODE_FILTER(kể từ Linux 3.5), các lệnh gọi hệ thống được phép được xác định bởi một con trỏ tới Bộ lọc gói Berkeley được truyền trong arg3. Đối số này là một con trỏ tới struct sock_fprog; nó có thể được thiết kế để lọc các cuộc gọi hệ thống tùy ý và các đối số cuộc gọi hệ thống. Chế độ này chỉ khả dụng nếu kernel được cấu hình CONFIG_SECCOMP_FILTERbật.


Là một cách giải quyết kém, bạn có thể định cấu hình vsftpd để không bật chế độ seccomp .

Sử dụng seccomp_sandbox=notùy chọn trong vsftpd.conf.

Các tùy chọn dường như không được ghi lại.


Cảm ơn đã làm việc. Bạn có biết nếu có thể có bất kỳ biến chứng từ việc này không? Seccomp là gì?
Xweque


2
Cảm ơn, nó đã làm việc cho tôi quá. Tôi tự hỏi tại sao tôi hoàn toàn có loại vấn đề này. Tôi đang sử dụng máy chủ ảo hóa OVH với Ubuntu 14.04 và kernel 2.6.32.
Miguel El Merendero

Tôi đã có chính xác cùng một vấn đề, cùng cấu hình so với @MiguelElMerendero và nó đã giải quyết nó. Cảm ơn nhiều!
Bigood 16/07/2015

0

Lý do tại sao lỗi này từ vfstpd xảy ra trong một số hạt nhân Linux (đáng chú ý nhất là RHEL / Centos 6.x từ 6.5 trở đi) là giả định sau trong các nguồn của 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(), trong khi trước / trên các hạt nhân cũ hơn, nó thoát ra một cách sạch sẽ / âm thầm trong cuộc gọi đó.


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

Lỗi trả về "500 OOPS" vsftpd là một biện pháp bảo mật được thiết kế để ngăn chặn truy cập root có thể ghi đối với người dùng FTP theo mặc định. Để giải quyết vấn đề này, có hai tùy chọn chính có sẵn.

Cho phép quyền truy cập gốc người dùng có thể ghi

Phương pháp đơn giản nhất là thay đổi tệp /etc/vsftpd.conf một lần nữa và bật một cài đặt cụ thể:

nano /etc/vsftpd.conf

Chỉnh sửa tập tin sao cho giống như sau:

# 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-ubfox-1404-12602

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.