저는 동적 웹사이트를 제공하기 위해 FreeBSD에 여러 개의 감옥을 설정하고 있습니다. 호스팅 환경에는 HTTP 호스트 헤더를 기반으로 연결을 예약하는 웹 서버가 있으며 각 감옥에는 각 사이트의 데이터가 포함된 /var/lib/www-db 디렉터리가 있습니다.
문제는 mount_nullfs'로 템플릿 감옥을 실제 감옥 디렉토리에 넣어 여러 감옥을 만들고 있다는 것입니다. 그리고 /var/lib/www-db를 별도로 마운트했음에도 불구하고 감옥은 여전히 /var/log 및 기타 /를 공유합니다. var 계층 구조의 디렉터리.
나는 /var/log 및 기타 디렉토리를 공유하는 것이 다소 보안 문제라는 것을 알고 있으므로 내 질문은 다음과 같습니다.
- 여러 교도소를 짓는 모범 사례는 무엇입니까?
고쳐 쓰다
나는 ZFS로 작업했습니다. 감옥에 /var/lib/www-db로 마운트할 하위 디렉토리가 있는 두 개의 큰 디스크로 구성된 zpool이 있었습니다.
답변1
FreeBSD의 "템플릿"을 그대로 유지하면서 감옥에서 루트 디렉토리(/var 및 /tmp 포함, 둘 다 중요)를 수정할 수 있는 간단한 솔루션이 있습니다.
프로그램:
여기에 표시된 감옥의 루트 디렉터리를 만듭니다.
<jail-root>
<jail-root>
Unionfs "아래"를 사용하여 템플릿 디렉터리를 마운트하려면 다음 명령을 사용합니다.mount_unionfs -o below <template> <jail-root>
이러한 방식으로 각 감옥에는 사용 가능한 완전한 루트 계층 구조가 있으며 너무 많은 저장 공간을 소비하지 않고 점진적으로 작성할 수 있습니다.
인용하다
몇 가지 특수한 경우를 제외하고 Uniondir에서 객체를 생성하거나 수정하라는 요청은 상위 계층으로 전달됩니다. 하위 계층에 존재하는 파일을 열어서 쓰려고 하면 파일 전체가 상위 계층으로 복사된 후 상위 복사본이 열립니다. 마찬가지로, 하위 파일을 0 길이로 자르려고 하면 상위 계층에 빈 파일이 생성됩니다. 궁극적으로 하위 레이어 수정이 필요한 다른 작업은 EROFS로 인해 실패합니다.