Comment autoriser les connexions MySQL via SELinux?


21

Je voudrais pour une fois laisser SELinux fonctionner sur un serveur pour la sécurité accrue alléguée.
Je désactive généralement SELinux pour que tout fonctionne.
Comment dire à SELinux d'autoriser les connexions MySQL?
Le plus que j'ai trouvé dans la documentation est cette ligne de mysql.com:

Si vous exécutez sous Linux et que Linux à sécurité renforcée (SELinux) est activé, assurez-vous que vous avez désactivé la protection SELinux pour le processus mysqld.

wow ... c'est vraiment utile.


1
Veuillez fournir toutes les informations suivantes pour que nous puissions vous aider. 1. Linux Distro et Version, 2. Version MySQL et source d'installation, 3. Entrées de journal AVC à partir d'une connexion refusée, 4. Journaux MySQL pertinents, le cas échéant 5. La sortie de getsebool -a | grep mysql6.
Mesures

Réponses:


40

Pour vérifier SELinux

sestatus

Pour voir quels indicateurs sont définis sur les processus httpd

getsebool -a | grep httpd

Pour permettre à Apache de se connecter à une base de données distante via SELinux

setsebool httpd_can_network_connect_db 1

L'option -P rend le changement permanent. Sans cette option, le booléen serait réinitialisé à 0 au redémarrage.

setsebool -P httpd_can_network_connect_db 1

3
semble également nécessaire lors de la connexion via le bouclage 127.0.0.1?
Devin Ceartas

@Devin, certainement.
e18r

2
Si vous souhaitez autoriser les utilisateurs à se connecter au serveur mysql local, vous devez également activer le booléen selinuxuser_mysql_connect_enabled.
Anton Makovetsky

setsebool -P httpd_can_network_connect 1peut également être nécessaire. Cela a été suggéré dans mes journaux en exécutant ausearch -m avc -ts today | audit2whycomme suggéré dans un commentaire de vnix27.
site le

2

Vous obtenez une erreur? Quelle saveur de Linux utilisez-vous? Le contexte de sécurité est un bon point de départ si vous obtenez une erreur. ls -Z donnera le contexte ... Mais votre question est très vague.


Je me connecte à partir d'une boîte Windows. Il n'y a pas d'erreur ... la connexion est simplement refusée et la page expire. Je sais que si je désactive selinux, tout ira bien.

comme la connexion est entrante depuis une boîte Windows, ls -Z ne me donne que des informations sur les fichiers dans le répertoire dans lequel je me trouve sur la boîte Linux.

Dans ma question ci-dessus, j'ai cité une référence mysql ... qui disait de désactiver la protection selinux pour le processus mysqld ... mais il ne dit pas comment faire :( Je ne peux pas non plus savoir comment.

Quelque chose dans les journaux de la box Linux? selinux peut empêcher httpd d'établir une connexion socket ...

Rien dans les messages ou les journaux sécurisés ... y a-t-il un journal particulier auquel vous pensiez?



1

La ausearchcommande peut aider à trouver le journal des erreurs.


1
ausearch -m avc -ts aujourd'hui | audit2why, la commande peut suggérer une solution
vnix27

1

vous pouvez également créer une politique locale:

"Vous pouvez générer un module de stratégie local pour autoriser cet accès. Autorisez cet accès pour l'instant en exécutant:"

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

semodule -i mypol.pp

ou activer globalement pour la session réelle:

setsebool httpd_can_network_connect_db 1

ou permanent:

setsebool -P httpd_can_network_connect_db 1
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.