Назад | Перейти на главную страницу

Настройка SELinux для MongoDB

Я пытаюсь установить MongoDB на CentOS 7.2 из репозитория mongodb.org. Пока все хорошо, но хостер создал дополнительный диск (/ mongo) для всех файлов данных MongoDB. Это конфликтует с разрешениями SELinux, из-за чего MongoDB не может запуститься. Я должен начать с бега setenforce 0, но я бы не хотел запускать производственный сервер таким образом.

У меня есть некоторый опыт работы с Linux, но весь мой опыт SELinux просто отключает его. я обнаружил это руководство по CentOS SELinux, что заставило меня задуматься о беге

[user@machine lib]$ sudo chcon -Rv --type mongod_var_lib_t /mongo
changing security context of ‘/mongo/mongod.lock’
changing security context of ‘/mongo/journal/WiredTigerLog.0000000001’
changing security context of ‘/mongo/journal/WiredTigerPreplog.0000000001’
changing security context of ‘/mongo/journal/WiredTigerPreplog.0000000002’
changing security context of ‘/mongo/journal’
changing security context of ‘/mongo/WiredTiger.lock’
changing security context of ‘/mongo/WiredTiger’
changing security context of ‘/mongo/WiredTiger.wt’
changing security context of ‘/mongo/WiredTiger.turtle’
changing security context of ‘/mongo/WiredTigerLAS.wt’
changing security context of ‘/mongo/sizeStorer.wt’
changing security context of ‘/mongo/_mdb_catalog.wt’
changing security context of ‘/mongo/storage.bson’
changing security context of ‘/mongo/collection-0-7567754672580995921.wt’
changing security context of ‘/mongo/index-1-7567754672580995921.wt’
changing security context of ‘/mongo/diagnostic.data/metrics.2016-04-14T06-51-54Z-00000’
changing security context of ‘/mongo/diagnostic.data/metrics.interim’
changing security context of ‘/mongo/diagnostic.data’
changing security context of ‘/mongo’
[user@machine lib]$ ls -Z /mongo
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 collection-0-7567754672580995921.wt
drwxr-xr-x. mongod mongod system_u:object_r:mongod_var_lib_t:s0 diagnostic.data
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 index-1-7567754672580995921.wt
drwxr-xr-x. mongod mongod system_u:object_r:mongod_var_lib_t:s0 journal
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 _mdb_catalog.wt
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 mongod.lock
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 sizeStorer.wt
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 storage.bson
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 WiredTiger
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 WiredTigerLAS.wt
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 WiredTiger.lock
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 WiredTiger.turtle
-rw-r--r--. mongod mongod system_u:object_r:mongod_var_lib_t:s0 WiredTiger.wt

решит вопрос. После этого я сделал touch /.autorelabel и перезагрузился. Это, к сожалению, не устранило проблему. Как я могу это исправить?

Текущая ошибка: [user @ machine lib] $ systemctl status mongod ● mongod.service - SYSV: Mongo - это масштабируемая база данных, ориентированная на документы. Загружено: загружено (/etc/rc.d/init.d/mongod) Активно: не удалось (результат: код выхода) с четверг, 14 апреля 2016 г., 09:02:54 CEST; 2с назад Документы: man: systemd-sysv-generator (8) Процесс: 2180 ExecStart = / etc / rc.d / init.d / mongod start (code = exited, status = 1 / FAILURE)

Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld runuser[2187]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld runuser[2187]: pam_unix(runuser:session): session closed for user mongod
Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld mongod[2180]: Starting mongod: [FAILED]
Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld systemd[1]: mongod.service: control process exited, code=exited status=1
Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld systemd[1]: Unit mongod.service entered failed state.
Apr 14 09:02:54 LMG-TA-MONGO01.boolhosting.tld systemd[1]: mongod.service failed.

Если вы хотите просто настроить SELINUX для Mongo - попробуйте audit2why в вашем /var/log/audit/audit.log, чтобы узнать, какие нарушения были бы отклонены, и создать собственные политики с audit2allow. Работает в 80% инцидентов.

Если проблемы не исчезнут - запустите audit2why и исправьте другие проблемы вручную. Возможно, мы сможем помочь вам на этом этапе.

Бег sudo sealert -a /var/log/audit/audit.log дал здесь некоторые полезные идеи и рекомендации по изменению конфигурации SELinux. (Мы изменили значение dbPath в mongod.conf также.)