GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment répertorier et définir le contexte SELinux pour le serveur MySQL

Qu'est-ce que le contexte SELinux

Lorsque SELinux est appliqué dans le système, il vérifie les règles indiquant quel processus peut accéder à quels fichiers, répertoires et ports. Chaque fichier, processus, répertoire et port possède une étiquette de sécurité spéciale connue sous le nom de contexte SELinux, qui est un nom utilisé pour déterminer si un processus peut accéder à un fichier, un répertoire ou un port. Par défaut, la stratégie n'autorise aucune interaction à moins qu'une règle explicite n'accorde l'accès.

Les étiquettes SELinux ont des contextes différents :utilisateur, rôle, type et sensibilité. La plupart des commandes Linux ont l'option -Z pour afficher les contextes SELinux. Par exemple, ps, ls, cp et mkdir utilisent tous l'option -Z pour afficher ou définir les contextes SELinux d'un fichier, d'un répertoire, d'un processus ou d'un port.

Le serveur MySQL lit et écrit dans divers fichiers si le contexte SELinux n'est pas défini correctement sur ces fichiers, le processus mysqld peut être bloqué pour accéder aux fichiers. Dans certains cas, cela peut empêcher mysqld de consigner les erreurs.

Comment répertorier les contextes MySQL actuels

Vous pouvez lister les contextes actuels en utilisant :

# semanage fcontext -l | grep -i mysql

Comment définir le contexte du répertoire de données

L'emplacement par défaut du répertoire de données est /var/lib/mysql/ , le contexte SELinux utilisé est mysqld_db_t . Si vous modifiez le fichier de configuration pour utiliser un emplacement différent pour le répertoire de données, ou l'un des fichiers normalement dans le répertoire de données (par exemple, les journaux binaires), vous devrez peut-être définir le contexte du nouvel emplacement à l'aide de

# semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/datadir(/.*)?"
# restorecon -Rv /path/to/my/custom/datadir
# semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/logdir(/.*)?"
# restorecon -Rv /path/to/my/custom/logdir

Comment définir le contexte du fichier journal des erreurs

L'emplacement par défaut des RPM RedHat est /var/log/mysqld.log , le contexte SELinux utilisé est mysqld_log_t . Si vous modifiez le fichier de configuration pour utiliser un emplacement différent, vous devrez peut-être définir le contexte du nouvel emplacement à l'aide :

# semanage fcontext -a -t mysqld_log_t "/path/to/my/custom/error.log"
# restorecon -Rv /path/to/my/custom/error.log

Comment définir le contexte du fichier PID

L'emplacement par défaut du fichier PID est /var/run/mysqld/mysqld.pid , le contexte SELinux utilisé est mysqld_var_run_t . Si vous modifiez le fichier de configuration pour utiliser un emplacement différent, vous devrez peut-être définir le contexte du nouvel emplacement à l'aide :

# semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/pidfile/directory/.*?"
# restorecon -Rv /path/to/my/custom/pidfile/directory

Comment définir le contexte de socket de domaine unix

L'emplacement par défaut du socket de domaine unix est /var/lib/mysql/mysql.sock , le contexte SELinux utilisé est mysqld_var_run_t . Si vous modifiez le fichier de configuration pour utiliser un emplacement différent, vous devrez peut-être définir le contexte du nouvel emplacement à l'aide :

# semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/mysql.sock"
# restorecon -Rv /path/to/my/custom/mysql.sock

Comment définir le contexte du port TCP

Le port TCP par défaut est 3306 , le contexte SELinux utilisé est mysqld_port_t . Si vous modifiez le fichier de configuration pour utiliser un port TCP différent, ou si vous activez la réplication de groupe qui utilise un port supplémentaire (généralement le port 13306), vous devrez peut-être définir le contexte du nouveau port en utilisant :

# semanage port -a -t mysqld_port_t -p tcp 13306
# restorecon

Comment définir le contexte du répertoire secure_file_priv

Pour les versions de MySQL depuis 5.5.53, 5.6.34 et 5.7.16. L'installation du serveur RPM crée un répertoire /var/lib/mysql-files/, mais ne définit pas le contexte SELinux sur ce répertoire. Ce répertoire est destiné à être utilisé pour des opérations telles que 'SELECT … INTO OUTFILE ‘. Si vous activez l'utilisation de ce répertoire en définissant secure_file_priv, vous devrez peut-être définir le contexte à l'aide de :

# semanage fcontext -a -t mysqld_db_t "/var/lib/mysql-files/(/.*)?"
# restorecon -Rv /var/lib/mysql-files

Si vous le définissez sur un nouvel emplacement, vous devrez modifier le chemin. Pour plus d'informations sur cette variable, veuillez consulter https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv. Pour des raisons de sécurité, ce répertoire ne doit jamais se trouver dans le répertoire de données.

Outils requis

Le binaire semanage fait partie du package policycoreutils-python :

# yum install policycoreutils-python

Pour utiliser semanage avec les premières versions de RHEL 6 avec python 2.6, vous devrez peut-être installer un rétroportage du module de collecte python OrderedDict à l'aide de python-pip à partir du référentiel EPEL.

Installez le référentiel EPEL :

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/$(uname -m)/epel-release-6-8.noarch.rpm

Installez python-pip :

# yum install python-pip

Si l'installation de python-pip renvoie cette erreur :

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

vous devrez peut-être mettre à jour vos certificats SSL CA en utilisant :

# yum --disablerepo=epel -y update ca-certificates


Cent OS
  1. Configurer le serveur DHCP sur CentOS 8 - Comment faire ?

  2. Comment installer et configurer mysql 8 sur Ubuntu 20.04

  3. Comment configurer le serveur et le client NFS sur Ubuntu 20.04

  4. Comment installer le serveur MySQL sur CentOS 7

  5. Que sont les modes SELinux et comment les configurer

Comment installer MySQL 8 sur CentOS 8

Comment configurer le serveur et le client NTP sur Debian 11

Comment installer et configurer un serveur OpenVPN sur Ubuntu 22.04

Comment installer et configurer Gitlab CE Server sur Centos 8

Comment configurer le serveur DHCP sur CentOS 8

Comment configurer le serveur et le client NFS sur CentOS 8