RHEL7에서 systemd 서비스로 실행되는 애플리케이션이 있고 로깅을 위해 syslog를 사용합니다. 이 애플리케이션의 모니터링을 단순화하기 위해 rsyslogd
이 서비스의 로그를 전용 로그 파일에 쓰도록(만) 구성했습니다 .
httpd
이제 이 로그 파일을 사용하여 사용자가 애플리케이션을 쉽게 모니터링할 수 있도록 서비스를 제공하고 싶습니다 .
내가 직면하고 있는 문제는 파일 컨텍스트를 어떻게 설정하더라도 selinux
내가 원하는 것을 할 수 없다는 것입니다.
rsyslog
쓰기 허용var_log_t
httpd
읽기 허용httpd_sys_content_t
rsyslogd
내가 아는 한, 를 통해 쓰기 및 읽기를 허용하는 컨텍스트는 없습니다 httpd
.
이 문제를 해결하려면 어떻게 해야 합니까? 결국에는 사용자 지정 정책 모듈을 만들어야 합니까?
답변1
사용을 허용하는 부울이 있는지 확인할 수 있습니다.audit2why
, 이 경우 사용자 지정 정책 모듈을 만들 필요가 없습니다.
해당 부울이 없는 경우 Apache가 로그를 읽을 수 있도록 하려면 정책을 연결해야 합니다. 그리고audit2allow
정책 모듈을 직접 생성하거나 모듈 템플릿으로 사용할 수 있는 필수 규칙을 생성할 수 있습니다.
먼저 액세스 위반이 포함된 로그를 생성해야 합니다. 정상적인 사용 중에 모든 액세스 위반을 얻으려면 다음을 설정하십시오.httpd_t허용 모드로. 허용 모드에서는 SELinux 정책이 지정된 유형에 대해 시행되지 않습니다(httpd_t), 그러나 로그는 평소와 같이 생성됩니다.
semanage permissive -a httpd_t
구성이 유효하고 Apache를 사용하여 로그에 액세스할 수 있는지 확인한 후 적용 모드를 다시 켜십시오.
semanage permissive -d httpd_t
이제 audit2allow
새 모듈을 생성하고 삽입해 보겠습니다.
audit2allow -a -M apache_logs
semodule -i apache_logs.pp
감사 메시지가 다음에만 관련되도록 하려는 경우httpd_t모듈 생성을 위해,grep감사 로그의 관련 줄은 audit2allow에 대한 입력으로 사용됩니다. 예를 들어:
grep "httpd_t" /var/log/audit/audit.log | audit2allow -M apache_logs
생성된 규칙을 수동으로 확인하거나 수정하려는 경우리뷰 2가 허용됨, 소스 형식으로 모듈을 생성하는 옵션을 사용하십시오 -m
. 원하는 경우 생성된 모듈 소스를 확인하고 편집할 수 있습니다. 완료되면 모듈을 빌드해야 합니다. 단계는 다음과 같습니다매뉴얼 페이지예.