vsftpd
に問題があります。 FileZillaを介してFTPサーバーに接続すると、エラーが発生します。
500 OOPS:prctl PR_SET_SECCOMPが失敗しました
エラー:重大なエラー
エラー:サーバーに接続できませんでした
私もファイルマネージャー経由で接続しようとしましたが、機能していないようです。他のすべてのサーバーに問題なく接続できるので、サーバーに関連する問題であると確信しています。
Ubuntu 14.04をVPSDime VPSで実行しています。 vsftpd
バージョン3.0.2
。エラーは、更新または構成の変更後には発生しませんでしたが、Webサイトで作業していたときにエラーが発生し始めました。エラーが発生する前に問題なく動作していました。
再起動してvsftpd
を再起動し、システムを更新しました。何か案は?
メッセージは、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
man page からの引用:
PR_SET_SECCOMP(Linux 2.6.23以降)
呼び出しスレッドにセキュアコンピューティング(seccomp)モードを設定して、使用可能なシステムコールを制限します。 seccompモードは
arg2
によって選択されます。 (seccomp定数は<linux/seccomp.h>
...
arg2
をSECCOMP_MODE_FILTER
に設定すると(Linux 3.5以降)、許可されるシステムコールは、arg3で渡されるBerkeley Packet Filterへのポインターによって定義されます。この引数はstruct sock_fprog
へのポインターです。任意のシステムコールとシステムコール引数をフィルタリングするように設計できます。 このモードは、カーネルがCONFIG_SECCOMP_FILTER
を有効にして構成されている場合にのみ使用できます。
不十分な回避策として、 seccompモード を有効にしないようにvsftpdを設定できます。
seccomp_sandbox=no
のvsftpd.conf
オプションを使用します。
オプションは文書化されていないようです。
Response: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
「500 OOPS」エラーvsftpdは、デフォルトでFTPユーザーの書き込み可能なルートアクセスを防ぐように設計されたセキュリティ対策です。この問題を解決するには、2つの主要なオプションを利用できます。
書き込み可能なユーザールートアクセスの許可
最も簡単な方法は、/ etc/vsftpd.confファイルをもう一度変更し、特定の設定を1つ有効にすることです。
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
一部のLinuxカーネル(特に6.5以降のRHEL/Centos 6.x)でvfstpdからのこのエラーが発生する理由は、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
はPR_SET_SECCOMP
モード2もサポートしています。</ code>
vsftpdは最初のprctl()からのEINVAL
を警告なしで無視しますが、2番目に表示されたエラーメッセージで失敗します。
上記の構成パラメータMartin Prikrylは、(現在は成功した)最初のprctl()の直後にクリーンに終了するだけですが、古いカーネルの前/では、その呼び出しでクリーンに/サイレントに終了します。