12 MySQL/MariaDB Security Best Practices para sa Linux


Ang MySQL mao ang pinakasikat nga open source database system sa kalibutan ug ang MariaDB (usa ka fork sa MySQL) mao ang pinakapaspas nga nagtubo nga open source database system. Pagkahuman sa pag-install sa MySQL server, dili kini sigurado sa default nga pag-configure niini, ug ang pagsiguro niini usa sa hinungdanon nga mga buluhaton sa pagdumala sa kinatibuk-ang database.

Makatampo kini sa pagpagahi ug pagpauswag sa kinatibuk-ang seguridad sa server sa Linux, tungod kay ang mga tig-atake kanunay nga nag-scan sa mga kahuyangan sa bisan unsang bahin sa usa ka sistema, ug ang mga database kaniadto mao ang panguna nga target nga mga lugar. Usa ka komon nga pananglitan mao ang brute-forcing sa root password alang sa MySQL database.

Niini nga giya, among ipasabut ang mapuslanon nga MySQL/MariaDB security best practice para sa Linux.

1. Lig-on ang Pag-instalar sa MySQL

Kini ang una nga girekomenda nga lakang pagkahuman sa pag-install sa MySQL server, padulong sa pagsiguro sa database server. Kini nga script nagpadali sa pagpauswag sa seguridad sa imong MySQL server pinaagi sa paghangyo kanimo sa:

  • pagbutang ug password para sa root account, kung wala nimo kini gitakda sa panahon sa pag-instalar.
  • i-disable ang remote root user login pinaagi sa pagtangtang sa root accounts nga ma-access gikan sa gawas sa lokal nga host.
  • kuhaa ang anonymous-user accounts ug test database nga sa default mahimong ma-access sa tanang user, bisan sa anonymous nga user.

# mysql_secure_installation

Human sa pagpadagan niini, ibutang ang root password ug tubaga ang serye sa mga pangutana pinaagi sa pagsulod sa [Oo/Y] ug pindota ang [Enter].

2. Ibugkos ang Database Server Ngadto sa Loopback Address

Kini nga pagsumpo magpugong sa pag-access gikan sa hilit nga mga makina, kini nagsulti sa MySQL server nga modawat lamang sa mga koneksyon gikan sa sulod sa localhost. Mahimo nimo kini ibutang sa main configuration file.

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

Idugang ang mosunod nga linya sa ubos ubos sa [mysqld] nga seksyon.

bind-address = 127.0.0.1

3. I-disable ang LOCAL INFILE sa MySQL

Isip kabahin sa pagpatig-a sa seguridad, kinahanglan nimong i-disable ang local_infile aron mapugngan ang pag-access sa nagpahiping filesystem gikan sa sulod sa MySQL gamit ang mosunod nga direktiba ubos sa [mysqld] nga seksyon.

local-infile=0

4. Usba ang MYSQL Default Port

Ang Port variable nagtakda sa MySQL port number nga gamiton sa pagpaminaw sa TCP/IP connections. Ang default port number mao ang 3306 apan mahimo nimo kini usbon ubos sa [mysqld] nga seksyon sama sa gipakita.

Port=5000

5. I-enable ang MySQL Logging

Ang mga log maoy usa sa pinakamaayong paagi aron masabtan kon unsay mahitabo sa usa ka server, sa kaso sa bisan unsang pag-atake, dali nimong makita ang bisan unsang kalihokan nga may kalabotan sa pagpanglusot gikan sa mga file sa log. Mahimo nimong i-enable ang MySQL logging pinaagi sa pagdugang sa mosunod nga variable ubos sa [mysqld] nga seksyon.

log=/var/log/mysql.log

6. Itakda ang Tukmang Pagtugot sa MySQL Files

Siguroha nga ikaw adunay tukma nga mga permiso nga gitakda para sa tanang mysql server files ug data directory. Ang /etc/my.conf nga payl kinahanglang masulat lang sa gamut. Gibabagan niini ang ubang mga tiggamit gikan sa pagbag-o sa mga configuration sa database server.

# chmod 644 /etc/my.cnf

7. Pagtangtang sa MySQL Shell History

Ang tanan nga mga sugo nga imong gipatuman sa MySQL shell gitipigan sa mysql client sa usa ka history file: ~/.mysql_history. Mahimong delikado kini, tungod kay alang sa bisan unsang mga account sa gumagamit nga imong buhaton, ang tanan nga mga username ug password nga gi-type sa shell marekord sa file sa kasaysayan.

# cat /dev/null > ~/.mysql_history

8. Ayaw Pagdalag MySQL Commands gikan sa Commandline

Sama sa nahibal-an na nimo, ang tanan nga mga command nga imong gi-type sa terminal gitipigan sa usa ka history file, depende sa shell nga imong gigamit (pananglitan ~/.bash_history para sa bash). Ang usa ka tig-atake nga nakahimo sa pag-access sa kini nga file sa kasaysayan dali nga makakita sa bisan unsang mga password nga natala didto.

Dili kaayo girekomenda nga i-type ang mga password sa command line, sama niini:

# mysql -u root -ppassword_

Kung imong susihon ang katapusang seksyon sa command history file, imong makita ang password nga gi-type sa ibabaw.

# history 

Ang angay nga paagi sa pagkonektar sa MySQL mao ang.

# mysql -u root -p
Enter password:

9. Ipasabut ang mga Gumagamit sa Database nga Piho sa Aplikasyon

Alang sa matag aplikasyon nga nagdagan sa server, hatagi lang ug akses ang usa ka tiggamit nga nagdumala sa usa ka database alang sa usa ka gihatag nga aplikasyon. Pananglitan, kon ikaw adunay usa ka wordpress site, paghimo og usa ka piho nga user alang sa wordpress site database sama sa mosunod.

# 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

ug hinumdomi nga tangtangon kanunay ang mga account sa gumagamit nga wala na nagdumala sa bisan unsang database sa aplikasyon sa server.

10. Paggamit og Dugang nga Security Plugins ug Libraries

Ang MySQL naglakip sa usa ka gidaghanon sa mga plugins sa seguridad alang sa: pag-authenticate sa mga pagsulay sa mga kliyente sa pagkonektar sa mysql server, password-validation ug pagsiguro sa pagtipig alang sa sensitibo nga impormasyon, nga tanan anaa sa libre nga bersyon.

Makita nimo ang dugang dinhi: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Usba kanunay ang MySQL Passwords

Kini usa ka sagad nga piraso sa kasayuran/aplikasyon/tambag sa seguridad sa sistema. Unsa ka sagad nimo buhaton kini magdepende sa imong internal nga palisiya sa seguridad. Bisan pa, kini makapugong sa \mga snooper nga tingali nagsubay sa imong kalihokan sa taas nga yugto sa panahon, gikan sa pag-access sa imong mysql server.

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

12. Regular nga I-update ang MySQL Server Package

Girekomenda nga kanunay nga i-upgrade ang mysql/mariadb nga mga pakete aron mapadayon ang mga update sa seguridad ug pag-ayo sa bug, gikan sa repositoryo sa vendor. Kasagaran ang mga pakete sa default nga mga repositoryo sa operating system wala na sa panahon.

# yum update
# apt update

Human makahimo ug bisan unsa nga kausaban sa mysql/mariadb server, kanunay i-restart ang serbisyo.

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

Kana lang! Ganahan kami nga makadungog gikan kanimo pinaagi sa porma sa komento sa ubos. Ipaambit kanamo ang bisan unsang mga tip sa seguridad sa MySQL/MariaDB nga nawala sa lista sa ibabaw.