4.15. ptrace() 비활성화
ptrace()
시스템 호출을 사용하면 한 프로세스에서 다른 프로세스의 실행을 관찰 및 제어하고 메모리 및 레지스터를 변경할 수 있습니다. 이 호출은 디버깅 중에 개발자가 주로 사용합니다(예: strace
유틸리티를 사용할 때). ptrace()
가 필요하지 않은 경우 시스템 보안을 개선하기 위해 비활성화할 수 있습니다. 이는 다른 프로세스에서 ptrace()
를 사용할 수 없도록 unconfined_t
도메인에서 실행 중인 모든 프로세스를 거부하는 deny_ptrace
부울을 활성화하여 수행할 수 있습니다.
deny_ptrace
부울은 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 root 사용자로 명령에서 setsebool -P deny_ptrace 를 실행합니다.
~]# setsebool -P deny_ptrace on
~]# setsebool -P deny_ptrace on
이 부울이 활성화되었는지 확인하려면 다음 명령을 사용합니다.
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
~]$ getsebool deny_ptrace deny_ptrace --> on
~]$ getsebool deny_ptrace
deny_ptrace --> on
이 부울을 비활성화하려면 setsebool -P deny_ptrace off 명령을 root로 실행합니다.
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
~]# setsebool -P deny_ptrace off
~]# setsebool -P deny_ptrace off
참고
setsebool -P 명령은 영구적으로 변경합니다. 재부팅 시 변경 사항이 유지되지 않도록 하려면
-P
옵션을 사용하지 마십시오.
이 부울은 Red Hat Enterprise Linux의 일부인 패키지에만 영향을 미칩니다. 결과적으로 타사 패키지에서
ptrace()
시스템 호출을 계속 사용할 수 있었습니다. ptrace()
를 사용할 수 있는 모든 도메인을 나열하려면 다음 명령을 입력합니다. setools-console 패키지는 sesearch
유틸리티를 제공하며 패키지가 기본적으로 설치되지 않습니다.
~]# sesearch -A -p ptrace,sys_ptrace -C | grep -v deny_ptrace | cut -d ' ' -f 5
~]# sesearch -A -p ptrace,sys_ptrace -C | grep -v deny_ptrace | cut -d ' ' -f 5