vsftpd : 500 OOPS : prctl PR_SET_SECCOMP 실패


8

에 문제가 vsftpd있습니다. FileZilla를 통해 FTP 서버에 연결하면 오류가 발생합니다.

500 OOPS : prctl PR_SET_SECCOMP 실패
오류 : 심각한 오류
오류 : 서버에 연결할 수 없습니다

파일 관리자를 통해 연결을 시도했지만 작동하지 않는 것 같습니다. 문제없이 다른 모든 서버에 연결할 수 있으므로 서버 관련 문제인지 확신합니다.

VPSDime VPS에서 Ubuntu 14.04를 실행합니다. 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>

...

(Linux 3.5부터)로 arg2설정 하면 SECCOMP_MODE_FILTER허용되는 시스템 호출은 arg3에 전달 된 Berkeley 패킷 필터에 대한 포인터로 정의됩니다. 이 인수는 다음에 대한 포인터입니다 struct sock_fprog. 임의의 시스템 호출 및 시스템 호출 인수를 필터링하도록 설계 될 수 있습니다. 이 모드는 커널이 CONFIG_SECCOMP_FILTER활성화 된 상태 로 구성된 경우에만 사용할 수 있습니다.


잘못된 해결 방법으로 seccomp 모드 를 사용하지 않도록 vsftpd를 구성 할 수 있습니다 .

seccomp_sandbox=no옵션을 사용하십시오 vsftpd.conf.

옵션이 문서화되지 않은 것 같습니다.


고마워요. 이 작업으로 인한 합병증이 있는지 알고 있습니까? seccomp 란 무엇입니까?
Xweque


2
고마워, 그것은 나에게도 효과가 있었다. 왜 갑자기 이런 종류의 문제가 발생하는지 궁금합니다. Ubuntu 14.04 및 커널 2.6.32와 함께 OVH 가상화 서버를 사용하고 있습니다.
미구엘 엘 메렌 데로

@MiguelElMerendero와 동일한 구성, 동일한 구성이 있었고 문제가 해결되었습니다. 많은 감사합니다!
Bigood

0

vfstpd의이 오류가 일부 Linux 커널 (대부분 6.5 이상 RHEL / Centos 6.x 이상)에서 발생하는 이유는 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 returns는 기본적으로 FTP 사용자의 쓰기 가능한 루트 액세스를 방지하도록 설계된 보안 조치입니다. 이 문제를 해결하기 위해 사용할 수있는 두 가지 기본 옵션이 있습니다.

쓰기 가능한 사용자 루트 액세스 허용

가장 간단한 방법은 /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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.