Security-Enhanced Linux z MariaDB

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

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ąclsz opcjami--contextlub--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ąclsz opcjami--contextlub--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ąclsz opcjami--contextlub--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ąclsz opcjami--contextlub--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ągnijmysqld_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/).

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.