11장. polyinstantiated 디렉토리 구성
기본적으로 모든 프로그램, 서비스 및 사용자는 임시 스토리지에 /tmp
,/var/tmp
및 홈 디렉토리를 사용합니다. 이렇게 하면 이러한 디렉터리는 파일 이름을 기반으로 경쟁 조건 공격 및 정보 유출에 취약합니다. /tmp/
,
, 홈 디렉토리를 인스턴스화하여 모든 사용자와 사용자의 /var/tmp
//tmp-inst
와 /var/tmp/tmp-inst
가 /tmp 및 /var /tmp
디렉터리에 별도로 마운트됩니다.
절차
SELinux에서 polyinstantiation을 활성화합니다.
# setsebool -P allow_polyinstantiation 1
getsebool allow_polyinstantiation
명령을 입력하여 SELinux에서 polyinstantiation이 활성화되었는지 확인할 수 있습니다.필요한 권한으로 재부팅을 통해 데이터 지속성을 위한 디렉터리 구조를 만듭니다.
# mkdir /tmp-inst /var/tmp/tmp-inst --mode 000
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
시스템이
fapolicyd
애플리케이션 제어 프레임워크를 사용하는 경우fapolicyd
를 허용하여/etc/fapolicyd/fapolicyd.conf
구성 파일에서allow_filesystem_mark
옵션을 활성화하여 기본 파일 시스템에서 파일 액세스 이벤트를 모니터링할 수 있습니다.allow_filesystem_mark = 1
/tmp , /
var
, 사용자의 홈 디렉터리를 인스턴스화할 수 있습니다./tmp
/중요pam_namespace_helper
프로그램이/etc/security/namespace.d
.d 의 추가 파일을 읽지 않기 때문에/etc/security/namespace.d/
디렉터리에서 별도의 파일 대신/etc/security/namespace.conf
를 사용합니다.다중 수준 보안(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
다중 수준 보안(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
pam_namespace.so
모듈이 세션에 대해 구성되었는지 확인합니다.$ grep namespace /etc/pam.d/login session required pam_namespace.so
선택 사항: 클라우드 사용자가 SSH 키를 사용하여 시스템에 액세스할 수 있도록 활성화합니다.
-
openssh-keycat
패키지를 설치합니다. 다음 콘텐츠를 사용하여
/etc/ssh/sshd_config.d/
디렉터리에 파일을 생성합니다.AuthorizedKeysCommand /usr/libexec/openssh/ssh-keycat AuthorizedKeysCommandRunAs root
sshd_config
의PubkeyAuthentication
변수가yes
로 설정되어 있는지 확인하여 공개 키 인증이 활성화되어 있는지 확인합니다.sshd_config
의 행이 주석 처리되어 있어도 기본적으로PubkeyAuthentication
은 yes로 설정됩니다.$ grep -r PubkeyAuthentication /etc/ssh/ /etc/ssh/sshd_config:#PubkeyAuthentication yes
-
세션에
항목을 추가합니다. 예를 들어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 [...]
검증
- root가 아닌 사용자로 로그인합니다. polyinstantiation을 구성하기 전에 로그인한 사용자는 변경 사항이 적용되기 전에 로그아웃하고 로그인해야 합니다.
/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
패키지로 설치됩니다.