/home/%u 권한을 수정하지 않고 사용자를 홈 디렉토리로 제한합니다.

/home/%u 권한을 수정하지 않고 사용자를 홈 디렉토리로 제한합니다.

나는 아직 리눅스를 처음 접한다. 여러 사용자가 사용할 Ubuntu 메일/웹 서버를 구축 중입니다. 사용자를 자신의 홈 디렉터리로 제한하여 사용자가 로그인하거나, 비밀번호를 변경하거나, 셸을 사용하여 파일을 관리할 수 있도록 하고 싶습니다. 또한 메일, 웹 등을 포함하여 모든 사용자 파일을 홈 디렉터리에 저장하고 싶습니다.

내가 읽은 모든 기사(예:SSH 사용자가 /home/%u의 내용만 탐색하도록 제한하는 방법chown) 사용자 디렉터리를 루트 소유로 만들어야 한다고 언급했습니다 . 글쎄요, 그게 공감대인 것 같습니다.

왜 그럴까요?

후속 조치

사용자가 다른 시스템 유틸리티에 액세스할 수 있기를 원하기 때문에 passwd원래 질문이 더 이상 의미가 없다고 생각합니다. /home*다른 디렉토리에 대한 액세스를 제한하는 것을 포함하여 특수 폴더에 대한 권한에 집중하는 것이 올바른 것 같습니다 .

이상적으로는나는 사용자가 관리해야 하는 파일(메일, 웹 등)에 액세스할 수 있고 다른 곳에서의 액세스를 최소화하고 사용자가 다른 사용자의 파일을 탐색하거나 보는 것을 절대적으로 방지할 수 있기를 바랍니다.

답변1

with 를 사용하는 것이 ChrootDirectory합리적입니다 internal-sftp. with 를 사용하면 ForceCommand해당 구성과 일치하는 사용자가오직SFTP 프로토콜을 사용하여 SSH를 통해 이 서버에 액세스하는 기능.

이것은 당신이 달성하고자 하는 것과 양립할 수 없습니다:

사용자를 자신의 홈 디렉터리로 제한하여 로그인하거나, 비밀번호를 변경하거나, 사용할 수 있도록 하고 싶습니다.껍데기.

쉘을 얻으려면 SFTP뿐만 아니라 전체 SSH가 필요하므로 아마도 원하는 것이 아닐 것입니다.


루트 소유권 과 관련하여 ChrootDirectory이는 반드시 홈 디렉터리에 관한 것이 아니라 chroot 환경의 최상위에 관한 것입니다. 여기서 문제는 홈 디렉토리를 chroot의 최상위로 사용하는 것입니다. 이는 실제로 ChrootDirectory사용하는 방법도 아니고 가장 적합한 방법도 아닙니다.

더 나은 접근 방식은 구성을 사용하여 SFTP를 통해 chroot된 홈 디렉터리를 노출하는 것입니다.

하위 시스템 SFTP 내부 SFTP

사용자 브라이언 일치
    Chroot 디렉토리/chroot/%u
    ForceCommand 내부 SFTP

그런 다음 root:root가 소유한 각 사용자(예: user )에 대한 디렉터리를 brian만듭니다 /chroot/brian(이는 ChrootDirectory올바른 기능에 대한 제한 사항이므로 중요합니다.) 그런 다음 내부적으로 /chroot/brian사용자에 대한 홈 디렉터리를 만듭니다 /chroot/brian/home/brian. 홈 디렉토리는 사용자가 쓸 수 있으며 brian이는 아마도 여러분이 원하는 것일 것입니다(홈 디렉토리는 소유자가 완전히 관리할 수 있습니다.)

이것이 ChrootDirectory작동하면 SFTP 서버는 chroot 내의 홈 디렉터리를 찾을 수 있는 경우 해당 디렉터리로 변경됩니다. SFTP를 통해 서버에 액세스하는 사용자는 디렉터리로 이동할 수 있지만 ..이러한 ../..디렉터리는 대부분 비어 있으므로 흥미로운 내용이 표시되지 않습니다.

바인드 마운트를 사용하여 "실제" 홈 디렉토리를 chroot 내부 디렉토리와 연결할 수 있습니다:

$ sudo mkdir -p /chroot/brian/home/brian
$ mount --bind /home/brian /chroot/brian/home/brian

/etc/fstab서버가 다시 시작될 때마다 설치되도록 이 설치를 구성할 수 있습니다 . SFTP를 노출하려는 모든 사용자에 대해 이러한 설치가 필요하므로 이는 상당한 유지 관리 부담이 될 수 있습니다.

어쨌든 SFTP가 반드시 원하는 것은 아니므 ChrootDirectory로 설정과 관련이 없을 수도 있습니다.


