제 생각에는:
/home/friend
내 서버에 있는 친구의 디렉토리에 대한 SFTP 액세스 제공- 그에게 Apache가 포함된 가상 호스트를 제공하세요.
/home/friend/www/
- 그 사람이 유사한 디렉터리에 액세스하는 것을 허용하지 않고
/etc/
(현재 해결됨), 그 사람이 내 사용자의 집에 액세스하도록 허용하지 않음/home/me
(아직 해결되지 않음)
이것을하기 위해:
내가 만든다
adduser friend
그를 위해 Apache VirtualHost를 추가했습니다.
<VirtualHost *:80> ServerName hiswebsite.com DocumentRoot /home/friend/www ... </VirtualHost>
그리고
service apache2 restart
.SFTP/SSH 액세스를 "감옥"했습니다.
PermitRootLogin yes ChallengeResponseAuthentication no UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_* PasswordAuthentication yes GatewayPorts yes Subsystem sftp internal-sftp Match User friend ChrootDirectory /home/ ForceCommand internal-sftp
그리고
service sshd restart
.
질문:
friend
지금은 나갈 수 없지만/home/
(괜찮습니다)그 사람 아직 갈 수 있어/home/me/
그리고 안에 있는 파일을 읽어보세요! 그에게 액세스 권한만 부여/home/friend/
하고 다른 권한은 부여하지 않는 방법은 무엇입니까 ? 이는 다음과 같은 이유로 불가능해 보입니다.ChrootDirectory는
인증 후 chroot(2)에 대한 디렉토리 경로 이름을 지정합니다. 경로 이름의 모든 구성 요소는 루트가 소유한 디렉터리여야 합니다.다른 사용자나 그룹은 쓸 수 없습니다.내가해야합니까
friend
그룹에 사용자를 추가하시겠습니까www-data
?- 아니면
www-data
그룹에 사용자를 추가하시겠습니까friend
? 아니면 다른 사용자/그룹 설정인가요?
Apache가 파일을 제공하고 PHP 쓰기 액세스를 허용하도록 허용하시겠습니까
/home/friend/www/
? 그의 웹사이트에 파일 업로더가 있다고 가정해 보겠습니다. PHP는 이 디렉토리에 파일을 작성해야 합니다. 및 에는/home/friend
어떤 권한이 부여됩니까/home/me
?
링크 주제:
답변1
현재 상황
이 섹션의 경고는 귀하의 경우에만 권장됩니다만 사용웹 호스팅이기 때문에 Apache는 홈 사용자의 폴더에 대한 액세스 권한을 의미하지 않습니다(답변 끝에 있는 다른 제안이 더 적절할 수 있음).
- Web/Apache 그룹에는
www-data
서비스를 사용하는 모든 사용자가 포함되어야 합니다. - Apache와 사용자는 서로에 대한 액세스
www
를 제한하면서 서로에 대한 액세스가 필요합니다.- 그 아래의 각 디렉터리에는 권한이
/home
있어야 합니다.www-data:user
- 그 아래의 각 디렉터리에는 권한이
chown www-data:me /home/me
또는
- Web/Apache 그룹에는
www-data
서비스를 사용하는 모든 사용자가 포함되어야 합니다. - Apache와 사용자는 서로에 대한 액세스
www
를 제한하면서 서로에 대한 액세스가 필요합니다.- 홈 사용자의 폴더에는 권한이 있어야 합니다.
chown me:me /home/me
/home
아파치에 속하게 만드세요chown www-data:root /home
- 홈 사용자의 폴더에는 권한이 있어야 합니다.
이렇게 하면 Apache는 필요한 디렉터리에 액세스할 수 www
있고 사용자는 다른 사용자 폴더에 액세스할 수 없습니다.
여기서 핵심은 그룹 권한이 사용자 간에 공유되는 반면 Apache 자체는 다른 사용자에게 노출되지 않는 사용자라는 것입니다. 예를 들어 Apache와 나에게 액세스 권한을 부여하면 chown www:me /home/me
다른 사용자로부터 격리된 상태로 유지됩니다(그리고 www 그룹의 모든 사람은 액세스가 허용됩니다). 파일 클립) )me
chown me:www /home/me
me
디렉토리는 현재 구성 설정에서 apache(사용자)에 속한 위치 www
에 존재해야 하거나 사용자 디렉토리 내부에 있기 때문에 해결 방법 입니다 .www-data
/home/me
www-data:me
/home
www-data:root
www
그렇기 때문에 기본 위치는 홈 디렉터리가 아닌 홈 디렉터리에 www
있습니다 . 이는 아파치에게 불필요한 액세스 권한(예: 전체 사용자 폴더에 대한 액세스 권한)을 부여하지 않고 아파치와 사용자가 w/r을 허용하도록 하기 위한 것입니다./var
www
홈 폴더가 다음과 같은 경우오직(웹 사용) 현재 제안/구성에 만족한다는 의미입니다 . www
이제 웹 호스팅 이외의 목적으로 이 시스템을 사용하는 경우 폴더가 아닌 다른 위치에 www
있어야 합니다 . 사용 사례를 제거 하고 파일 액세스가 파일 액세스 권한에 의해서만 관리되는 클래식 구성으로 이동하려면,/home
/var
ChrootDirectory
이것은클래식 사용자의 제한 사항에 대한 일부 읽기...
보안, 격리, 웹 호스팅 및다른 Linux/서버에서 사용됨각 사용자에 대해 다양한 솔루션을 구현하고 가상화 및/또는 샌드박싱을 발전시켜야 합니다.
귀하가 요청한 것을 달성할 수 있는 다른 가능성이 많이 있지만 귀하의 구성에 대해서는 이것이 가장 빠릅니다. 리소스 섹션을 읽으십시오.최종 권장 사항아래는 더 적합한 구현입니다.
구성
구현은 대상 보안 수준 및 대상 용도에 따라 달라집니다. 따라서 하나의 구성이 어떤 상황에는 적합하지만 동시에 다른 상황에는 부적절할 수도 있습니다.
ChrootDirectory
현재 구성은 각 SSH 사용자 간의 분리를 관리하기 위해 클래식 파일 권한 대신 그룹 및 사용자 액세스 수준을 사용하는 클래식 구성과 크게 다르지 않습니다 . 이를 달성하기 위한 구성에서 사용자 액세스 수준이 누락된 것 같습니다. 구현 방법에 대한 자세한 내용은 다음과 같습니다.여기,여기그리고여기(즉, ChrootDirectory
다른 방법으로 사용하는 것이 좋은 보안 관행입니다)
대안(강화된 보안)
PermitRootLogin yes
First를 사용하지 말고 대신 me
suders에 사용자를 추가하십시오. 그런 다음 me
사용자는 다음을 사용하여 sudo su
루트 디렉터리에 액세스 할 수 있습니다.su
보안을 강화하는 것이 목표라면 user space
각 사용자를 완전히 분리하는 커널 기능을 사용할 수 있지만 이는 완전히 다른 구성입니다. 이는 기본 Linux 도구 및/또는화재 감옥별도의 파일/네트워크 등
또한 보안 강화와 동일한 범위 내에서 인증을 위해 개인/공개 키를 사용하는 대신 개인/공개 키를 사용해야 합니다.PasswordAuthentication yes
SSHFS호스팅된 파일을 분리하는 대신 사용할 수도 있습니다.
주제에 대한 더 흥미로운 링크는 다음과 같습니다.
최종 권장 사항
마지막으로 구성과 관련하여 제안하고 싶은 것은
- 장애를 입히다
PermitRootLogin
- 사용자 및
/home
권한을 검토합니다. - 의 경우고유한웹호스팅 사용량
/home
디렉토리 가 아닌 제안된 권한을 적용한/var/apache/user1,user2,etc
다음 .ChrootDirectory /var/apache/
- 다목적 시스템의 경우
- 여기서는 여러 가지 가능성을 사용할 수 있습니다. 그 중 하나는
/home
디렉터리에 대한 것이 아니라 유사한 구조를 사용하여 제안된 권한을 적용하는 것입니다./var/apache/user1,user2,etc
아니요그런 다음 파일 액세스 권한을 사용하여ChrootDirectory
권한을 관리합니다.
- 여기서는 여러 가지 가능성을 사용할 수 있습니다. 그 중 하나는
답변2
이것기사훌륭하고 간단한 솔루션을 제공합니다.
루트가 소유한 디렉터리를 만들고 이를 사용자의 홈으로
/friends/
만듭니다 ./friends/alice/
alice
usermod -m -d /friends/alice alice
끝에 이것을 추가하십시오
/etc/ssh/sshd_config
:Subsystem sftp internal-sftp Match User alice ChrootDirectory /friends
그 다음에
/etc/init.d/ssh restart
여러 사용자를 동일한 디렉토리로 chroot하지만 해당 사용자가 다른 사용자의 홈 디렉토리를 탐색하는 것을 원하지 않는 경우 다음과 같이 각 홈 디렉토리에 대한 권한을 변경할 수 있습니다. 예:
chmod 700 /home/alice
유일한 단점: 이 솔루션을 사용하면 Apache는 다음 내용을 읽을 수 없습니다
/home/alice/www
.