Security-Enhanced Linux med MariaDB

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

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/).

Lämna ett svar

Din e-postadress kommer inte publiceras.