Security-Enhanced Linux (SELinux) is een Linux kernel module die een kader biedt voor het configureren van verplicht toegangsbeheer (Mac) systeem voor veel bronnen op het systeem. Het is standaard ingeschakeld op sommige Linux distributies, waaronder RHEL, CentOS, Fedora en andere soortgelijke Linux distributie. SELinux voorkomt dat programma ‘ s toegang krijgen tot bestanden, mappen of ports tenzij het geconfigureerd is om toegang te krijgen tot die bronnen.
- verifiëren of SELinux is ingeschakeld
- Tijdelijk mysqld in permissieve modus zetten
- bouwen en laden van de Server SELinux tactiek
- het instellen van Bestandscontexten
- de Bestandscontext instellen voor de gegevensmap
- de Bestandscontext instellen voor Logbestanden
- de Bestandscontext instellen voor Optiebestanden
- Toegang toestaan tot de tmpfs-Bestandscontext
- problemen met SELinux oplossen
- bestandssysteem Permission Errors
- SELinux en MariaDB op een andere poort
- het genereren van SELinux tactiek met audit2allow
verifiëren of SELinux is ingeschakeld
om te controleren of SELinux is ingeschakeld, voert u hetgetenforce
commando uit. Bijvoorbeeld:
getenforce
Tijdelijk mysqld in permissieve modus zetten
wanneer u problemen oplost waarvan u denkt dat SELinux het veroorzaakt, kan het helpen om mysqld_t
tijdelijk in permissieve modus te zetten. Dit kan gedaan worden door het commando semanage
uit te voeren. Bijvoorbeeld:
sudo semanage permissive -a mysqld_t
als dat het probleem heeft opgelost, dan betekent het dat de huidige SELinux tactiek de boosdoener is. Je moet de SELinux tactiek of labels voor MariaDB aanpassen.
bouwen en laden van de Server SELinux tactiek
MariaDB Server wordt geleverd met een SELinux tactiek die niet standaard gebouwd of geladen is. Op veel systemen wordt het beleid geïnstalleerd op /usr/share/mysql/policy/selinux/mariadb-server.fc
. Om het te bouwen en te laden, voer je het volgende Uit:
het instellen van Bestandscontexten
SELinux gebruikt bestandscontexten als een manier om te bepalen wie toegang zou moeten hebben tot dat bestand.
Bestandscontexten worden beheerd met de opdrachten semanage fcontext
en restorecon
.
op veel systemen wordt het hulpprogramma semanage
geïnstalleerd door het pakket policycoreutils-python
, en het hulpprogramma restorecon
wordt geïnstalleerd door het pakket policycoreutils
. U kunt deze installeren met het volgende commando:
sudo yum install policycoreutils policycoreutils-python
de huidige context van een bestand of map kan worden gecontroleerd door ls
uit te voeren met de --context
of --scontext
opties.
de Bestandscontext instellen voor de gegevensmap
Als u een aangepaste map gebruikt voor datadir
, dan moet u mogelijk de bestandscontext voor die map instellen. De SELinux bestandscontext voor MariaDB gegevensbestanden is mysqld_db_t
. U kunt bepalen of deze bestandscontext aanwezig is op uw systeem en met welke bestanden of mappen het is geassocieerd door het volgende commando uit te voeren:
sudo semanage fcontext --list | grep mysqld_db_t
Als u de bestandscontext voor uw aangepaste map wilt instellen voor uw datadir
, dan kan dat worden gedaan door de opdrachten semanage fcontext
en restorecon
uit te voeren. Bijvoorbeeld:
sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data
Als u de huidige bestandscontext wilt controleren, kunt u dit doen door ls
uit te voeren met de --context
of --scontext
opties. Bijvoorbeeld:
ls --directory --scontext /mariadb/data
de Bestandscontext instellen voor Logbestanden
Als u een aangepaste map gebruikt voor logbestanden, moet u mogelijk de bestandscontext voor die map instellen. De SELinux bestandscontext voor MariaDB logbestanden is mysqld_log_t
. U kunt bepalen of deze bestandscontext aanwezig is op uw systeem en met welke bestanden of mappen het is geassocieerd door het volgende commando uit te voeren:
sudo semanage fcontext --list | grep mysqld_log_t
als u de bestandscontext voor uw aangepaste map voor logbestanden wilt instellen, dan kan dat worden gedaan door de opdrachten semanage fcontext
en restorecon
uit te voeren. Bijvoorbeeld:
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql
Als u de huidige bestandscontext wilt controleren, kunt u dit doen door ls
uit te voeren met de --context
of --scontext
opties. Bijvoorbeeld:
ls --directory --scontext /var/log/mysql
de Bestandscontext instellen voor Optiebestanden
Als u een aangepaste map gebruikt voor optiebestanden, moet u mogelijk de bestandscontext voor die map instellen. De SELinux bestandscontext voor MariaDB optiebestanden is mysqld_etc_t
. U kunt bepalen of deze bestandscontext aanwezig is op uw systeem en met welke bestanden of mappen het is geassocieerd door het volgende commando uit te voeren:
sudo semanage fcontext --list | grep mysqld_etc_t
als u de bestandscontext voor uw aangepaste map voor optiebestanden wilt instellen, dan kan dat worden gedaan door de opdrachten semanage fcontext
en restorecon
uit te voeren. Bijvoorbeeld:
sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb
Als u de huidige bestandscontext wilt controleren, kunt u dit doen door ls
uit te voeren met de --context
of --scontext
opties. Bijvoorbeeld:
ls --directory --scontext /etc/mariadb
Toegang toestaan tot de tmpfs-Bestandscontext
Als u uw tmpdir
op een tmpfs
bestandssysteem wilt gebruiken of een tmpfs
bestandssysteem op /run/shm
, dan moet u mysqld_t
toestaan om toegang te hebben tot een paar tmpfs-gerelateerde bestandscontexten. Bijvoorbeeld:
problemen met SELinux oplossen
u moet mogelijk problemen met SELinux oplossen in gevallen, zoals:
- MariaDB gebruikt een niet-standaard poort.
- MariaDB leest van of schrijft naar sommige bestanden (datadir, logbestanden, optiebestanden, enz.) gelegen op niet-standaard paden.
- MariaDB gebruikt een plugin die toegang vereist tot bronnen die standaard installaties niet gebruiken.
bestandssysteem Permission Errors
als de bestandssysteem permissies voor sommige MariaDB directory er goed uitzien, maar de MariaDB error log heeft nog steeds fouten die lijken op de volgende:
controleer dan SELinux ’s /var/log/audit/audit.log
voor log entries die lijken op de volgende:
Als u items ziet die hierop lijken, dan moet u hoogstwaarschijnlijk de bestandscontexten aanpassen voor sommige bestanden of mappen. Zie Bestandscontexten instellen voor meer informatie over hoe dat te doen.
SELinux en MariaDB op een andere poort
TCP en UDP poorten zijn ingeschakeld voor de rechten om te binden. Als je een andere poort gebruikt, of sommige Galera poorten, configureer SELinux om die poorten te kunnen gebruiken:
sudo semanage port -a -t mysqld_port_t -p tcp 3307
het genereren van SELinux tactiek met audit2allow
In sommige gevallen kan een MariaDB systeem niet-standaard tactiek nodig hebben. Het is mogelijk om deze tactiek te maken vanuit de SELinux audit log met gebruik van het audit2allow
hulpprogramma. De hulpprogramma ‘ s semanage
en semodule
zijn ook nodig.
op veel systemen worden de hulpprogramma ‘ s audit2allow
en semanage
geïnstalleerd door het policycoreutils-python
pakket, en het semodule
hulpprogramma wordt geïnstalleerd door policycoreutils
pakje. U kunt deze installeren met het volgende commando:
sudo yum install policycoreutils policycoreutils-python
het volgende proces kan worden gebruikt om een beleid te genereren uit het auditlog:
- Verwijder dontaudits uit het beleid:
sudo semodule -DB
- tijdelijk zet
mysqld_t
In permissive mode. Bijvoorbeeld:
sudo semanage permissive -a mysqld_t
- Start MariaDB.
- doe wat SELinux fouten veroorzaakte.
- gebruik het gegenereerde auditlog om een beleid te maken:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
- Trek
mysqld_t
buiten de permissieve modus. Bijvoorbeeld:
sudo semanage permissive -d mysqld_t
- herstel dontaudits voor de tactiek:
sudo setmodule -B
dezelfde procedure kan worden gebruikt als MariaDB start maar SELinux verhindert dat het correct werkt. Bijvoorbeeld, SELinux kan voorkomen dat PAM plugin gebruikers authenticeert. De oplossing is hetzelfde-auditing inschakelen, overschakelen naar permissive, doen, wat SELinux je niet toestond, een tactiek maken vanuit het audit log.
als je de benodigde SELinux permissies ontdekt, rapporteer dan de benodigde permissies aan je besturingssysteem bug tracking zodat alle gebruikers kunnen profiteren van je werk (bijvoorbeeld Red Hat Bugzilla https://bugzilla.redhat.com/).