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

Просматривать, сравнивать и копировать конфигурации SELinux между машинами?

У меня две машины с одинаковыми настройками JBoss и HTTPD. Они начали с одной и той же установки RedHat 7, и последовал один и тот же процесс для установки всего на обеих машинах.

На одной машине все отлично работает с SELinux, работающим с настройками по умолчанию. Я на нем SELinux не трогал.

На другом компьютере, когда я пытаюсь получить к нему доступ в веб-браузере, я получаю 403 запрещенных сообщения об ошибке. Когда я поискал в сети почему, я нашел предложение отключить на нем SELinux и посмотреть, сработает ли он тогда. Так что я побежал setenforce 0, перезапустил jboss и httpd, обновил мой браузер, и запретное сообщение исчезло, все снова заработало. Я снова включаю SELinux с помощью setenforce 1, перезапустите приложения, обновите браузер, и запрещенное сообщение вернется.

Итак, на моей второй машине определенно что-то не так с SELinux. Это странно, потому что я не трогал SELinux ни на одной из машин, пока не попытался выключить его на второй. Я убедился, что на первой машине, когда я запустил getenforce, он возвращается Enforcing.

У меня вопрос - как я могу просмотреть конфигурации SELinux на каждой машине? Как я могу сравнить их, чтобы узнать, в чем разница между ними, и отредактировать или скопировать их, чтобы я мог запускать SELinux на второй машине, не мешая моим приложениям, как на моей первой машине?

редактировать - Я выполнил эту команду для поиска в журналах аудита:

cat /var/log/audit/audit.log | grep httpd | grep denied

Первая строка повторяется несколько раз. Последние две строчки появлялись только один раз в самом конце.

type=AVC msg=audit(1468877854.297:22110): avc:  denied  { getattr } for  pid=5193 comm="httpd" path="/var/www/html/sfo/index.htm" dev="dm-0" ino=70334613 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1468877854.297:22111): avc:  denied  { read } for  pid=5193 comm="httpd" name="index.htm" dev="dm-0" ino=70334613 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=AVC msg=audit(1468877854.297:22111): avc:  denied  { open } for  pid=5193 comm="httpd" path="/var/www/html/sfo/index.htm" dev="dm-0" ino=70334613 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file

Я не вижу подобных сообщений на машине, на которой работает SELinux без неправильной блокировки страницы. На обеих машинах установлены одинаковые флаги разрешений для / var, / var / www, / var / www / html, / var / www / html / sfo и /var/www/html/sfo/index.htm.

Во всех каталогах есть drwxr-xr-xфайл index.htm имеет -rw-r--r--. Все они принадлежат пользователю root и группе root. md5sum говорит, что / etc / sudoers идентичны. Ничего нет в /etc/sudoers.d ни на одной из машин.

Обе машины имеют одинаковый выход для getsebool -a | grep httpd:

httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off

С SELinux файловая система имеет дополнительные «разрешения» сверх обычных UNIX. Если бы вы бежали ls -Z ... (-Z это расширение SELinux для ls(1)) в файлах в /var/www/html Я подозреваю, что на обеих машинах вы увидите следующее:

На сервере A:

drwxr-xr-x root root system_u:object_r:httpd_sys_content_t /var/www/html/

На сервере B:

drwxr-xr-x root root system_u:object_r:var_t /var/www/html/

и т.п.

На сервере А это является правильно помечены, чтобы Apache мог читать этот каталог с активным SELinux. На сервере B каталог не правильно помечен, чтобы Apache мог его прочитать, пока активен SELinux.

Чтобы исправить это, попробуйте сначала запустить restorecon -Rvn /var/www/ который покажет вам, как файловая система будет изменена, чтобы соответствовать текущей политике SELinux. Если это кажется разумным, удалите -n флаг и повторно запустить.

Также есть полезный httpd_selinux(8) man-страницу, которая документирует SELinux в отношении Apache.