밝혀졌다 구현이 제안되었습니다 로 FreeBSD용 애플리케이션 격리 메커니즘, OpenBSD 프로젝트에 의해 개발된 접고 공개 시스템 호출을 연상시킵니다.
plegde에서 격리는 응용 프로그램에서 사용하지 않는 시스템 호출에 대한 액세스를 금지하고 응용 프로그램이 작업할 수 있는 특정 파일 경로에 대해서만 액세스를 선택적으로 열어 공개합니다. 응용 프로그램의 경우 일종의 시스템 호출 및 파일 경로 화이트리스트가 형성되며 다른 모든 호출 및 경로는 금지됩니다.
접힌 것과 펼친 것의 차이, FreeBSD용으로 개발됨, 추가 레이어를 제공하는 것으로 요약됩니다. 코드를 변경하지 않거나 최소한으로 변경하여 애플리케이션을 격리할 수 있습니다. OpenBSD에서 plegde 및 unlock은 기본 환경과의 긴밀한 통합을 목표로 하며 각 응용 프로그램의 코드에 특수 주석을 추가하여 구현됩니다.
보호 구성을 단순화하기 위해 필터를 사용하면 개별 시스템 호출 수준에서 세부 정보를 피하고 시스템 호출 클래스(입력/출력, 파일 읽기, 파일 쓰기, 소켓, ioctl, sysctl, 프로세스 시작 등)를 조작할 수 있습니다. . 특정 작업이 수행될 때 응용 프로그램 코드에서 액세스 제한 기능을 호출할 수 있습니다. 예를 들어, 필요한 파일을 열고 네트워크 연결을 설정한 후 소켓 및 파일에 대한 액세스를 닫을 수 있습니다.
FreeBSD용 접기 및 표시 포트 작성자 임의의 응용 프로그램을 격리하는 기능을 제공하기 위한 것으로, 별도의 파일에 정의된 규칙을 응용 프로그램에 적용할 수 있는 커튼 유틸리티가 제안되었습니다. 제안된 구성에는 특정 응용 프로그램(사운드, 네트워크, 로깅 등과 관련된 작업)에 특정한 시스템 호출 및 일반적인 파일 경로의 클래스를 정의하는 기본 설정이 있는 파일과 특정 응용 프로그램에 대한 액세스 규칙이 있는 파일이 포함됩니다.
커튼 유틸리티는 대부분의 유틸리티, 서버 프로세스, 그래픽 응용 프로그램 및 수정되지 않은 전체 데스크톱 세션을 분리하는 데 사용할 수 있습니다. Jail 및 Capsicum 하위 시스템에서 제공하는 격리 메커니즘과 커튼을 공유하는 것이 지원됩니다.
또한 중첩된 격리를 구성하는 것이 가능합니다. 실행된 응용 프로그램이 상위 응용 프로그램에서 설정한 규칙을 상속할 때 별도의 제약 조건으로 보완합니다. 일부 커널 작업(디버깅 도구, POSIX/SysV IPC, PTY)은 현재 또는 상위 프로세스 이외의 프로세스에서 생성된 커널 개체에 대한 액세스를 방지하는 장벽 메커니즘에 의해 추가로 보호됩니다.
Curtainctl을 호출하여 프로세스가 자체 격리를 구성할 수 있습니다. 또는 OpenBSD와 유사하게 libcurtain 라이브러리에서 제공하는 plegde() 및 공개() 함수를 사용합니다. 애플리케이션이 실행되는 동안 잠금을 추적하기 위해 'security.curtain.log_level' sysctl이 제공됩니다.
X11 및 Wayland 프로토콜에 대한 액세스는 커튼을 시작할 때 "-X"/"-Y" 및 "-W" 옵션을 지정하여 별도로 활성화되지만 그래픽 응용 프로그램에 대한 지원은 아직 충분히 안정화되지 않았으며 일련의 해결되지 않은 문제가 있습니다( 문제는 주로 X11을 사용할 때 나타나고 Wayland 지원이 훨씬 좋습니다). 사용자는 로컬 규칙 파일(~/.curtain.conf)을 생성하여 추가 제한을 추가할 수 있습니다. 예를 들어,
구현에는 필수 액세스 제어(MAC)용 mac_curtain 커널 모듈, 필수 드라이버 및 필터 구현이 포함된 FreeBSD 커널용 패치 세트, 응용 프로그램에서 plegde 및 공개 기능을 사용하기 위한 libcurtain 라이브러리, 유틸리티 커튼, 구성 표시가 포함됩니다. 파일, 테스트 모음 및 일부 사용자 공간 프로그램용 패치(예: $TMPDIR를 사용하여 임시 파일 작업 통합). 저자는 가능할 때마다 커널과 응용 프로그램을 패치해야 하는 변경 사항의 수를 최소화하려고 합니다.
최종적으로 그것에 대해 더 많이 알고 싶다면, 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서.