GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Mendaftar dan Mengatur Konteks SELinux untuk Server MySQL

Apa itu Konteks SELinux

Ketika SELinux diterapkan di sistem, ia memeriksa aturan tentang proses mana yang dapat mengakses file, direktori, dan port mana. Setiap file, proses, direktori, dan port memiliki label keamanan khusus yang dikenal sebagai konteks SELinux, yaitu nama yang digunakan untuk menentukan apakah suatu proses dapat mengakses file, direktori, atau port. Secara default, kebijakan tidak mengizinkan interaksi apa pun kecuali aturan eksplisit memberikan akses.

Label SELinux memiliki konteks yang berbeda:pengguna, peran, jenis, dan sensitivitas. Sebagian besar perintah Linux memiliki opsi -Z untuk menampilkan konteks SELinux. Misalnya, ps, ls, cp, dan mkdir semuanya menggunakan opsi -Z untuk menampilkan atau mengatur konteks SELinux dari sebuah file, direktori, proses, atau port.

Server MySQL membaca dari dan menulis ke berbagai file jika konteks SELinux tidak diatur dengan benar pada file-file ini, proses mysqld dapat diblokir dari mengakses file. Dalam beberapa kasus, ini dapat menghentikan mysqld dari kesalahan pencatatan.

Cara membuat daftar konteks MySQL saat ini

Anda dapat membuat daftar konteks saat ini menggunakan:

# semanage fcontext -l | grep -i mysql

Cara menyetel konteks direktori data

Lokasi default untuk direktori data adalah /var/lib/mysql/ , konteks SELinux yang digunakan adalah mysqld_db_t . Jika Anda mengedit file konfigurasi untuk menggunakan lokasi yang berbeda untuk direktori data, atau salah satu file yang biasanya ada di direktori data (misalnya log biner), Anda mungkin perlu menyetel konteks untuk lokasi baru menggunakan

# 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

Cara menyetel konteks file log kesalahan

Lokasi default untuk RPM RedHat adalah /var/log/mysqld.log , konteks SELinux yang digunakan adalah mysqld_log_t . Jika Anda mengedit file konfigurasi untuk menggunakan lokasi yang berbeda, Anda mungkin perlu mengatur konteks untuk lokasi baru menggunakan:

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

Cara menyetel konteks file PID

Lokasi default untuk file PID adalah /var/run/mysqld/mysqld.pid , konteks SELinux yang digunakan adalah mysqld_var_run_t . Jika Anda mengedit file konfigurasi untuk menggunakan lokasi yang berbeda, Anda mungkin perlu mengatur konteks untuk lokasi baru menggunakan:

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

Cara menyetel konteks soket domain-unix

Lokasi default untuk soket domain unix adalah /var/lib/mysql/mysql.sock , konteks SELinux yang digunakan adalah mysqld_var_run_t . Jika Anda mengedit file konfigurasi untuk menggunakan lokasi yang berbeda, Anda mungkin perlu mengatur konteks untuk lokasi baru menggunakan:

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

Cara menyetel konteks port TCP

Port TCP default adalah 3306 , konteks SELinux yang digunakan adalah mysqld_port_t . Jika Anda mengedit file konfigurasi untuk menggunakan port TCP yang berbeda, atau Anda mengaktifkan Group Replication yang menggunakan port tambahan (biasanya port 13306), Anda mungkin perlu mengatur konteks untuk port baru menggunakan:

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

Cara menyetel konteks direktori secure_file_priv

Untuk versi MySQL sejak 5.5.53, 5.6.34 dan 5.7.16. Menginstal RPM server membuat direktori /var/lib/mysql-files/, tetapi tidak mengatur konteks SELinux pada direktori ini. Direktori ini dimaksudkan untuk digunakan untuk operasi seperti ‘SELECT … INTO OUTFILE '. Jika Anda mengaktifkan menggunakan direktori ini dengan menyetel secure_file_priv, Anda mungkin perlu menyetel konteks menggunakan:

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

Jika Anda mengatur ini ke lokasi baru, Anda perlu mengedit jalurnya. Untuk informasi lebih lanjut tentang variabel ini, silakan lihat https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv. Demi keamanan, direktori ini tidak boleh berada di dalam direktori data.

Alat yang Diperlukan

Biner semanage adalah bagian dari paket policycoreutils-python:

# yum install policycoreutils-python

Untuk menggunakan semanage dengan versi awal RHEL 6 dengan python 2.6, Anda mungkin perlu menginstal backport modul koleksi python OrderedDict menggunakan python-pip dari repositori EPEL.

Instal repositori EPEL:

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

Instal python-pip:

# yum install python-pip

Jika menginstal python-pip mengembalikan kesalahan ini:

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

Anda mungkin perlu memperbarui sertifikat CA SSL Anda menggunakan:

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


Cent OS
  1. Bagaimana Cara Menginstal dan Mengkonfigurasi NTP untuk Sinkronisasi Waktu di CentOS?

  2. Cara Instal Server MySQL di CentOS 7

  3. Cara Mengatur Blok Server Nginx di Ubuntu dan CentOS

  1. Bagaimana cara mereset kata sandi root MySQL untuk server biasa, server cPanel, dan server Plesk?

  2. Cara Mengatur Server LAMP Ubuntu/Debian

  3. Mengatur Server DHCP di CentOS 8 - Bagaimana Caranya?

  1. Cara Menginstal dan Mengatur mysql 8 di Ubuntu 20.04

  2. Cara Mengatur Server dan Klien NFS di Ubuntu 20.04

  3. Apa itu Mode SELinux dan cara mengaturnya