GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come elencare e impostare il contesto SELinux per MySQL Server

Cos'è il contesto SELinux

Quando SELinux viene applicato nel sistema, controlla le regole su quale processo può accedere a quali file, directory e porte. Ogni file, processo, directory e porta ha un'etichetta di sicurezza speciale nota come contesto SELinux, che è un nome utilizzato per determinare se un processo può accedere a un file, una directory o una porta. Per impostazione predefinita, la norma non consente alcuna interazione a meno che una regola esplicita non conceda l'accesso.

Le etichette di SELinux hanno contesti diversi:utente, ruolo, tipo e sensibilità. La maggior parte dei comandi Linux ha l'opzione -Z per visualizzare i contesti SELinux. Ad esempio, ps, ls, cp e mkdir utilizzano tutti l'opzione -Z per visualizzare o impostare i contesti SELinux di un file, directory, processo o porta.

Il server MySQL legge e scrive su vari file se il contesto SELinux non è impostato correttamente su questi file, il processo mysqld potrebbe essere bloccato dall'accesso ai file. In alcuni casi, questo potrebbe impedire a mysqld di registrare errori.

Come elencare gli attuali contesti MySQL

Puoi elencare i contesti attuali usando:

# semanage fcontext -l | grep -i mysql

Come impostare il contesto della directory dei dati

Il percorso predefinito per la directory dei dati è /var/lib/mysql/ , il contesto SELinux utilizzato è mysqld_db_t . Se modifichi il file di configurazione per utilizzare una posizione diversa per la directory dei dati, o uno qualsiasi dei file normalmente nella directory dei dati (ad es. i log binari), potrebbe essere necessario impostare il contesto per la nuova posizione utilizzando

# 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

Come impostare il contesto del file di registro degli errori

La posizione predefinita per gli RPM RedHat è /var/log/mysqld.log , il contesto SELinux utilizzato è mysqld_log_t . Se modifichi il file di configurazione per utilizzare una posizione diversa, potrebbe essere necessario impostare il contesto per la nuova posizione utilizzando:

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

Come impostare il contesto del file PID

Il percorso predefinito per il file PID è /var/run/mysqld/mysqld.pid , il contesto SELinux utilizzato è mysqld_var_run_t . Se modifichi il file di configurazione per utilizzare una posizione diversa, potrebbe essere necessario impostare il contesto per la nuova posizione utilizzando:

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

Come impostare il contesto del socket del dominio unix

La posizione predefinita per il socket del dominio unix è /var/lib/mysql/mysql.sock , il contesto SELinux utilizzato è mysqld_var_run_t . Se modifichi il file di configurazione per utilizzare una posizione diversa, potrebbe essere necessario impostare il contesto per la nuova posizione utilizzando:

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

Come impostare il contesto della porta TCP

La porta TCP predefinita è 3306 , il contesto SELinux utilizzato è mysqld_port_t . Se modifichi il file di configurazione per utilizzare una porta TCP diversa o abiliti la replica di gruppo che utilizza una porta aggiuntiva (in genere la porta 13306), potrebbe essere necessario impostare il contesto per la nuova porta utilizzando:

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

Come impostare il contesto della directory secure_file_priv

Per le versioni di MySQL dalla 5.5.53, 5.6.34 e 5.7.16. L'installazione dell'RPM del server crea una directory /var/lib/mysql-files/, ma non imposta il contesto SELinux su questa directory. Questa directory è pensata per essere utilizzata per operazioni come "SELECT... INTO OUTFILE '. Se abiliti l'utilizzo di questa directory impostando secure_file_priv, potrebbe essere necessario impostare il contesto utilizzando:

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

Se lo imposti su una nuova posizione, dovrai modificare il percorso. Per ulteriori informazioni su questa variabile, vedere https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv. Per sicurezza, questa directory non dovrebbe mai trovarsi all'interno della directory dei dati.

Strumenti richiesti

Il binario semanage fa parte del pacchetto policycoreutils-python:

# yum install policycoreutils-python

Per utilizzare semanage con le prime versioni di RHEL 6 con python 2.6, potrebbe essere necessario installare un backport del modulo di raccolta Python OrderedDict utilizzando python-pip dal repository EPEL.

Installa il repository EPEL:

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

Installa python-pip:

# yum install python-pip

Se l'installazione di python-pip restituisce questo errore:

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

potrebbe essere necessario aggiornare i certificati CA SSL utilizzando:

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


Cent OS
  1. Come reimpostare la password di root MySQL per il server semplice, il server cPanel e il server Plesk?

  2. Come configurare un server LAMP Ubuntu/Debian

  3. Configura il server DHCP su CentOS 8 - Come farlo?

  4. Come installare e configurare mysql 8 su Ubuntu 20.04

  5. Come installare e configurare NTP per la sincronizzazione dell'ora in CentOS?

Come installare MySQL 8 su CentOS 8

Come configurare server e client NTP su Debian 11

Come configurare e configurare un server OpenVPN su Ubuntu 22.04

Come installare e configurare Gitlab CE Server su Centos 8

Come configurare il server DHCP su CentOS 8

Come configurare server e client NFS su CentOS 8