Security-Enhanced Linux with MariaDB

Security-Enhanced Linux (SELinux) on Linux-ytimen moduuli, joka tarjoaa kehyksen pakollisen kulunvalvontajärjestelmän (MAC) määrittämiseen monille järjestelmän resursseille. Se on oletusarvoisesti käytössä joissakin Linux-jakeluissa, mukaan lukien RHEL, CentOS, Fedora ja muut vastaavat Linux-jakelut. SELinux estää ohjelmia pääsemästä tiedostoihin, hakemistoihin tai portteihin, ellei sitä ole määritetty käyttämään näitä resursseja.

tarkistaaksesi, onko SELinux käytössä

tarkistaaksesi, onko SELinux käytössä, suorita getenforce – komento. Esimerkiksi:

getenforce

tilapäisesti mysqld: n laittaminen sallivaan tilaan

kun vianmääritysongelmia, joiden arvelet SELinuxin mahdollisesti aiheuttavan, voi helpottaa mysqld_t asettamista sallivaan tilaan. Tämä voidaan tehdä suorittamallasemanage komento. Esimerkiksi:

sudo semanage permissive -a mysqld_t

Jos se ratkaisi ongelman, niin se tarkoittaa, että syyllinen on nykyinen SELinux-politiikka. Sinun täytyy muuttaa SELinux politiikkaa tai tarroja MariaDB.

palvelimen SELinux-käytännön luominen ja lataaminen

MariaDB-palvelimen mukana tulee SELinux-käytäntö, jota ei ole oletusarvoisesti rakennettu tai ladattu. Monissa järjestelmissä käytäntö on asennettu /usr/share/mysql/policy/selinux/mariadb-server.fc. Sen rakentamiseksi ja lataamiseksi suorita seuraava:

Tiedostokontekstien asettaminen

SELinux käyttää tiedostokonteksteja määrittääkseen, kenen pitäisi päästä kyseiseen tiedostoon.

Tiedostokonteksteja hallitaan semanage fcontext ja restorecon komennoilla.

monissa järjestelmissä semanage apuohjelma on asennettu policycoreutils-python paketti, ja restorecon apuohjelma on asennettu policycoreutils paketti. Voit asentaa ne seuraavalla komennolla:

sudo yum install policycoreutils policycoreutils-python

tiedoston tai hakemiston nykyisen kontekstin voi tarkistaa suorittamalla ls--context tai --scontext asetukset.

Tiedostoyhteyden asettaminen Datahakemistolle

Jos käytät omaa hakemistoa datadir, saatat joutua asettamaan tiedostoyhteyden kyseiselle hakemistolle. MariaDB-tiedostojen SELinux-tiedostoyhteys on mysqld_db_t. Voit määrittää, onko tämä tiedostoyhteys järjestelmässäsi ja mihin tiedostoihin tai hakemistoihin se liittyy suorittamalla seuraavan komennon:

sudo semanage fcontext --list | grep mysqld_db_t

Jos haluat asettaa Oman hakemistosi tiedostoyhteyden datadir, se voidaan tehdä suorittamalla semanage fcontext ja restorecon komennot. Esimerkiksi:

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

Jos haluat tarkistaa nykyisen tiedostoyhteyden, voit tehdä sen suorittamalla ls kanssa --context tai --scontext vaihtoehtoja. Esimerkiksi:

ls --directory --scontext /mariadb/data

lokitiedostojen Tiedostoyhteyden asettaminen

Jos käytät lokitiedostoille omaa hakemistoa, saatat joutua asettamaan kyseisen kansion tiedostoyhteyden. MariaDB-lokitiedostojen SELinux-tiedostoyhteys on mysqld_log_t. Voit määrittää, onko tämä tiedostoyhteys järjestelmässäsi ja mihin tiedostoihin tai hakemistoihin se liittyy suorittamalla seuraavan komennon:

sudo semanage fcontext --list | grep mysqld_log_t

Jos haluat asettaa Oman hakemistosi lokitiedostoille tiedostoyhteyden, se voidaan tehdä suorittamalla komennot semanage fcontext ja restorecon. Esimerkiksi:

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

Jos haluat tarkistaa nykyisen tiedostoyhteyden, voit tehdä sen suorittamalla ls kanssa --context tai --scontext vaihtoehtoja. Esimerkiksi:

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

asetat Tiedostoyhteyden Valintatiedostoille

Jos käytät mukautettua hakemistoa valintatiedostoille, saatat joutua asettamaan tiedostoyhteyden kyseiselle hakemistolle. MariaDB-optio-tiedostojen SELinux-tiedostoyhteys on mysqld_etc_t. Voit määrittää, onko tämä tiedostoyhteys järjestelmässäsi ja mihin tiedostoihin tai hakemistoihin se liittyy suorittamalla seuraavan komennon:

