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ä
- tilapäisesti mysqld: n laittaminen sallivaan tilaan
- palvelimen SELinux-käytännön luominen ja lataaminen
- Tiedostokontekstien asettaminen
- Tiedostoyhteyden asettaminen Datahakemistolle
- lokitiedostojen Tiedostoyhteyden asettaminen
- asetat Tiedostoyhteyden Valintatiedostoille
- mahdollistaa pääsyn Tmpfs-Tiedostoyhteyteen
- SELinux-ongelmien vianmääritys
- tiedostojärjestelmän Käyttöoikeusvirheet
- SELinux ja MariaDB eri portilla
- generoimalla SELinux-käytäntöjä audit2allow-järjestelmällä
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ä.
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
- vedä
mysqld_t
pois 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/).