Security-Enhanced Linux with MariaDB

Security-Enhanced Linux (SELinux) egy Linux kernel modul, amely keretet biztosít a kötelező hozzáférés-vezérlés (MAC) rendszer konfigurálásához a rendszer számos erőforrásához. Alapértelmezés szerint engedélyezve van néhány Linux disztribúción, beleértve az RHEL, CentOS, Fedora és más hasonló Linux disztribúciókat. A SELinux megakadályozza, hogy a programok hozzáférjenek a fájlokhoz, könyvtárakhoz vagy portokhoz, hacsak nincs konfigurálva ezen erőforrások elérésére.

annak ellenőrzése, hogy a SELinux engedélyezve van-e

a SELinux engedélyezésének ellenőrzéséhez hajtsa végre a getenforce parancsot. Például:

getenforce

a mysqld ideiglenes üzembe helyezése megengedő módba

ha olyan problémákat hibaelhárít, amelyeket Ön szerint a SELinux okozhat, segíthet a mysqld_t ideiglenes üzembe helyezésében. Ezt a semanage parancs végrehajtásával lehet elvégezni. Például:

sudo semanage permissive -a mysqld_t

Ha ez megoldotta a problémát, akkor ez azt jelenti, hogy a jelenlegi SELinux politika a bűnös. Módosítania kell a MariaDB SELinux házirendjét vagy címkéit.

A szerver SELinux házirendjének felépítése és betöltése

a MariaDB szerverhez tartozik egy SELinux házirend, amely alapértelmezés szerint nincs felépítve vagy betöltve. Sok rendszeren a házirend a /usr/share/mysql/policy/selinux/mariadb-server.fcértékre van telepítve. A fájl felépítéséhez és betöltéséhez hajtsa végre a következőket:

Fájlkörnyezetek beállítása

a SELinux fájlkörnyezeteket használ annak meghatározására, hogy ki férhet hozzá az adott fájlhoz.

a Fájlkörnyezetek kezelése asemanage fcontextésrestorecon parancsokkal történik.

sok rendszeren asemanagesegédprogramot apolicycoreutils-pythoncsomag, arestoreconsegédprogramot apolicycoreutils csomag telepíti. Ezeket a következő paranccsal telepítheti:

sudo yum install policycoreutils policycoreutils-python

egy fájl vagy könyvtár aktuális környezete ellenőrizhető a lsvégrehajtásával a --contextvagy --scontext opciókkal.

A fájl kontextusának beállítása az Adatkönyvtárhoz

ha egyéni könyvtárat használ a datadir számára, akkor lehet, hogy be kell állítania az adott könyvtár fájl kontextusát. A MariaDB adatfájlok SELinux fájlkörnyezete mysqld_db_t. A következő parancs végrehajtásával megállapíthatja, hogy ez a fájlkörnyezet jelen van-e a rendszeren, valamint hogy mely fájlokhoz vagy könyvtárakhoz van társítva:

sudo semanage fcontext --list | grep mysqld_db_t

Ha a datadiregyéni könyvtárának fájlkörnyezetét szeretné beállítani, akkor ezt a semanage fcontextés restorecon parancsok végrehajtásával teheti meg. Például:

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

Ha ellenőrizni szeretné az aktuális fájlkörnyezetet, akkor ezt a ls végrehajtásával teheti meg a --context vagy --scontext opciókkal. Például:

ls --directory --scontext /mariadb/data

a naplófájlok Fájlkörnyezetének beállítása

ha egyéni könyvtárat használ a naplófájlokhoz, akkor lehet, hogy be kell állítania az adott könyvtár fájlkörnyezetét. A MariaDB naplófájlok SELinux fájlkörnyezete mysqld_log_t. A következő parancs végrehajtásával megállapíthatja, hogy ez a fájlkörnyezet jelen van-e a rendszeren, valamint hogy mely fájlokhoz vagy könyvtárakhoz van társítva:

sudo semanage fcontext --list | grep mysqld_log_t

Ha be szeretné állítani a naplófájlok egyéni könyvtárának fájlkörnyezetét, akkor ezt a semanage fcontextés restorecon parancsok végrehajtásával teheti meg. Például:

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

Ha ellenőrizni szeretné az aktuális fájlkörnyezetet, akkor ezt a ls végrehajtásával teheti meg a --context vagy --scontext opciókkal. Például:

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

a fájl kontextusának beállítása az Opciófájlokhoz

