안전한 SFTP 서버를위한 파일 시스템 보안


12

이것은 개발 질문으로 보이지 않을 수도 있지만 본질적으로 그렇습니다. 방법을 설명하겠습니다. 우리의 주요 개발 초점은 동적 컨텐츠 페이지입니다. 일부 고객은 이전 정적 콘텐츠에 대해 서버에서 비용을 지불 할 공간을 허용하도록 요청했습니다. 고객에게 다른 도메인에 ftp 계정을 제공하여이를 수행합니다. (예 : 고객 도메인은 customer.com이지만 otherdomain.com/customerstatic을 통해 정적 콘텐츠에 액세스하고있었습니다).

이제 고객은 Linux 서버에서 sftp 계정을 제공하는 보안을 강화하고자합니다. 쉘 환경에서 openssh / sftp-server를 사용하여 로그인하거나 명령을 실행할 수 없습니다.

문제는 기본적으로 많은 파일 시스템 파일이 기본적으로 (drwxr-xr-x)이므로 모든 사용자가 디렉토리의 내용과 일부 파일을 읽을 수 있다는 의미입니다. 읽기 권한이 필요한 시스템 파일 수를 알지 못하므로 전체 파일 시스템을 -rwxr-x--x로 변경하는 것이 현명한 방법이라고 생각하지 않습니다.

과거에 누군가이 문제에 직면하게했습니다. 있다면 길을 밝힐 수 있습니까?

감사


좋은 질문과 간결한 정답-중재자는 제목을 변경하여 위키가 아닌 질문으로 바꿔야합니다.
MikeyB

질문을 위키에서 분리 할 수 ​​없습니다. 죄송합니다
Jeff Atwood

답변:


22

SFTP는 본질적으로 안전하지 않습니다. 그것들을 전체 파일 시스템으로 보내는 것입니다. chroot 기반으로 SFTP 액세스를 활성화하는 방법을 확인하려면 홈 디렉토리 또는 업로드하려는 위치에 액세스 할 수있는 디렉토리를 잠급니다.

Linux에서는이 부분 (/ etc / ssh / sshd_config 구성)에주의를 기울입니다.

  Match Group sftponly
         ChrootDirectory %h
         ForceCommand internal-sftp 
         AllowTcpForwarding no

이는 'sftponly'사용자 그룹의 모든 사용자가 자신의 홈 디렉토리로 제한됨을 의미합니다.

자세한 내용은 링크를 참조하고 sshd_config 맨 페이지도 참조하십시오. 희망이 도움이됩니다.


또한 internal-sftp클라이언트가 sftp 서브 시스템을 요청할 때 OpenSSH에이를 사용하도록 지시해야 할 수도 있습니다 sftp-server. 외부 프로그램 을 사용하도록 설정되었을 수도 있습니다 . 이렇게하려면 Subsystem sftp internal-sftp구성 파일의 기본 섹션 (섹션이 아닌)에서 행 을 추가하거나 변경하십시오 Match.
Nate

조쉬, 사용자의 홈 디렉토리에 대한 루트 소유권을 요구하지 않는 방법을 알아 낸 적이 있습니까?
Matt Simmons


1

"많은 파일 시스템은 기본적으로 755 권한입니다"라고 말하면 실제로 기본 umask 가 022로 설정되어 있음을 의미합니다 . umask를 027로 설정하여이 기본값 (새 파일의 경우)을 변경할 수 있습니다. umask를 007로 설정하면 기본 권한이 770이됩니다.


0

OpenVZ 서버를 설정 한 다음 각 회사마다 별도의 작은 VM ftp / sftp '컨테이너'를 작성하는 것을 고려할 수 있습니다. 이것은 그것들을 모두 분리하여 유지하고 OpenVZ를 끊으면 이런 작은 것들에 정말 편리합니다.

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