Mysql
 sql >> база данни >  >> RDS >> Mysql

12 Най-добри практики за сигурност на MySQL/MariaDB за Linux

MySQL е най-популярната в света система за бази данни с отворен код и MariaDB (разклонение на MySQL) е най-бързо развиващата се система за бази данни с отворен код. След инсталирането на MySQL сървъра той е несигурен в конфигурацията си по подразбиране и защитата му е една от основните задачи при общото управление на базата данни.

Това ще допринесе за втвърдяване и повишаване на цялостната сигурност на сървъра на Linux, тъй като нападателите винаги сканират уязвимостите във всяка част на системата, а базите данни в миналото са били ключови целеви области. Често срещан пример е грубо налагане на root парола за базата данни MySQL.

В това ръководство ще обясним полезния MySQL/MariaDB най-добрата практика за сигурност за Linux.

1. Сигурна инсталация на MySQL

Това е първата препоръчителна стъпка след инсталирането на MySQL сървъра, за да защитите сървъра на базата данни. Този скрипт улеснява подобряването на сигурността на вашия MySQL сървър, като ви моли да:

  • задайте парола за root акаунта, ако не сте я задали по време на инсталацията.
  • деактивирайте влизането на отдалечен root потребител, като премахнете root акаунти, които са достъпни извън локалния хост.
  • премахнете акаунти на анонимни потребители и тестова база данни, които по подразбиране могат да бъдат достъпни от всички потребители, дори анонимни потребители.
# mysql_secure_installation

След като го стартирате, задайте root паролата и отговорете на поредицата от въпроси, като въведете [Yes/Y ] и натиснете [Enter] .

2. Свържете сървъра на базата данни с адрес за обратна връзка

Тази конфигурация ще ограничи достъпа от отдалечени машини, казва на MySQL сървъра да приема връзки само от локалния хост. Можете да го зададете в основния конфигурационен файл.

# vi /etc/my.cnf	                   [RHEL/CentOS]	
# vi /etc/mysql/my.conf                    [Debian/Ubuntu] 
OR
# vi /etc/mysql/mysql.conf.d/mysqld.cnf    [Debian/Ubuntu] 

Добавете следния ред по-долу под [mysqld] раздел.

bind-address = 127.0.0.1

3. Деактивирайте LOCAL INFILE в MySQL

Като част от засилването на сигурността трябва да деактивирате local_infile за да предотвратите достъпа до основната файлова система от MySQL, като използвате следната директива под [mysqld] раздел.

local-infile=0

4. Променете порта по подразбиране на MYSQL

Пристанището променливата задава номера на порта на MySQL, който ще се използва за слушане на TCP/IP връзки. Номерът на порта по подразбиране е 3306 но можете да го промените под [mysqld] раздел, както е показано.

Port=5000

5. Активирайте записването на MySQL

Регистратурите са един от най-добрите начини да разберете какво се случва на сървър, в случай на атаки можете лесно да видите всякакви дейности, свързани с проникване, от регистрационни файлове. Можете да активирате регистрирането на MySQL, като добавите следната променлива под [mysqld] раздел.

log=/var/log/mysql.log

6. Задайте подходящо разрешение за MySQL файлове

Уверете се, че имате зададени подходящи разрешения за всички mysql сървърни файлове и директории с данни. /etc/my.conf файл трябва да може да се записва само в root. Това блокира други потребители да променят конфигурациите на сървъра на базата данни.

# chmod 644 /etc/my.cnf

7. Изтриване на MySQL Shell History

Всички команди, които изпълнявате в обвивката на MySQL, се съхраняват от mysql клиента във файл с история:~/.mysql_history . Това може да бъде опасно, тъй като за всички потребителски акаунти, които ще създадете, всички потребителски имена и пароли, въведени в обвивката, ще бъдат записани във файла с история.

# cat /dev/null > ~/.mysql_history

8. Не изпълнявайте MySQL команди от командния ред

Както вече знаете, всички команди, които въвеждате в терминала, се съхраняват във файл с история, в зависимост от обвивката, която използвате (например ~/.bash_history за bash). Нападател, който успее да получи достъп до този файл с история, може лесно да види всички пароли, записани там.

Силно не се препоръчва да въвеждате пароли в командния ред, нещо като това:

# mysql -u root -ppassword_

Когато проверите последния раздел на файла с хронология на командите, ще видите въведената по-горе парола.

# history 

Подходящият начин за свързване на MySQL е.

# mysql -u root -p
Enter password:

9. Определете специфични за приложението потребители на база данни

За всяко приложение, работещо на сървъра, дайте достъп само на потребител, който отговаря за база данни за дадено приложение. Например, ако имате сайт на WordPress, създайте конкретен потребител за базата данни на сайта на WordPress, както следва.

# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY '[email protected]%!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

и не забравяйте винаги да премахвате потребителски акаунти, които вече не управляват база данни на приложения на сървъра.

10. Използвайте допълнителни плъгини и библиотеки за сигурност

MySQL включва редица приставки за сигурност за:удостоверяване на опитите на клиентите да се свържат с mysql сървър, проверка на парола и осигуряване на съхранение за чувствителна информация, всички те са налични в безплатната версия.

Можете да намерите повече тук:https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Променяйте редовно паролите за MySQL

Това е често срещан съвет за информация/приложение/системна сигурност. Колко често правите това ще зависи изцяло от вашата вътрешна политика за сигурност. Това обаче може да попречи на „шоньорите“, които може да са проследявали дейността ви за дълъг период от време, да получат достъп до вашия mysql сървър.

MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

12. Актуализирайте редовно MySQL сървърния пакет

Силно препоръчително е редовно да надграждате пакетите mysql/mariadb, за да сте в крак с актуализациите на защитата и корекциите на грешки от хранилището на доставчика. Обикновено пакетите в хранилища на операционната система по подразбиране са остарели.

# yum update
# apt update

След като направите каквито и да е промени в сървъра mysql/mariadb, винаги рестартирайте услугата.

# systemctl restart mariadb		#RHEL/CentOS
# systemctl restart mysql		#Debian/Ubuntu

Това е всичко! Обичаме да чуем от вас чрез формата за коментари по-долу. Споделете с нас всички съвети за сигурност на MySQL/MariaDB, които липсват в списъка по-горе.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете колони в различни бази данни

  2. Колко голяма може да стане една MySQL база данни, преди производителността да започне да се влошава

  3. Алтернативи на MySQL Workbench - ClusterControl Configuration Management

  4. Множество заявки, изпълнени в Java в един израз

  5. DATEDIFF() Примери – MySQL