Security-Enhanced Linux med MariaDB

Security-Enhanced Linux (SELinux) er En Linux-kjernemodul som gir et rammeverk for konfigurering av obligatorisk tilgangskontroll (MAC) system for mange ressurser på systemet. Den er aktivert som standard på Noen Linux-distribusjoner, inkludert RHEL, CentOS, Fedora og annen Lignende Linux-distribusjon. SELinux hindrer programmer i å få tilgang til filer, kataloger eller porter, med mindre de er konfigurert til å få tilgang til disse ressursene.

Kontrollere Om SELinux Er Aktivert

for å kontrollere Om SELinux er aktivert, kjør kommandoengetenforce. For eksempel:

getenforce

Midlertidig Å Sette mysqld I Permissiv Modus

når du feilsøker problemer som du tror SELinux kan forårsake, kan det hjelpe å midlertidig sette mysqld_t i permissiv modus. Dette kan gjøres ved å utføre kommandoensemanage. Eksempelvis:

sudo semanage permissive -a mysqld_t

hvis det løste problemet, betyr det at Den nåværende SELinux-politikken er synderen. Du må justere SELinux-politikken eller etikettene For MariaDB.

Bygge Og Laste Serverens SELinux Policy

MariaDB Server kommer med En SELinux-policy som ikke er bygget eller lastet som standard. På mange systemer er policyen installert til /usr/share/mysql/policy/selinux/mariadb-server.fc. For å bygge den og laste den, utfør følgende:

Innstilling Av Filkontekster

SELinux bruker filkontekster som en måte å avgjøre hvem som skal kunne få tilgang til filen.

filkontekster administreres med kommandoene semanage fcontext og restorecon.

på mange systemer ersemanageverktøyet installert avpolicycoreutils-python pakken, ogrestorecon verktøyet er installert avpolicycoreutils pakken. Du kan installere disse med følgende kommando:

sudo yum install policycoreutils policycoreutils-python

en fil eller katalogens nåværende kontekst kan kontrolleres ved å utførels med--context eller--scontext alternativer.

Angi Filkonteksten for Datakatalogen

hvis du bruker en egendefinert katalog for datadir, må du kanskje angi filkonteksten for den katalogen. Selinux-filkonteksten for MariaDB-datafiler er mysqld_db_t. Du kan avgjøre om denne filkonteksten er til stede på systemet ditt og hvilke filer eller kataloger det er knyttet til ved å utføre følgende kommando:

sudo semanage fcontext --list | grep mysqld_db_t

hvis du vil angi filkonteksten for din egendefinerte katalog for datadir, kan det gjøres ved å utføre kommandoene semanage fcontext og restorecon. For eksempel:

sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data

hvis du vil sjekke gjeldende filkontekst, kan du gjøre det ved å utførels med--context eller--scontext alternativer. Eksempelvis:

ls --directory --scontext /mariadb/data

Angi Filkonteksten for Loggfiler

hvis du bruker en egendefinert katalog for loggfiler, må du kanskje angi filkonteksten for den katalogen. Selinux-filkonteksten for MariaDB-loggfiler er mysqld_log_t. Du kan avgjøre om denne filkonteksten er til stede på systemet ditt og hvilke filer eller kataloger det er knyttet til ved å utføre følgende kommando:

sudo semanage fcontext --list | grep mysqld_log_t

hvis du vil angi filkonteksten for din egendefinerte katalog for loggfiler, kan det gjøres ved å utføre kommandoene semanage fcontext og restorecon. For eksempel:

sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql

hvis du vil sjekke gjeldende filkontekst, kan du gjøre det ved å utføre ls med --context eller --scontext alternativer. Eksempelvis:

ls --directory --scontext /var/log/mysql

Angi Filkonteksten for Alternativfiler

hvis du bruker en egendefinert katalog for alternativfiler, må du kanskje angi filkonteksten for den katalogen. Selinux-filkonteksten for MariaDB-alternativfiler er mysqld_etc_t. Du kan avgjøre om denne filkonteksten er til stede på systemet ditt og hvilke filer eller kataloger det er knyttet til ved å utføre følgende kommando:

