Як дозволити з'єднання MySQL через SELinux?


21

Я хотів би одного разу залишити SELinux, який працює на сервері, для передбачуваного підвищення безпеки.
Зазвичай я відключаю SELinux, щоб змусити щось працювати.
Як сказати SELinux, щоб дозволити з'єднання MySQL?
Найбільше, що я знайшов у документації, - це рядок від mysql.com:

Якщо ви працюєте під Linux і ввімкнено безпеку Linux (SELinux), переконайтеся, що ви відключили захист SELinux для процесу mysqld.

вау ... це справді корисно.


1
Будь ласка, надайте нам усю наступну інформацію, щоб мати можливість допомогти вам. 1. Linux Distro та версія, 2. версія MySQL та джерело установки, 3. записи журналу AVC із відхиленого з'єднання, 4. відповідні журнали MySQL, якщо такі є 5. Вихід getsebool -a | grep mysql6. Точні кроки, які ви зробили для відтворення цього
hobodave

Відповіді:


40

Щоб перевірити SELinux

sestatus

Щоб побачити, які прапори встановлені в httpd-процесах

getsebool -a | grep httpd

Дозволити Apache підключитися до віддаленої бази даних через SELinux

setsebool httpd_can_network_connect_db 1

Параметр Use -P робить зміни постійними. Без цієї опції булевий режим буде скинутий на 0 при перезавантаженні.

setsebool -P httpd_can_network_connect_db 1

3
здається, необхідне і при підключенні через 127.0.0.1 циклічного зворотного зв'язку?
Девін Ceartas

@Devin, безумовно.
e18r

2
Якщо ви хочете дозволити користувачам підключатися до локального сервера mysql, вам слід також увімкнути boolean selinuxuser_mysql_connect_enabled.
Антон Маковецький

setsebool -P httpd_can_network_connect 1може знадобитися. Це було запропоновано в моїх журналах, виконуючи так, ausearch -m avc -ts today | audit2whyяк було запропоновано в коментарі vnix27.
сайт

2

Ви отримуєте помилку? Який аромат Linux ви використовуєте? Контекст безпеки - це гарне місце для початку, якщо ви отримуєте помилку. ls -Z дасть контекст ... Але ваше запитання дуже розпливчасте.


Я підключаюся з вікна вікна. Немає помилок ... у з’єднанні просто відмовлено, а сторінка закінчується. Я знаю, якщо вимкнути selinux, все буде добре.

оскільки з'єднання входить з вікна Windows, ls -Z надає мені лише інформацію про файли в будь-якому каталозі, в якому я перебуваю на вікні linux.

У своєму запиті вище я цитував посилання на mysql ..., в якому сказано, що вимкнути захист selinux для процесу mysqld ... але він не говорить, як це зробити :( Не можу я дізнатися, як.

Щось у журналах на вікні linux? selinux може зупинити httpd від з'єднання з сокетом ...

Нічого в повідомленнях чи захищених журналах ... чи є конкретний журнал, який ви мали на увазі?

1

Мабуть, налаштування selinux не є тривіальною. Ви можете почати тут .

setenforce 0

переводить selinux в дозвільний режим, де він дозволяє що завгодно, окрім журналів того, що дозволяє. Перезавантаження або

setenforce 1

повертається до блокування того, що політика не дозволяє.

Перегляньте ці документи щодо політики selinux для mySQL у Fedora .



1

ausearchКоманда може допомогти знайти журнал помилок.


1
ausearch -m avc -ts сьогодні | audit2why, команда може запропонувати рішення
vnix27

1

ви можете також будувати місцеву політику:

"Ви можете створити модуль локальної політики, щоб дозволити цей доступ. Дозволити наразі цей доступ, виконавши:"

grep httpd /var/log/audit/audit.log | audit2allow -M mypol

semodule -i mypol.pp

або ввімкнути глобально для фактичного сеансу:

setsebool httpd_can_network_connect_db 1

або постійні:

setsebool -P httpd_can_network_connect_db 1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.