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
- Midlertidig Å Sette mysqld I Permissiv Modus
- Bygge Og Laste Serverens SELinux Policy
- Innstilling Av Filkontekster
- Angi Filkonteksten for Datakatalogen
- Angi Filkonteksten for Loggfiler
- Angi Filkonteksten for Alternativfiler
- Tillater Tilgang Til Tmpfs-Filkonteksten
- Feilsøking Av Selinux-Problemer
- Filsystemtillatelsesfeil
- SELinux Og MariaDB På En Annen Port
- Genererer SELinux-Policyer med audit2allow
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 ersemanage
verktø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 eraudit2allow
ogsemanage
verktøy installert avpolicycoreutils-python
pakken, ogsemodule
verktø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_t
ut 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/).