11장. polyinstantiated 디렉토리 구성


기본적으로 모든 프로그램, 서비스 및 사용자는 임시 스토리지에 /tmp,/var/tmp 및 홈 디렉토리를 사용합니다. 이렇게 하면 이러한 디렉터리는 파일 이름을 기반으로 경쟁 조건 공격 및 정보 유출에 취약합니다. /tmp/, /var/tmp /, 홈 디렉토리를 인스턴스화하여 모든 사용자와 사용자의 /tmp-inst/var/tmp/tmp-inst 가 /tmp 및 /var /tmp 디렉터리에 별도로 마운트됩니다.

절차

  1. SELinux에서 polyinstantiation을 활성화합니다.

    # setsebool -P allow_polyinstantiation 1

    getsebool allow_polyinstantiation 명령을 입력하여 SELinux에서 polyinstantiation이 활성화되었는지 확인할 수 있습니다.

  2. 필요한 권한으로 재부팅을 통해 데이터 지속성을 위한 디렉터리 구조를 만듭니다.

    # mkdir /tmp-inst /var/tmp/tmp-inst --mode 000
  3. SELinux 사용자 부분을 포함하여 전체 보안 컨텍스트를 복원합니다.

    # restorecon -Fv /tmp-inst /var/tmp/tmp-inst
    Relabeled /tmp-inst from unconfined_u:object_r:default_t:s0 to system_u:object_r:tmp_t:s0
    Relabeled /var/tmp/tmp-inst from unconfined_u:object_r:tmp_t:s0 to system_u:object_r:tmp_t:s0
  4. 시스템이 fapolicyd 애플리케이션 제어 프레임워크를 사용하는 경우 fapolicyd 를 허용하여 /etc/fapolicyd/fapolicyd.conf 구성 파일에서 allow_filesystem_mark 옵션을 활성화하여 기본 파일 시스템에서 파일 액세스 이벤트를 모니터링할 수 있습니다.

    allow_filesystem_mark = 1
  5. /tmp , /var /tmp /, 사용자의 홈 디렉터리를 인스턴스화할 수 있습니다.

    중요

    pam_namespace_helper 프로그램이 /etc/security/namespace.d.d 의 추가 파일을 읽지 않기 때문에 /etc/security/namespace.d/ 디렉터리에서 별도의 파일 대신 /etc/security/namespace.conf 를 사용합니다.

    1. 다중 수준 보안(MLS)이 있는 시스템에서 /etc/security/namespace.conf 파일에서 마지막 세 행의 주석을 제거합니다.

      /tmp     /tmp-inst/   		   level 	 root,adm
      /var/tmp /var/tmp/tmp-inst/    level 	 root,adm
      $HOME    $HOME/$USER.inst/     level
    2. 다중 수준 보안(MLS)이 없는 시스템에서 /etc/security/namespace.conf 파일에 다음 행을 추가합니다.

      /tmp     /tmp-inst/            user 	 root,adm
      /var/tmp /var/tmp/tmp-inst/    user 	 root,adm
      $HOME    $HOME/$USER.inst/     user
  6. pam_namespace.so 모듈이 세션에 대해 구성되었는지 확인합니다.

    $ grep namespace /etc/pam.d/login
    session    required     pam_namespace.so
  7. 선택 사항: 클라우드 사용자가 SSH 키를 사용하여 시스템에 액세스할 수 있도록 활성화합니다.

    1. openssh-keycat 패키지를 설치합니다.
    2. 다음 콘텐츠를 사용하여 /etc/ssh/sshd_config.d/ 디렉터리에 파일을 생성합니다.

      AuthorizedKeysCommand /usr/libexec/openssh/ssh-keycat
      AuthorizedKeysCommandRunAs root
    3. sshd_configPubkeyAuthentication 변수가 yes 로 설정되어 있는지 확인하여 공개 키 인증이 활성화되어 있는지 확인합니다. sshd_config 의 행이 주석 처리되어 있어도 기본적으로 PubkeyAuthentication 은 yes로 설정됩니다.

      $ grep -r PubkeyAuthentication /etc/ssh/
      /etc/ssh/sshd_config:#PubkeyAuthentication yes
  8. 세션에 system-auth 행이 포함된 후 polyinstantiation이 적용되어야 하는 각 서비스의 모듈에 필요한 pam_namespace.so unmnt_remnt 항목을 추가합니다. 예를 들어 /etc/pam.d/su,/etc/pam.d/sudo,/etc/pam.d/ssh, /etc/pam.d/sshd:

    [...]
    session        include        system-auth
    session        required    pam_namespace.so unmnt_remnt
    [...]

검증

  1. root가 아닌 사용자로 로그인합니다. polyinstantiation을 구성하기 전에 로그인한 사용자는 변경 사항이 적용되기 전에 로그아웃하고 로그인해야 합니다.
  2. /tmp/ 디렉터리가 /tmp-inst/:에 마운트되었는지 확인합니다.

    $ findmnt --mountpoint /tmp/
    TARGET SOURCE                 	FSTYPE OPTIONS
    /tmp   /dev/vda1[/tmp-inst/<user>] xfs	rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota

    SOURCE 출력은 사용자 환경에 따라 다릅니다. * virutal 시스템에서 /dev/vda_<number >__ . * 베어 메탈 시스템에서 /dev/sda_<number>_ 또는 /dev/nvme*를 표시합니다.

추가 리소스

  • /usr/share/doc/pam/txts/README.pam_namespace readme 파일이 pam 패키지로 설치됩니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.