Security-Enhanced Linux met MariaDB

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

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.