sudo semanage fcontext --list | grep mysqld_etc_t

Jos haluat asettaa Oman hakemistosi tiedostoyhteyden optio-tiedostoille, se voidaan tehdä suorittamalla komennot semanage fcontext ja restorecon. Esimerkiksi:

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

Jos haluat tarkistaa nykyisen tiedostoyhteyden, voit tehdä sen suorittamalla ls kanssa --context tai --scontext vaihtoehtoja. Esimerkiksi:

ls --directory --scontext /etc/mariadb

mahdollistaa pääsyn Tmpfs-Tiedostoyhteyteen

Jos halusi liittää tmpdir on tmpfs tiedostojärjestelmän tai halusi käyttää tmpfs tiedostojärjestelmä/run/shm, jolloinmysqld_t voi olla tarpeen sallia pääsy pariin tmpfs: ään liittyvään tiedostokontekstiin. Esimerkiksi:

SELinux-ongelmien vianmääritys

SELinux-ongelmien vianmääritys saattaa olla tarpeen tapauksissa, kuten:

  • MariaDB käyttää ei-oletusporttia.
  • MariaDB lukee tai kirjoittaa joihinkin tiedostoihin (datadir, lokitiedostot, optiotiedostot jne.) sijaitsee ei-oletuspoluilla.
  • MariaDB käyttää liitännäistä, joka vaatii pääsyn resursseihin, joita oletusasennukset eivät käytä.

tiedostojärjestelmän Käyttöoikeusvirheet

Jos jonkin MariaDB-hakemiston tiedostojärjestelmän käyttöoikeudet näyttävät hienoilta, mutta MariaDB-virhelokissa on edelleen virheitä, jotka näyttävät samanlaisilta:

tarkista SELinuxin /var/log/audit/audit.log lokimerkinnät, jotka näyttävät samanlaisilta seuraavilta:

Jos näet tämän näköisiä merkintöjä, joudut todennäköisesti säätämään joidenkin tiedostojen tai hakemistojen tiedostoyhteyksiä. Lisätietoja siitä, miten se tehdään, on ohjeaiheessa Tiedostoyhteyksien asettaminen.

SELinux ja MariaDB eri portilla

TCP-ja UDP-portit ovat käytössä myös sidontalupaa varten. Jos käytät eri porttia tai joitakin Galera-portteja, määritä SELinux kyettävä käyttämään näitä portteja:

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

generoimalla SELinux-käytäntöjä audit2allow-järjestelmällä

joissakin tapauksissa MariaDB-järjestelmä saattaa tarvita epästandardeja käytäntöjä. Nämä käytännöt on mahdollista luoda SELinuxin tarkastuslokista käyttäen audit2allow utility. Myös semanage ja semodule apuohjelmia tarvitaan.

monissa järjestelmissä audit2allow ja semanage apuohjelmat asentaa policycoreutils-python paketti, ja semodule apuohjelma asentaa policycoreutils paketti. Voit asentaa nämä seuraavalla komennolla:

sudo yum install policycoreutils policycoreutils-python

seuraavan prosessin avulla voidaan luoda käytäntö tarkastuslokista:

  • Poista dontaudits politiikasta:
sudo semodule -DB
  • väliaikaisesti mysqld_t sallivaan tilaan. Esimerkiksi:
sudo semanage permissive -a mysqld_t
  • Start MariaDB.
  • tee mitä tahansa, mikä aiheutti SELinux-virheitä.
  • käytä luotua tarkastuslokia käytäntöön:
  • sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
      vedä mysqld_tpois sallivasta tilasta. Esimerkiksi:
    sudo semanage permissive -d mysqld_t
    • Palauta dontaudits politiikalle:
    sudo setmodule -B

    samaa menettelyä voidaan käyttää, jos MariaDB käynnistyy, mutta SELinux estää sen toimimisen oikein. SELinux voi esimerkiksi estää Pam-liitännäistä todentamasta käyttäjiä. Ratkaisu on sama-ota auditointi käyttöön, vaihda sallivaan, tee, mitä SELinux ei sallinut, luo käytäntö tarkastuslokista.

    kun löydät tarvittavat SELinuxin käyttöoikeudet, ilmoita tarvittavat käyttöoikeudet käyttöjärjestelmän vianseurantaan, jotta kaikki käyttäjät voivat hyötyä työstäsi (esim.Red Hat Bugzilla https://bugzilla.redhat.com/).

    Vastaa

    Sähköpostiosoitettasi ei julkaista.