Security-Enhanced Linux (SELinux) jest modułem jądra Linuksa, który zapewnia framework do konfigurowania systemu obowiązkowej kontroli dostępu (MAC) dla wielu zasobów w systemie. Jest domyślnie włączona w niektórych dystrybucjach Linuksa, w tym RHEL, CentOS, Fedora i innych podobnych dystrybucjach Linuksa. SELinux uniemożliwia programom dostęp do plików, katalogów lub portów, chyba że jest skonfigurowany do dostępu do tych zasobów.
- sprawdzanie, czy SELinux jest włączony
- tymczasowe umieszczenie mysqld w trybie Permissive
- Budowanie i ładowanie polityki SELinux serwera
- ustawienie kontekstów plików
- ustawienie kontekstu Pliku dla katalogu z danymi
- ustawienie kontekstu Pliku dla plików dziennika
- ustawienie kontekstu Pliku dla plików opcji
- umożliwienie dostępu do kontekstu pliku Tmpfs
- Rozwiązywanie problemów z SELinux
- błędy uprawnień systemu plików
- SELinux i MariaDB na innym porcie
- generowanie polityk SELinux z audit2allow
sprawdzanie, czy SELinux jest włączony
aby sprawdzić, czy SELinux jest włączony, wykonaj poleceniegetenforce
. Na przykład:
getenforce
tymczasowe umieszczenie mysqld w trybie Permissive
podczas rozwiązywania problemów, które Twoim zdaniem mogą być przyczyną SELinux, może pomóc tymczasowe umieszczenie mysqld_t
w trybie permissive. Można to zrobić wykonując poleceniesemanage
. Na przykład:
sudo semanage permissive -a mysqld_t
Jeśli to rozwiązało problem, oznacza to, że winowajcą jest obecna polityka SELinux. Musisz dostosować politykę SELinux lub etykiety dla MariaDB.
Budowanie i ładowanie polityki SELinux serwera
serwer MariaDB zawiera politykę SELinux, która nie jest domyślnie budowana lub ładowana. W wielu systemach polityka jest instalowana na /usr/share/mysql/policy/selinux/mariadb-server.fc
. Aby go zbudować i załadować, wykonaj następujące czynności:
ustawienie kontekstów plików
SELinux używa kontekstów plików jako sposobu określania, kto powinien mieć dostęp do tego pliku.
konteksty plików są zarządzane za pomocą poleceńsemanage fcontext
Irestorecon
.
w wielu systemach narzędziesemanage
jest instalowane przez pakietpolicycoreutils-python
, a narzędzierestorecon
jest instalowane przez pakietpolicycoreutils
. Można je zainstalować za pomocą następującego polecenia:
sudo yum install policycoreutils policycoreutils-python
bieżący kontekst pliku lub katalogu można sprawdzić, wykonującls
z opcjami--context
lub--scontext
.
ustawienie kontekstu Pliku dla katalogu z danymi
Jeśli używasz katalogu niestandardowego dladatadir
, może być konieczne ustawienie kontekstu pliku dla tego katalogu. Kontekst pliku SELinux dla plików danych MariaDB to mysqld_db_t
. Możesz określić, czy ten kontekst pliku jest obecny w systemie i jakie pliki lub katalogi są z nim powiązane, wykonując następujące polecenie:
sudo semanage fcontext --list | grep mysqld_db_t
Jeśli chcesz ustawić kontekst pliku dla swojego katalogu niestandardowego dladatadir
, możesz to zrobić, wykonując poleceniasemanage fcontext
Irestorecon
. Na przykład:
sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data
Jeśli chcesz sprawdzić bieżący kontekst pliku, możesz to zrobić, wykonującls
z opcjami--context
lub--scontext
. Na przykład:
ls --directory --scontext /mariadb/data
ustawienie kontekstu Pliku dla plików dziennika
Jeśli używasz niestandardowego katalogu dla plików dziennika, może być konieczne ustawienie kontekstu pliku dla tego katalogu. Kontekst pliku SELinux dla plików dziennika MariaDB to mysqld_log_t
. Możesz określić, czy ten kontekst pliku jest obecny w systemie i jakie pliki lub katalogi są z nim powiązane, wykonując następujące polecenie:
sudo semanage fcontext --list | grep mysqld_log_t
Jeśli chcesz ustawić kontekst pliku dla własnego katalogu dla plików dziennika, możesz to zrobić, wykonując poleceniasemanage fcontext
Irestorecon
. Na przykład:
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql
Jeśli chcesz sprawdzić bieżący kontekst pliku, możesz to zrobić, wykonującls
z opcjami--context
lub--scontext
. Na przykład:
ls --directory --scontext /var/log/mysql
ustawienie kontekstu Pliku dla plików opcji
Jeśli używasz katalogu niestandardowego dla plików opcji, może być konieczne ustawienie kontekstu pliku dla tego katalogu. Kontekst pliku SELinux dla plików opcji MariaDB to mysqld_etc_t
. Możesz określić, czy ten kontekst pliku jest obecny w systemie i jakie pliki lub katalogi są z nim powiązane, wykonując następujące polecenie:
sudo semanage fcontext --list | grep mysqld_etc_t
Jeśli chcesz ustawić kontekst pliku dla własnego katalogu dla plików opcji, możesz to zrobić, wykonując poleceniasemanage fcontext
Irestorecon
. Na przykład:
sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb
Jeśli chcesz sprawdzić bieżący kontekst pliku, możesz to zrobić, wykonującls
z opcjami--context
lub--scontext
. Na przykład:
ls --directory --scontext /etc/mariadb
umożliwienie dostępu do kontekstu pliku Tmpfs
Jeśli chcesz zamontować swój tmpdir
na tmpfs
system plików lub chcesz użyć tmpfs
system plików na /run/shm
, wtedy może być konieczne zezwolenie mysqld_t
, aby mieć dostęp do kilku kontekstów plików związanych z tmpfs. Na przykład:
Rozwiązywanie problemów z SELinux
może być konieczne rozwiązywanie problemów związanych z SELinux w przypadkach, takich jak:
- MariaDB używa innego niż domyślny portu.
- MariaDB odczytuje lub zapisuje do niektórych plików (datadir, pliki logów, pliki opcji, itp.) znajduje się na ścieżkach innych niż domyślne.
- MariaDB używa wtyczki, która wymaga dostępu do zasobów, których domyślne instalacje nie używają.
błędy uprawnień systemu plików
Jeśli uprawnienia systemu plików dla niektórych katalogów MariaDB wyglądają dobrze, ale dziennik błędów MariaDB nadal ma błędy, które wyglądają podobnie do następujących:
następnie sprawdź SELinux/var/log/audit/audit.log
dla wpisów dziennika, które wyglądają podobnie do następujących:
Jeśli widzisz jakieś wpisy, które wyglądają podobnie do tego, najprawdopodobniej musisz dostosować konteksty plików dla niektórych plików lub katalogów. Więcej informacji na ten temat można znaleźć w sekcji Ustawianie kontekstów plików.
SELinux i MariaDB na innym porcie
porty TCP i UDP są włączone dla uprawnień do bindowania. Jeśli używasz innego portu lub niektórych portów Galera, skonfiguruj SELinux, aby móc korzystać z tych portów:
sudo semanage port -a -t mysqld_port_t -p tcp 3307
generowanie polityk SELinux z audit2allow
w niektórych przypadkach system MariaDB może potrzebować niestandardowych zasad. Można utworzyć te zasady z dziennika audytu SELinux przy użyciu narzędziaaudit2allow
. Potrzebne będą również narzędziasemanage
I semodule
.
w wielu systemachaudit2allow
Isemanage
narzędzia są instalowane przezpolicycoreutils-python
pakiet, asemodule
narzędzie jest instalowane przezpolicycoreutils
pakiet. Możesz je zainstalować za pomocą następującego polecenia:
sudo yum install policycoreutils policycoreutils-python
następujący proces może być użyty do wygenerowania Polityki z dziennika kontroli:
- Usuń audyty z polityki:
sudo semodule -DB
- tymczasowo umieścić
mysqld_t
w tryb przyzwolenia. Na przykład:
sudo semanage permissive -a mysqld_t
- Uruchom MariaDB.
- zrób to, co powodowało błędy SELinux.
- użyj wygenerowanego dziennika audytu, aby utworzyć zasadę:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
- wyciągnij
mysqld_t
z trybu dozwolonego. Na przykład:
sudo semanage permissive -d mysqld_t
- Przywróć audyty dla polityki:
sudo setmodule -B
ta sama procedura może być użyta, jeśli MariaDB zostanie uruchomiony, ale SELinux uniemożliwia jego prawidłowe działanie. Na przykład, SELinux może uniemożliwić uwierzytelnianie użytkowników wtyczki PAM. Rozwiązanie jest takie samo-włącz audyt, Przełącz na permissive, zrób, cokolwiek SELinux nie pozwolił, Utwórz Politykę z dziennika audytu.
gdy odkryjesz potrzebne uprawnienia SELinux, zgłoś je do systemu operacyjnego śledzenie błędów, aby wszyscy użytkownicy mogli korzystać z twojej pracy (np. Red Hat Bugzilla https://bugzilla.redhat.com/).