Linux îmbunătățit de securitate (SELinux) este un modul kernel Linux care oferă un cadru pentru configurarea sistemului de control al accesului obligatoriu (MAC) pentru multe resurse din sistem. Este activat în mod implicit pe unele distribuții Linux, inclusiv RHEL, CentOS, Fedora și alte distribuții Linux similare. SELinux împiedică programele să acceseze fișiere, directoare sau porturi, cu excepția cazului în care este configurat să acceseze aceste resurse.
- verificarea dacă SELinux este activat
- punerea temporară a mysqld în modul permisiv
- construirea și încărcarea Politicii SELinux a serverului
- setarea contextelor de fișiere
- setarea contextului fișierului pentru directorul de date
- setarea contextului fișierului pentru fișierele jurnal
- setarea contextului fișierului pentru fișierele de opțiuni
- permiterea accesului la contextul fișierului Tmpfs
- Depanarea problemelor SELinux
- File system Permission Errors
- SELinux și MariaDB pe un Port diferit
- generând politici SELinux cu audit2allow
verificarea dacă SELinux este activat
pentru a verifica dacă SELinux este activat, executați comandagetenforce
. De exemplu:
getenforce
punerea temporară a mysqld în modul permisiv
când depanați problemele pe care credeți că SELinux le-ar putea provoca, vă poate ajuta să puneți temporarmysqld_t
în modul permisiv. Acest lucru se poate face executând comanda semanage
. De exemplu:
sudo semanage permissive -a mysqld_t
dacă asta a rezolvat problema, înseamnă că Politica SELinux actuală este vinovatul. Trebuie să ajustați Politica SELinux sau etichetele pentru MariaDB.
construirea și încărcarea Politicii SELinux a serverului
serverul MariaDB vine cu o politică SELinux care nu este construită sau încărcată în mod implicit. Pe multe sisteme, politica este instalată la /usr/share/mysql/policy/selinux/mariadb-server.fc
. Pentru a-l construi și încărca, executați următoarele:
setarea contextelor de fișiere
SELinux folosește contextele de fișiere ca o modalitate de a determina cine ar trebui să poată accesa acel fișier.contextele fișierelor
sunt gestionate cu comenzilesemanage fcontext
șirestorecon
.
pe multe sisteme, utilitarulsemanage
este instalat de pachetulpolicycoreutils-python
, iar utilitarulrestorecon
este instalat de pachetulpolicycoreutils
. Le puteți instala cu următoarea comandă:
sudo yum install policycoreutils policycoreutils-python
contextul actual al unui fișier sau director poate fi verificat executândls
cu--context
sau--scontext
opțiuni.
setarea contextului fișierului pentru directorul de date
Dacă utilizați un director personalizat pentrudatadir
, atunci poate fi necesar să setați contextul fișierului pentru acel director. Contextul fișierului SELinux pentru fișierele de date MariaDB este mysqld_db_t
. Puteți determina dacă acest context de fișier este prezent în sistemul dvs. și cu ce fișiere sau directoare este asociat executând următoarea comandă:
sudo semanage fcontext --list | grep mysqld_db_t
Dacă doriți să setați contextul fișierului pentru directorul personalizat pentru datadir
, atunci acest lucru se poate face executând comenzile semanage fcontext
și restorecon
. De exemplu:
sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data
Dacă doriți să verificați contextul fișierului curent, puteți face acest lucru executândls
cu opțiunile--context
sau--scontext
. De exemplu:
ls --directory --scontext /mariadb/data
setarea contextului fișierului pentru fișierele jurnal
Dacă utilizați un director personalizat pentru fișierele jurnal, poate fi necesar să setați contextul fișierului pentru acel director. Contextul fișierului SELinux pentru fișierele jurnal MariaDB este mysqld_log_t
. Puteți determina dacă acest context de fișier este prezent în sistemul dvs. și cu ce fișiere sau directoare este asociat executând următoarea comandă:
sudo semanage fcontext --list | grep mysqld_log_t
Dacă doriți să setați contextul fișierului pentru directorul personalizat pentru fișierele jurnal, atunci acest lucru se poate face executând comenzile semanage fcontext
și restorecon
. De exemplu:
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql
Dacă doriți să verificați contextul fișierului curent, puteți face acest lucru executândls
cu opțiunile--context
sau--scontext
. De exemplu:
ls --directory --scontext /var/log/mysql
setarea contextului fișierului pentru fișierele de opțiuni
Dacă utilizați un director personalizat pentru fișierele de opțiuni, poate fi necesar să setați contextul fișierului pentru acel director. Contextul fișierului SELinux pentru fișierele de opțiuni MariaDB este mysqld_etc_t
. Puteți determina dacă acest context de fișier este prezent în sistemul dvs. și cu ce fișiere sau directoare este asociat executând următoarea comandă:
sudo semanage fcontext --list | grep mysqld_etc_t
Dacă doriți să setați contextul fișierului pentru directorul personalizat pentru fișierele de opțiuni, atunci acest lucru se poate face executând comenzile semanage fcontext
și restorecon
. De exemplu:
sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb
Dacă doriți să verificați contextul fișierului curent, puteți face acest lucru executândls
cu opțiunile--context
sau--scontext
. De exemplu:
ls --directory --scontext /etc/mariadb
permiterea accesului la contextul fișierului Tmpfs
Dacă doriți să montați tmpdir
pe un sistem de fișiere tmpfs
sau doriți să utilizați un tmpfs
sistem de fișiere pe /run/shm
, atunci poate fi necesar să permiteți mysqld_t
să aveți acces la câteva contexte de fișiere legate de tmpfs. De exemplu:
Depanarea problemelor SELinux
s-ar putea să fie nevoie să depanați problemele legate de SELinux în cazuri, cum ar fi:
- MariaDB utilizează un port non-implicit.
- MariaDB citește sau scrie în unele fișiere (datadir, fișiere jurnal, fișiere de opțiuni etc.) situat la căi non-implicite.
- MariaDB utilizează un plugin care necesită acces la resurse pe care instalările implicite nu le utilizează.
File system Permission Errors
dacă permisiunile sistemului de fișiere pentru un director MariaDB arată bine, dar Jurnalul de erori MariaDB are încă erori care arată similar cu următoarele:
apoi verificați SELinux ‘ s /var/log/audit/audit.log
pentru intrările din jurnal care arată similar cu următoarele:
Dacă vedeți intrări care arată similar cu aceasta, atunci cel mai probabil trebuie să ajustați contextele de fișiere pentru unele fișiere sau directoare. Consultați Setarea contextelor de fișiere pentru mai multe informații despre cum să faceți acest lucru.
SELinux și MariaDB pe un Port diferit
porturile TCP și UDP sunt activate pentru permisiunea de a lega prea. Dacă utilizați un port diferit sau unele porturi Galera, configurați SELinux pentru a putea utiliza acele porturi:
sudo semanage port -a -t mysqld_port_t -p tcp 3307
generând politici SELinux cu audit2allow
În unele cazuri, un sistem MariaDB ar putea avea nevoie de politici non-standard. Este posibil să creați aceste politici din Jurnalul de audit SELinux utilizând utilitarul audit2allow
. De asemenea, vor fi necesare utilitățilesemanage
șisemodule
.
pe mai multe sisteme,audit2allow
șisemanage
utilitățile sunt instalate depolicycoreutils-python
pachet, șisemodule
utilitate este instalat depolicycoreutils
pachet. Le puteți instala cu următoarea comandă:
sudo yum install policycoreutils policycoreutils-python
următorul proces poate fi utilizat pentru a genera o politică din jurnalul de audit:
- eliminați dontauditele din politică:
sudo semodule -DB
- puneți temporar
mysqld_t
în modul permisiv. De exemplu:
sudo semanage permissive -a mysqld_t
- începe MariaDB.
- face orice a fost cauza erori SELinux.
- utilizați jurnalul de audit generat pentru a crea o politică:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
- trageți
mysqld_t
din modul permisiv. De exemplu:
sudo semanage permissive -d mysqld_t
- Restore dontaudits pentru politica:
sudo setmodule -B
aceeași procedură poate fi utilizată dacă MariaDB pornește, dar SELinux împiedică funcționarea corectă. De exemplu, SELinux poate împiedica pluginul PAM să autentifice utilizatorii. Soluția este aceeași — activați auditul, treceți la permisiv, faceți orice SELinux nu v-a permis, creați o politică din jurnalul de audit.
când descoperiți permisiunile SELinux necesare, vă rugăm să raportați permisiunile necesare pentru urmărirea erorilor sistemului de operare, astfel încât toți utilizatorii să poată beneficia de munca dvs. (de exemplu, Red Hat Bugzillahttps://bugzilla.redhat.com/).