Come posso consentire le connessioni MySQL tramite SELinux?


21

Vorrei per una volta lasciare SELinux in esecuzione su un server per la presunta maggiore sicurezza.
Di solito disabilito SELinux per far funzionare qualsiasi cosa.
Come posso dire a SELinux di consentire le connessioni MySQL?
Il massimo che ho trovato nella documentazione è questa riga di mysql.com:

Se si esegue Linux e è abilitato Security Enhanced Linux (SELinux), assicurarsi di aver disabilitato la protezione SELinux per il processo mysqld.

wow ... è davvero utile.


1
Fornisci tutte le seguenti informazioni per consentirci di aiutarti. 1. Linux Distro e versione, 2. Versione di MySQL e fonte di installazione, 3. Voci del registro AVC da una connessione negata, 4. Eventuali registri MySQL, se presenti 5. L'output di getsebool -a | grep mysql6. Esatti passi che hai seguito per riprodurre questo
hobodave

Risposte:


40

Per controllare SELinux

sestatus

Per vedere quali flag sono impostati sui processi httpd

getsebool -a | grep httpd

Consentire ad Apache di connettersi al database remoto tramite SELinux

setsebool httpd_can_network_connect_db 1

Utilizzare l'opzione -P per rendere permanente la modifica. Senza questa opzione, il booleano verrebbe reimpostato su 0 al riavvio.

setsebool -P httpd_can_network_connect_db 1

3
sembra essere necessario anche per la connessione tramite loopback 127.0.0.1?
Devin Ceartas,

@Devin, sicuramente.
e18r

2
Se si desidera consentire agli utenti di connettersi al server mysql locale, è necessario attivare anche il booleano selinuxuser_mysql_connect_enabled.
Anton Makovetsky,

setsebool -P httpd_can_network_connect 1potrebbe anche essere necessario. Questo è stato suggerito nei miei registri eseguendo ausearch -m avc -ts today | audit2whycome suggerito in un commento di vnix27.
sito il

2

Ricevi un errore? Che tipo di Linux stai usando? Il contesto di sicurezza è un buon punto di partenza in caso di errore. La -Z darà un contesto ... Ma la tua domanda è molto vaga.


Mi collego da una finestra di Windows. Non ci sono errori ... la connessione viene appena rifiutata e la pagina scade. So che se disattivo selinux tutto andrà bene.

poiché la connessione arriva da una finestra di Windows, ls -Z mi dà solo informazioni sui file in qualunque directory mi trovo sulla scatola di Linux.

Nella mia domanda sopra ho citato un riferimento mysql ... che diceva di disabilitare la protezione selinux per il processo mysqld ... ma non dice come farlo :( Né posso scoprire come.

Qualcosa nei registri sulla scatola di Linux? selinux può impedire a httpd di

Niente nei messaggi o nei registri sicuri ... hai in mente un registro particolare?



1

Il ausearchcomando può aiutare a trovare il registro degli errori.


1
ausearch -m avc -ts oggi | audit2why, il comando può suggerire una soluzione
vnix27,

1

puoi anche creare una politica locale:

"È possibile generare un modulo di politica locale per consentire questo accesso. Per ora consentire questo accesso eseguendo:"

grep httpd /var/log/audit/audit.log | audit2allow -M mypol

semodule -i mypol.pp

o abilita a livello globale per la sessione effettiva:

setsebool httpd_can_network_connect_db 1

o permanente:

setsebool -P httpd_can_network_connect_db 1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.