chroot 없이 ProFTPd 서버 구현

chroot 없이 ProFTPd 서버 구현

감옥을 사용하지 않고 ProFTPd를 사용할 수 있습니까 chroot(따라서 FTP 루트 디렉터리 외부에 대한 액세스가 차단됨)? 내 FTP 소스에 내 FTP 서비스의 루트 디렉터리 외부 위치에 대한 기호 링크를 포함해야 합니다.

ProFTPd에서 읽은 모든 문서와 토론에서는 chroot 기능을 사용하는 방법에 대해 논의합니다(심지어StackExchange 내), 하지만 이를 우회하고 다른 방법을 사용하여 내 FTP 루트를 제공할 수 있는지 궁금합니다. 심볼릭 링크는 심볼릭 링크로 남아 있어야 하므로 chroot 제한 사항(문제에 대한 영리한 "해결책")을 우회하는 방법으로 디렉토리를 마운트하는 것은 작동하지 않습니다.

답변1

문제는 FTP가 인터넷의 선사시대 초기에 정의되었다는 것입니다.아니요보안 조항(일반 텍스트 비밀번호, ...). 이것이 바로 FTP 서버가 일반적으로 익명 로그인에만 사용되는 이유이며 인터넷에 공개되어 있고 풍부한 명령 세트를 가지고 있기 때문입니다(그리고 매우 놀라운 기능이 많이 있어서 컴퓨터 간에 파일을 전송하기 위해 만들어졌습니다).진짜이상한 아키텍처, 다른 문자 표현, 이상한 운영 체제). 이성은 이 짐승들을 내려놓아야 한다고 지시합니다.

scp(1)과 같은 것을 사용할 수 있는 옵션이 있습니까? 대신 웹 서버를 사용하시겠습니까(더 효율적이어야 합니까)?

심볼릭 링크는 왜 심볼릭 링크여야 합니까?

답변2

ProFTPD는모듈 vroot기준 치수이 목적을 위해. 이 모듈을 ProFTPD로 직접 컴파일하거나 apt-get install proftpd-mod-vroot저장소에 있는 경우 설치할 수 있습니다(일부 Debian 저장소의 경우).

모듈 vroot사용자가 "가상 chroot"를 구성할 수 있도록 허용기본 루트 디렉터리지시문(세션의 초기/루트 디렉토리; ProFTPD는 지시문 없이 해당 디렉토리로 루트를 지정합니다.모듈 vroot), 그러나 심볼릭 링크가 외부를 가리킬 수 있도록 허용합니다.기본 루트 디렉터리길. mod_vroot도 지원합니다VRoot 서버 루트명령을 실행하면 ProFTPD는 이에 대해 진정한 chroot를 수행합니다. 즉, 심볼릭 링크가 외부를 가리킬 수 있습니다.기본 루트 디렉터리하지만 범위 내의 위치를 ​​타겟팅해야 합니다.VRoot 서버 루트길.

구성 예:

<IfModule mod_vroot.c>
    VRootEngine on

    VRootServerRoot /usr/share/ # Symlinks can only point to location within /usr/share/
    VRootOptions allowSymlinks
    DefaultRoot /usr/share/ftproot/
</IfModule>

관련 정보