Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.15. ptrace() 비활성화

ptrace() 시스템 호출을 사용하면 한 프로세스에서 다른 프로세스의 실행을 관찰하고 제어하고 메모리 및 레지스터를 변경할 수 있습니다. 이 호출은 주로 디버깅 중에 개발자가 사용합니다(예: strace 유틸리티 사용 시). ptrace() 가 필요하지 않은 경우 시스템 보안을 개선하기 위해 비활성화할 수 있습니다. 이 작업은 unconfined _t 도메인에서 실행 중인 프로세스를 거부하는 deny_ptrace 부울을 활성화하여 다른 프로세스에서 ptrace() 를 사용할 수 없습니다.
deny_ptrace 부울은 기본적으로 비활성화되어 있습니다. 활성화하려면 root 사용자로 setsebool -P deny_ptrace를 실행합니다.
~]# setsebool -P deny_ptrace on
이 부울이 활성화되었는지 확인하려면 다음 명령을 사용합니다.
~]$ getsebool deny_ptrace
deny_ptrace --> on
이 부울을 비활성화하려면 setsebool -P deny_ptrace off 명령을 root로 실행합니다.
~]# 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