맞춤 정책

맞춤 정책

모든 로그를 읽을 수 있도록 logtash를 루트로 실행하고 싶습니다(모든 로그에 대한 액세스 권한을 부여하는 것은 매우 번거롭습니다). 그러나 나는 그것이 내 서버에서 미친 듯이 실행되는 것을 원하지 않기 때문에 SELinux에서 그것을 제한하는 것에 대해 생각했습니다.
내가 보는 옵션은 다음과 같습니다.

  • Logstash에 대한 완전히 새로운 라벨을 만듭니다. 이는 또한 Logstash 구성 파일, Logstash 실행 파일 및 라이브러리 등에 대한 레이블을 생성하는 것을 의미합니다.
  • 다른 프로세스용으로 설계된 레이블을 사용하여 logstash를 실행합니다. 이름에 clogd_t포함되어 있기 때문에 주시했는데 log다음을 사용하여 의심스러운 쓰기 권한을 찾을 수 없었습니다.sudo sesearch --allow -s clogd_t | grep clogd_t | less -p write
  • 포기하고 무제한 루트 프로세스로 실행하세요.

둘 다 정상적인 일입니까?

중요한 경우 CentOS 6.7을 사용하고 있습니다.

답변1

나는 맞춤형 정책을 만드는 편이 더 깨끗하고 무슨 일이 일어나고 있는지 제어할 수 있게 해주기 때문에 오히려 맞춤 정책을 만들고 싶습니다.

맞춤 정책

내가 이해한 대로 이는 실행될 Java 기반 데몬이므로 system_u:system_r:logstash_t. 그런 다음 모든 로그 파일에 대한 액세스 권한을 logstash_t 도메인에 부여하고(읽기 전용?) 마지막으로 logstash를 실행하는 데 필요할 수 있는 추가 권한을 부여해야 합니다.

refpolicy 인터페이스를 사용하면 다음과 같은 결과가 나타납니다.

policy_module(logstash, 1.0)

# define the entry point and the domain
type logstash_exec_t
init_daemon_domain(logstash_t, logstash_exec_t)

그런 다음 Logstash 데몬은 로그 파일을 읽을 수 있어야 합니다.

logging_search_all_logs(logstash_t)
logging_getattr_all_logs(logstash_t)
logging_read_all_logs(logstash_t)

이렇게 하면 대부분의 작업이 수행되고 나머지를 추가해야 합니다.

재사용 정책

두 번째 사항에 대해서는 왜 sesearch에서 보고된 쓰기 권한을 받지 못하는지 잘 모르겠지만 소스를 보면 다음과 같습니다.

# clogd.te
storage_raw_read_fixed_disk(clogd_t)
storage_raw_write_fixed_disk(clogd_t)

# storage.te 
########################################
## <summary>
##      Allow the caller to directly write to a fixed disk.
##      This is extremely dangerous as it can bypass the
##      SELinux protections for filesystem objects, and
##      should only be used by trusted domains.
## </summary>
## <param name="domain">
##      <summary>
##      Domain allowed access.
##      </summary>
## </param>
#
interface(`storage_raw_write_fixed_disk',`
# and the rest of the stuff here...

실제로 로깅 모니터링 도구에서 원하는 것은 아닙니다. 두 번째 솔루션과 함께 사용하기에 적합한 것을 찾을 수 있습니다. 불필요한 추가 권한을 얻지 못하는지 확인하세요. 이렇게 하면 selinux 내부에서 프로세스를 실행하는 전체 목적이 무효화됩니다.

도움이 되길 바랍니다.

관련 정보