12 MySQL/MariaDB Howpsuzlyk Linux üçin iň oňat tejribe


MySQL dünýäde iň meşhur açyk çeşme maglumatlar bazasy ulgamy we MariDB (MySQL-iň çatrygy) dünýäde iň çalt ösýän açyk çeşme maglumatlar bazasydyr. MySQL serwerini guranyňyzdan soň, deslapky konfigurasiýasynda howpsuz däl we ony üpjün etmek umumy maglumat bazasyny dolandyrmakda möhüm meseleleriň biridir.

Bu, Linux serweriniň umumy howpsuzlygyny berkitmäge we ýokarlandyrmaga goşant goşar, sebäbi hüjümçiler ulgamyň islendik böleginde gowşak ýerleri skanirleýärler we maglumat bazalary geçmişde esasy maksat bolupdy. Adaty bir mysal, MySQL maglumat bazasy üçin kök paroly zalymlyk bilen zorlamak.

Bu gollanmada Linux üçin peýdaly MySQL/MariaDB howpsuzlyk tejribesini düşündireris.

1. MySQL gurnamasyny ygtybarly ediň

Bu, MySQL serwerini guranyňyzdan soň, maglumatlar bazasynyň serwerini goramak ugrundaky ilkinji maslahat berilýän ädimdir. Bu skript, MySQL serweriňiziň howpsuzlygyny ýokarlandyrmagy aňsatlaşdyrýar:

  • gurnama wagtynda düzmedik bolsaňyz, kök hasaby üçin parol belläň.
  • ýerli hostyň daşyndan girip boljak kök hasaplaryny aýyrmak bilen uzakdaky kök ulanyjy girişini öçüriň.
  • anonim ulanyjy hasaplaryny aýyryň we ähli ulanyjylara, hatda näbelli ulanyjylara hem girip bolýan synag maglumatlar bazasyny aýyryň.

# mysql_secure_installation

Işledeniňizden soň, kök parolyňyzy düzüň we [Hawa/Y] girizip, [Enter] basyň.

2. Maglumat bazasynyň serwerini yzyna gaýtarmak salgysyna baglaň

Bu konfigurasiýa uzakdaky maşynlardan girişi çäklendirer, MySQL serwerine diňe ýerlihostyň içindäki baglanyşyklary kabul etmegi aýdýar. Esasy konfigurasiýa faýlynda goýup bilersiňiz.

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

Aşakdaky setiri [mysqld] bölüminiň aşagyna goşuň.

bind-address = 127.0.0.1

3. MySQL-da OCerli maglumaty öçüriň

Howpsuzlygy berkitmegiň bir bölegi hökmünde, [mysqld] bölümi boýunça aşakdaky görkezmäni ulanyp, MySQL-iň esasy faýl ulgamyna girmeginiň öňüni almak üçin ýerli_infile ýapmaly.

local-infile=0

4. MYSQL başlangyç portuny üýtgediň

Port üýtgeýjisi, TCP/IP birikmelerini diňlemek üçin ulanyljak MySQL port belgisini düzýär. Bellenen port belgisi 3306, ýöne görkezilişi ýaly [mysqld] bölüminiň aşagynda üýtgedip bilersiňiz.

Port=5000

5. MySQL girişini açyň

Surnallar serwerde bolup geçýän zatlara düşünmegiň iň oňat usullaryndan biridir, haýsydyr bir hüjüm ýüze çykan halatynda, log faýllaryndan çozuş bilen baglanyşykly çäreleri aňsatlyk bilen görüp bilersiňiz. [mysqld] bölüminiň aşagyna aşakdaky üýtgeýjini goşup, MySQL ýazgysyny açyp bilersiňiz.

log=/var/log/mysql.log

6. MySQL faýllarynda degişli rugsady belläň

Mysql serwer faýllarynyň we maglumat kataloglarynyň hemmesine laýyk rugsatlaryň bardygyna göz ýetiriň. /Etc/my.conf faýly diňe kök üçin ýazylyp bilner. Bu, beýleki ulanyjylaryň maglumat bazasynyň serweriniň konfigurasiýalaryny üýtgetmeginiň öňüni alýar.

# chmod 644 /etc/my.cnf

7. MySQL gabyk taryhyny pozuň

MySQL gabygynda ýerine ýetirýän ähli buýruklaryňyz mysql müşderisi tarapyndan taryh faýlynda saklanýar: ~/.mysql_history. Bu howply bolup biler, sebäbi döredjek islendik ulanyjy hasaplaryňyz üçin gabykda ýazylan ähli ulanyjy atlary we parollar taryh faýlynda ýazylar.

# cat /dev/null > ~/.mysql_history

8. MySQL buýruklaryny buýruk setirinden işletmäň

Öňden bilşiňiz ýaly, terminalda ýazýan buýruklaryňyzyň hemmesi ulanýan gabygyňyza baglylykda taryh faýlynda saklanýar (mysal üçin ~/.bash_history bash üçin). Bu taryh faýlyna girmegi başaran hüjümçi, şol ýerde ýazylan parollary aňsatlyk bilen görüp biler.

Buýruk setirine parol ýazmak maslahat berilmeýär, şuňa meňzeş bir zat:

# mysql -u root -ppassword_

Buýruk taryhy faýlynyň soňky bölümini barlasaňyz, ýokarda ýazylan paroly görersiňiz.

# history 

MySQL-i birikdirmegiň degişli usuly.

# mysql -u root -p
Enter password:

9. Programma aýratyn maglumat bazasyny ulanyjylary kesgitläň

Serwerde işleýän her bir programma üçin diňe berlen programma üçin maglumat bazasyna jogapkär ulanyja giriň. Mysal üçin, Wordpress sahypasy bar bolsa, Wordpress sahypasynyň maglumat bazasy üçin belli bir ulanyjy dörediň.

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

we serwerdäki programma bazasyny dolandyrmaýan ulanyjy hasaplaryny elmydama aýyrmagy ýatdan çykarmaň.

10. Goşmaça howpsuzlyk plaginlerini we kitaphanalary ulanyň

MySQL üçin birnäçe howpsuzlyk plaginleri bar: müşderileriň mysql serwerine birikmek synanyşyklaryny tassyklamak, paroly tassyklamak we mugt wersiýada bar bolan duýgur maglumatlar üçin ammar üpjün etmek.

Has giňişleýin maglumaty şu ýerden tapyp bilersiňiz: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. MySQL parollaryny yzygiderli üýtgediň

Bu umumy maglumat/programma/ulgam howpsuzlygy maslahaty. Muny näçe gezek ýerine ýetirseňiz, içerki howpsuzlyk syýasatyňyza bagly bolar. Şeýle-de bolsa, uzak wagtlap işjeňligiňizi yzarlaýan\gizlinleriň mysql serweriňize girmeginiň öňüni alyp biler.

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

12. MySQL serwer paketini yzygiderli täzeläň

Satyjynyň ammaryndan howpsuzlyk täzelenmeleri we näsazlyklary düzetmek üçin mysql/mariadb paketlerini yzygiderli täzelemek maslahat berilýär. Adatça operasiýa ulgamynyň ammarlaryndaky paketler köne.

# yum update
# apt update

Mysql/mariadb serwerine haýsydyr bir üýtgeşme girizeniňizden soň, hyzmaty hemişe täzeden açyň.

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

Bu hemmesi! Aşakdaky teswir formasy arkaly sizden eşitmek isleýäris. Aboveokardaky sanawda ýok bolan MySQL/MariaDB howpsuzlyk maslahatlaryny biz bilen paýlaşyň.