ha egyéni könyvtárat használ az opciófájlokhoz, akkor lehet, hogy be kell állítania a fájl kontextusát az adott könyvtárhoz. A MariaDB opciófájlok SELinux fájlkörnyezete mysqld_etc_t. A következő parancs végrehajtásával megállapíthatja, hogy ez a fájlkörnyezet jelen van-e a rendszeren, valamint hogy mely fájlokhoz vagy könyvtárakhoz van társítva:

sudo semanage fcontext --list | grep mysqld_etc_t

ha be szeretné állítani az egyéni könyvtár fájlkörnyezetét az opciófájlokhoz, akkor ezt a semanage fcontextés restorecon parancsok végrehajtásával teheti meg. Például:

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

Ha ellenőrizni szeretné az aktuális fájlkörnyezetet, akkor ezt a lsvégrehajtásával teheti meg a --contextvagy --scontext opciókkal. Például:

ls --directory --scontext /etc/mariadb

Hozzáférés engedélyezése a Tmpfs Fájlkörnyezethez

Ha a tmpdir egy tmpfs fájlrendszerre szeretné csatlakoztatni, vagy egy tmpfs/div>fájlrendszer /run/shm, akkor lehet, hogy engedélyeznie kell mysqld_t hogy hozzáférjen néhány tmpfs-hez kapcsolódó fájlkörnyezethez. Például:

SELinux problémák hibaelhárítása

előfordulhat, hogy a SELinux-szal kapcsolatos problémákat olyan esetekben kell elhárítania, mint például:

  • a MariaDB nem alapértelmezett portot használ.
  • a MariaDB bizonyos fájlokból olvas vagy ír (datadir, naplófájlok, opciófájlok stb.) nem alapértelmezett útvonalakon található.
  • a MariaDB olyan plugint használ, amely hozzáférést igényel olyan erőforrásokhoz, amelyeket az alapértelmezett telepítések nem használnak.

fájlrendszer-engedélyezési hibák

Ha valamelyik MariaDB könyvtár fájlrendszer-engedélyei rendben vannak, de a MariaDB hibanapló még mindig tartalmaz a következőhöz hasonló hibákat:

akkor ellenőrizze a SELinux /var/log/audit/audit.log naplóbejegyzéseit, amelyek hasonlóak a következőhöz:

Ha ehhez hasonló bejegyzéseket lát, akkor valószínűleg módosítania kell egyes fájlok vagy könyvtárak fájlkörnyezetét. Lásd Beállítás Fájl kontextusban további információt, hogyan kell csinálni.

SELinux és MariaDB egy másik porton

a TCP és UDP portok is engedélyezettek a kötéshez. Ha egy másik portot vagy néhány Galera portot használ, konfigurálja a SELinux-ot úgy, hogy képes legyen használni ezeket a portokat:

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

SELinux házirendek generálása az audit2allow segítségével

egyes esetekben a MariaDB rendszerekhez nem szabványos házirendekre lehet szükség. Ezeket a házirendeket a SELinux ellenőrzési naplójából lehet létrehozni a audit2allow segédprogrammal. Asemanage éssemodule segédprogramokra is szükség lesz.

sok rendszeren a audit2allow és semanage segédprogramokat a policycoreutils-python csomag telepíti, a semodule segédprogramot pedig a policycoreutils csomag. Ezeket a következő paranccsal telepítheti:

sudo yum install policycoreutils policycoreutils-python

a következő folyamat használható házirend létrehozására az ellenőrzési naplóból:

  • távolítsa el a nem auditokat a házirendből:
sudo semodule -DB
  • ideiglenesen tegye mysqld_t megengedő módba. Például:
sudo semanage permissive -a mysqld_t
  • a MariaDB indítása.
  • tegyen meg mindent, ami SELinux hibákat okoz.
  • használja a létrehozott naplót egy házirend létrehozásához:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
  • húzza ki a mysqld_t a megengedő módból. Például:
sudo semanage permissive -d mysqld_t
  • a házirend ellenőrzéseinek visszaállítása:
sudo setmodule -B

ugyanez az eljárás használható, ha a MariaDB elindul, de a SELinux megakadályozza a megfelelő működését. Például a SELinux megakadályozhatja a PAM plugin felhasználók hitelesítését. A megoldás ugyanaz — engedélyezze az auditálást, váltson megengedőre, tegye meg, amit a SELinux nem engedett meg, hozzon létre egy házirendet az ellenőrzési naplóból.

Ha bármilyen szükséges SELinux engedélyt észlel, kérjük, jelentse a szükséges engedélyeket az operációs rendszer hibakeresésének, hogy minden felhasználó részesülhessen a munkájából (pl. Red Hat Bugzilla https://bugzilla.redhat.com/).

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.