Security-Enhanced Linux (SELinux) är en Linux-kärnmodul som ger ett ramverk för att konfigurera obligatoriskt åtkomstkontrollsystem (MAC) för många resurser på systemet. Det är aktiverat som standard på vissa Linux-distributioner, inklusive RHEL, CentOS, Fedora och annan liknande Linux-distribution. SELinux hindrar program från att komma åt filer, kataloger eller portar om det inte är konfigurerat för att komma åt dessa resurser.
- verifiera om SELinux är aktiverat
- tillfälligt sätta mysqld I tillåtet Läge
- bygga och läsa in serverns SELinux-Policy
- Inställning av Filkontexter
- ställa in Filkontext för datakatalogen
- ställa in Filkontext för loggfiler
- ställa in Filkontexten för Alternativfiler
- tillåter åtkomst till tmpfs-Filkontexten
- felsökning av SELinux-problem
- Filsystemtillståndsfel
- SELinux och MariaDB på en annan Port
- generera SELinux-policyer med audit2allow
verifiera om SELinux är aktiverat
för att verifiera om SELinux är aktiverat, kör kommandot getenforce
. Till exempel:
getenforce
tillfälligt sätta mysqld I tillåtet Läge
När du felsöker problem som du tror att SELinux kan orsaka kan det hjälpa till att tillfälligt sätta mysqld_t
I tillåtet Läge. Detta kan göras genom att utföra kommandot semanage
. Exempelvis:
sudo semanage permissive -a mysqld_t
om det löste problemet betyder det att den nuvarande SELinux-politiken är den skyldige. Du måste justera SELinux-policyn eller etiketterna för MariaDB.
bygga och läsa in serverns SELinux-Policy
MariaDB-Server levereras med en SELinux-princip som inte är byggd eller laddad som standard. På många system installeras policyn till /usr/share/mysql/policy/selinux/mariadb-server.fc
. För att bygga det och ladda det, kör följande:
Inställning av Filkontexter
SELinux använder filkontexter som ett sätt att avgöra vem som ska kunna komma åt den filen.
Filsammanhang hanteras med kommandonasemanage fcontext
ochrestorecon
.
på många system installeras semanage
verktyget av policycoreutils-python
paketet, och restorecon
verktyget installeras av policycoreutils
paketet. Du kan installera dessa med följande kommando:
sudo yum install policycoreutils policycoreutils-python
en fil eller katalogs aktuella sammanhang kan kontrolleras genom att köra ls
med alternativen --context
eller --scontext
.
ställa in Filkontext för datakatalogen
Om du använder en anpassad katalog för datadir
, kan du behöva ställa in filkontext för den katalogen. SELinux – filkontexten för MariaDB – datafiler är mysqld_db_t
. Du kan avgöra om det här filkontexten finns på ditt system och vilka filer eller kataloger det är associerat med genom att utföra följande kommando:
sudo semanage fcontext --list | grep mysqld_db_t
Om du vill ställa in filkontexten för din anpassade katalog för din datadir
, kan det göras genom att utföra kommandona semanage fcontext
och restorecon
. Till exempel:
sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data
Om du vill kontrollera det aktuella filkontexten kan du göra det genom att köra ls
med alternativen --context
eller --scontext
. Exempelvis:
ls --directory --scontext /mariadb/data
ställa in Filkontext för loggfiler
Om du använder en anpassad katalog för loggfiler kan du behöva ställa in filkontext för den katalogen. SELinux – filkontexten för MariaDB-loggfiler är mysqld_log_t
. Du kan avgöra om det här filkontexten finns på ditt system och vilka filer eller kataloger det är associerat med genom att utföra följande kommando:
sudo semanage fcontext --list | grep mysqld_log_t
Om du vill ställa in filkontexten för din anpassade katalog för loggfiler, kan det göras genom att köra kommandona semanage fcontext
och restorecon
. Till exempel:
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql
Om du vill kontrollera det aktuella filkontexten kan du göra det genom att köra ls
med alternativen --context
eller --scontext
. Exempelvis:
ls --directory --scontext /var/log/mysql
ställa in Filkontexten för Alternativfiler
Om du använder en anpassad katalog för alternativfiler kan du behöva ställa in filkontexten för den katalogen. SELinux – filkontexten för MariaDB-alternativfiler är mysqld_etc_t
. Du kan avgöra om det här filkontexten finns på ditt system och vilka filer eller kataloger det är associerat med genom att utföra följande kommando:
sudo semanage fcontext --list | grep mysqld_etc_t
Om du vill ställa in filkontexten för din anpassade katalog för alternativfiler, kan det göras genom att köra kommandona semanage fcontext
och restorecon
. Till exempel:
sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb
Om du vill kontrollera det aktuella filkontexten kan du göra det genom att köra ls
med alternativen --context
eller --scontext
. Exempelvis:
ls --directory --scontext /etc/mariadb
tillåter åtkomst till tmpfs-Filkontexten
Om du vill montera ditttmpdir
på etttmpfs
filsystem eller vill använda etttmpfs
filsystem på/run/shm
, då kan du behöva tillåtamysqld_t
för att få tillgång till ett par tmpfs-relaterade filkontexter. Till exempel:
felsökning av SELinux-problem
Du kan behöva felsöka SELinux-relaterade problem i fall, till exempel:
- MariaDB använder en icke-standardport.
- MariaDB läser från eller skriver till vissa filer (datadir, loggfiler, alternativfiler etc.) ligger på icke-standardvägar.
- MariaDB använder ett plugin som kräver åtkomst till resurser som standardinstallationer inte använder.
Filsystemtillståndsfel
om filsystembehörigheterna för någon MariaDB-katalog ser bra ut, men MariaDB-felloggen har fortfarande fel som liknar följande:
kontrollera sedan SELinux /var/log/audit/audit.log
för loggposter som liknar följande:
Om du ser några poster som liknar detta, måste du troligtvis justera filkontexterna för vissa filer eller kataloger. Se Ställa in Filkontexter för mer information om hur du gör det.
SELinux och MariaDB på en annan Port
tcp-och UDP-portar är aktiverade för behörighet att binda också. Om du använder en annan port eller några Galera-portar, konfigurera SELinux för att kunna använda dessa portar:
sudo semanage port -a -t mysqld_port_t -p tcp 3307
generera SELinux-policyer med audit2allow
i vissa fall kan ett MariaDB-system behöva icke-standardiserade policyer. Det är möjligt att skapa dessa principer från SELinux-granskningsloggen med hjälp av audit2allow
– verktyget. Verktygen semanage
och semodule
kommer också att behövas.
på många system installerasaudit2allow
ochsemanage
– verktygen avpolicycoreutils-python
– paketet, ochsemodule
– verktyget installeras avpolicycoreutils
paket. Du kan installera dessa med följande kommando:
sudo yum install policycoreutils policycoreutils-python
följande process kan användas för att generera en policy från granskningsloggen:
- ta bort dontaudits från policyn:
sudo semodule -DB
- lägg tillfälligt
mysqld_t
till tillåtande läge. Till exempel:
sudo semanage permissive -a mysqld_t
- starta MariaDB.
- gör vad som orsakade SELinux-fel.
- använd den genererade granskningsloggen för att skapa en policy:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
- dra
mysqld_t
ur tillåtet Läge. Exempelvis:
sudo semanage permissive -d mysqld_t
- Återställ dontaudits för policyn:
sudo setmodule -B
samma procedur kan användas om MariaDB startar men SELinux förhindrar att den fungerar korrekt. SELinux kan till exempel förhindra att Pam-plugin autentiserar användare. Lösningen är densamma-aktivera revision, byt till tillåtet, gör, vad SELinux inte tillät dig att skapa en policy från granskningsloggen.
När du upptäcker några nödvändiga SELinux behörigheter, vänligen rapportera nödvändiga behörigheter till operativsystemet felrapportering så att alla användare kan dra nytta av ditt arbete (t.ex. Red Hat Bugzilla https://bugzilla.redhat.com/).