노출되고 싶다면껍데기, 기술적으로 각 사용자에 대해 chroot를 설정하고 SSH를 통해 chroot에 연결하도록 하는 것이 가능합니다. 하지만:

  • 이 구성의 설정은 매우 복잡합니다. 특히, 몇 가지 유용한 작업을 수행하려면 쉘에서 일반적으로 전체 외부 명령 세트(예 ls: , cp, 등) 가 필요하기 때문에 chroot를 완전히 채워야 합니다 . tar각 사용자에 대해 chroot를 설정하는 경우 해당 사용자를 이러한 모든 바이너리, 사용자가 의존하는 라이브러리 등으로 채워야 합니다. 또한 버그 및 보안 문제를 해결하려면 이러한 바이너리를 업데이트해야 합니다. 많은 일이 필요합니다. 그리고 아마도 더 중요한 것은:

  • A는 chroot매우 취약하며 제한 없이 액세스할 수 있는 경우(보통 셸을 사용하여) 제거할 수 있는 방법이 있습니다. chroot의 모든 취약점을 닫는 것은 쉽지 않으므로 이 설정이 많은 보안 이점을 제공하는지 여부는 불분명합니다.

복잡성이 추가되고 보안 측면에서 작은(존재하지 않을 수도 있음) 이득이 있기 때문에 SSH에서 셸 루트를 변경하는 방법을 고려하지 않는 것이 좋습니다.


따라서 문제는 무엇을 달성하려고 하는지인데 Linux 배포판과 함께 제공되는 기본 설정은 아직 이를 달성하지 못합니다.

일반적으로 Unix 권한은 사용자 간 적절한 수준의 보안 및 격리를 달성하는 데 충분합니다.

기본적으로 사용자는 다른 사용자의 홈 디렉터리에 파일을 쓸 수 없습니다.

사용자를 차단할 수 있습니다검색그리고읽다홈 디렉터리에 대한 권한을 0700으로 설정하여 다른 사용자의 홈 디렉터리에 있는 파일에 액세스합니다.

(자체 권한을 /home0711로 제한하면 홈 디렉토리 나열을 사용할 수 없게 되지만 일반적으로 에서 콘텐츠를 읽는 모든 사용자 목록을 찾을 수 있고 Linux의 모든 사용자는 읽어야 하기 때문에 ls /home별 이점이 없습니다. /etc/passwd그 목록.)

사용자는 나머지 파일 시스템(바이너리 등)의 대부분을 찾아보고 읽을 수 있지만, 셸을 사용하려면 대부분의 파일 시스템이 필요하기 때문에 이는 일반적으로 예상됩니다.

메일 시스템은 사용자가 서로의 이메일을 읽지 못하도록 적절한 소유권과 권한을 설정하도록 주의를 기울여야 합니다. 따라서 이 작업은 일반적으로 이미 올바르게 수행되었습니다.

기본 설정으로 해결되지 않는 특정 보안 문제가 있습니까? 그렇지 않은 경우 단순하게 유지하고 사용하면 대부분의 일반적인 사용 사례에 충분합니다.

답변2

사용자를 자신의 홈 디렉터리로 제한하여 사용자가 로그인하거나, 비밀번호를 변경하거나, 셸을 사용하여 파일을 관리할 수 있도록 하고 싶습니다. 또한 메일, 웹 등을 포함하여 모든 사용자 파일을 홈 디렉터리에 저장하고 싶습니다.

이상적으로는 사용자가 관리해야 하는 파일(메일, 웹 등)에 액세스할 수 있고 다른 곳에서의 액세스를 최소화하고 사용자가 다른 사용자의 파일을 탐색하거나 보는 것을 절대적으로 방지할 수 있기를 바랍니다.

chroot이를 위한 환경을 반드시 제공할 필요는 없습니다 . /home일반적인 방법으로 사용자 계정을 생성하고 한 사용자가 다른 사용자의 홈 디렉터리에 액세스하는 것을 제한 할 수 있습니다 .

chown root.root /home        # Guarantee owner/group
chmod o=x /home              # Search the directory but no read (listing) access
chmod go= /home/*            # Prevent anyone else have access to users' home directories

시스템 데이터베이스(예: /etc/passwd및 ) /etc/group는 모든 사용자가 읽을 수 있으므로 시스템에 계정이 있는 사용자 그룹에 대한 일부 정보가 유출됩니다.

모든 사용자가 공유해야 하는 사용 가능한 디스크 공간을 한 사용자가 채울 수 없도록 디스크 사용 할당량을 만들고 적용해야 할 수도 있습니다. 채우기로 인해 시스템 자체가 중단되지 않도록 /home별도의 파티션을 설정하는 것이 좋습니다 .//home

관련 정보