vsftpd: 500 OOPS: prctl PR_SET_SECCOMP gagal

8

Saya memiliki masalah dengan vsftpd. Ketika saya terhubung ke server FTP saya melalui FileZilla saya mendapatkan kesalahan:

500 OOPS: prctl PR_SET_SECCOMP gagal
Kesalahan: Kesalahan kritis
Kesalahan: Tidak dapat terhubung ke server

Saya sudah mencoba untuk terhubung melalui file manager saya dan sepertinya tidak berfungsi. Saya dapat terhubung ke semua server saya yang lain tanpa masalah jadi saya yakin itu adalah masalah terkait server.

Saya menjalankan Ubuntu 14.04 pada VPSDime VPS. vsftpdversi 3.0.2. Kesalahan tidak terjadi setelah pembaruan atau perubahan dalam konfigurasi tetapi kesalahan mulai terjadi ketika saya bekerja di situs web; itu berfungsi dengan baik sebelum saya mendapatkan kesalahan.

Saya telah mem-boot ulang, memulai kembali, vsftpddan memperbarui sistem saya. Ada ide?

Xweque
sumber

Jawaban:

17

Pesan menunjukkan bahwa prctl(PR_SET_SECCOMP, ...)panggilan gagal.

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

Itu bisa terjadi ketika kernel Anda belum CONFIG_SECCOMP_FILTERdiaktifkan. Tapi itu hampir tidak bisa berubah saat Anda "bekerja di situs web".

Kutipan dari prctlhalaman manual :

PR_SET_SECCOMP (sejak Linux 2.6.23)

Atur mode komputasi aman (seccomp) untuk utas panggilan, untuk membatasi panggilan sistem yang tersedia. Mode seccomp dipilih melalui arg2. (Konstanta seccomp didefinisikan dalam<linux/seccomp.h>

...

Dengan arg2diatur ke SECCOMP_MODE_FILTER(karena Linux 3.5) panggilan sistem yang diizinkan ditentukan oleh pointer ke Berkeley Packet Filter yang diteruskan dalam arg3. Argumen ini adalah penunjuk ke struct sock_fprog; itu dapat dirancang untuk menyaring panggilan sistem sewenang-wenang dan argumen panggilan sistem. Mode ini hanya tersedia jika kernel dikonfigurasi dengan CONFIG_SECCOMP_FILTERdiaktifkan.


Sebagai solusi yang buruk, Anda dapat mengonfigurasi vsftpd untuk tidak mengaktifkan mode seccomp .

Gunakan seccomp_sandbox=noopsi di menu vsftpd.conf.

Opsi ini sepertinya tidak didokumentasikan.

Martin Prikryl
sumber
Terima kasih, itu berhasil. Apakah Anda tahu jika mungkin ada komplikasi dari melakukan ini? Apa itu seccomp?
Xweque
Lihat en.wikipedia.org/wiki/Seccomp
Martin Prikryl
2
Terima kasih, itu berhasil juga untuk saya. Saya heran mengapa saya tiba-tiba memiliki masalah seperti ini. Saya menggunakan server tervirtualisasi OVH dengan Ubuntu 14.04 dan kernel 2.6.32.
Miguel El Merendero
Saya memiliki masalah yang sama persis, konfigurasi yang sama dengan @MiguelElMerendero, dan itu menyelesaikannya. Terimakasih banyak!
Bigood
0

Alasan mengapa kesalahan ini dari vfstpd terjadi di beberapa kernel Linux (terutama RHEL / Centos 6.x dari 6.5 dan seterusnya) adalah asumsi berikut dalam sumber 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(), sementara sebelum / di kernel yang lebih tua, itu bersih / diam-diam keluar dari panggilan itu.

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

Pengembalian vsftpd kesalahan "500 OOPS" adalah ukuran keamanan yang dirancang untuk mencegah akses root yang dapat ditulisi untuk pengguna FTP secara default. Untuk mengatasi masalah ini ada dua opsi utama yang tersedia.

Mengizinkan Akses Root Pengguna yang Dapat Ditulis

Metode paling sederhana adalah mengubah file /etc/vsftpd.conf sekali lagi dan mengaktifkan satu pengaturan tertentu:

nano /etc/vsftpd.conf

Edit file sehingga menyerupai berikut ini:

# 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

Pepatah
sumber