sudo semanage fcontext --list | grep mysqld_etc_t

hvis du vil angi filkonteksten for din egendefinerte katalog for alternativfiler, kan det gjøres ved å utføre kommandoene semanage fcontext og restorecon. For eksempel:

sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb

hvis du vil sjekke gjeldende filkontekst, kan du gjøre det ved å utføre ls med --context eller --scontext alternativer. Eksempelvis:

ls --directory --scontext /etc/mariadb

Tillater Tilgang Til Tmpfs-Filkonteksten

hvis du vil monteretmpdir på entmpfs filsystem eller ønsket å bruke entmpfs filsystem på/run/shm, så må Du Kanskje Tillatemysqld_t for å få tilgang til et par tmpfs-relaterte filkontekster. For eksempel:

Feilsøking Av Selinux-Problemer

Du må kanskje feilsøke SELinux-relaterte problemer i tilfeller, for eksempel:

  • MariaDB bruker en port som ikke er standard.MariaDB leser fra eller skriver til noen filer (datadir, loggfiler, opsjonsfiler, etc.) ligger på ikke-standard baner.MariaDB bruker en plugin som krever tilgang til ressurser som standardinstallasjoner ikke bruker.

Filsystemtillatelsesfeil

hvis filsystemtillatelsene for Noen MariaDB-katalog ser bra ut, men MariaDB-feilloggen fortsatt har feil som ligner på følgende:

så sjekk Selinuxs/var/log/audit/audit.log for loggoppføringer som ligner på følgende:

hvis du ser noen oppføringer som ligner på dette, må du sannsynligvis justere filkontekstene for noen filer eller kataloger. Se Angi Filkontekster for mer informasjon om hvordan du gjør det.

SELinux Og MariaDB På En Annen Port

tcp-og UDP-porter er aktivert for tillatelse til å binde også. Hvis Du bruker En annen port, eller Noen Galera-porter, konfigurerer Du SELinux til å kunne bruke disse portene:

sudo semanage port -a -t mysqld_port_t -p tcp 3307 

Genererer SELinux-Policyer med audit2allow

I noen tilfeller kan Et MariaDB-system trenge ikke-standardpolicyer. Det er mulig å opprette disse retningslinjene fra SELinux audit log ved hjelp avaudit2allow – verktøyet. semanage ogsemodule verktøy vil også være nødvendig.

på mange systemer eraudit2allowogsemanageverktøy installert avpolicycoreutils-pythonpakken, ogsemoduleverktøyet er installert avpolicycoreutils pakke. Du kan installere disse med følgende kommando:

sudo yum install policycoreutils policycoreutils-python

følgende prosess kan brukes til å generere en policy fra revisjonsloggen:

  • Fjern dontaudits fra policyen:
sudo semodule -DB
  • midlertidig satt mysqld_t inn i permissiv modus. For eksempel:
sudo semanage permissive -a mysqld_t
  • Start MariaDB.
  • Gjør hva som forårsaket SELinux feil.
  • Bruk den genererte overvåkingsloggen til å opprette en policy:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
  • Trekk mysqld_tut av permissiv modus. Eksempelvis:
sudo semanage permissive -d mysqld_t
  • Gjenopprett dontaudits for policyen:
sudo setmodule -B

samme fremgangsmåte kan brukes hvis MariaDB starter, Men SELinux forhindrer at Den fungerer som den skal. SELinux kan for eksempel forhindre at pam plugin autentiserer brukere. Løsningen er den samme-aktiver revisjon — bytt til permissiv, gjør, uansett Hva SELinux ikke tillot deg, opprett en policy fra revisjonsloggen.

når Du oppdager Noen nødvendige SELinux tillatelser, kan du rapportere de nødvendige tillatelser til operativsystemet bug tracking slik at alle brukere kan dra nytte av arbeidet ditt (F. Eks Red Hat Bugzilla https://bugzilla.redhat.com/).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.