Выполнение logstash под SELinux

Я хочу выполнить logstash как корень, чтобы позволить этому читать все журналы (предоставление его, доступ к каждому журналу очень утомителен). Однако я не хочу это бывший вне себя на моем сервере, я думал об ограничении его под SELinux.
Опции, которые я вижу:

  • Создайте всю новую маркировку для logstash. Это также означает создавать маркировки для logstash файлов конфигурации, logstash исполняемые файлы и библиотеки, и т.д.
  • Выполненный logstash использование маркировки разработан для другого процесса. Я поставил глаз clogd_t так как это имеет log на его имя и я не мог найти подозрительное использование полномочий записи sudo sesearch --allow -s clogd_t | grep clogd_t | less -p write
  • Сдайтесь и выполните его как неограниченный корневой процесс

Действительно ли любой - нормальная вещь сделать?

В случае, если это имеет значение, я использую CentOS 6.7

2
задан 7 October 2015 в 11:06
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.

Надеюсь, это поможет.

3
ответ дан 3 December 2019 в 10:41

Теги

Похожие вопросы