12 MySQL/MariaDB turvalisuse head tava Linuxile


MySQL on maailma populaarseim avatud lähtekoodiga andmebaasisüsteem ja MariaDB (MySQLi kahvel) on maailma kõige kiiremini kasvav avatud lähtekoodiga andmebaasisüsteem. Pärast MySQL-serveri installimist on see vaikekonfiguratsioonis ebaturvaline ja selle turvamine on üks andmebaaside üldise haldamise hädavajalikke ülesandeid.

See aitab kaasa Linuxi serverite üldise turvalisuse karastamisele ja suurendamisele, kuna ründajad kontrollivad alati haavatavusi süsteemi mis tahes osas ja andmebaasid on varem olnud peamised sihtvaldkonnad. Levinud näide on MySQL-i andmebaasi juurparooli jõhker sundimine.

Selles juhendis selgitame kasulikke MySQL/MariaDB turvalisuse häid tavasid Linuxi jaoks.

1. Turvaline MySQL-i installimine

See on esimene soovitatav samm pärast MySQL-serveri installimist andmebaasiserveri turvalisuse suunas. See skript hõlbustab teie MySQL-serveri turvalisuse parandamist, paludes teil:

  • määrake juurkonto parool, kui te pole seda installimise ajal määranud.
  • keelake juurjuure kaugsisselogimine, eemaldades juurkontod, millele on juurdepääs väljaspool kohalikku hosti.
  • eemaldage anonüümsete kasutajate kontod ja testandmebaas, millele pääsevad vaikimisi juurde kõik kasutajad, isegi anonüümsed kasutajad.

# mysql_secure_installation

Pärast selle käivitamist määrake juurparool ja vastake reale küsimustele, sisestades [Jah/Y] ja vajutage [Enter].

2. Siduge andmebaasiserver tagasisideaadressiga

See konfiguratsioon piirab juurdepääsu kaugmasinatelt, see käsib MySQL-serveril aktsepteerida ühendusi ainult kohalikust hostist. Saate selle määrata peamises konfiguratsioonifailis.

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

Lisage jaotise [mysqld] alla järgmine rida.

bind-address = 127.0.0.1

3. Keela MySQL-is LOCAL INFILE

Turvalisuse karastamise osana peate keelama local_infile, et takistada juurdepääsu aluseks olevale failisüsteemile MySQL-ist, kasutades järgmist jaotise [mysqld] käsku.

local-infile=0

4. Muutke MYSQLi vaikepordi

Muutuja Port määrab MySQL-i pordi numbri, mida kasutatakse TCP/IP-ühenduste kuulamiseks. Vaikepordi number on 3306, kuid saate seda muuta jaotises [mysqld], nagu näidatud.

Port=5000

5. Lubage MySQL-i logimine

Logid on üks parimaid viise serveris toimuva mõistmiseks, rünnakute korral näete logifailidest hõlpsasti sissetungimisega seotud tegevusi. MySQL-i logimise saate lubada, lisades jaotise [mysqld] järgmise muutuja.

log=/var/log/mysql.log

6. Määrake MySQL-failidele sobiv luba

Veenduge, et teil oleks kõigi mysql-serveri failide ja andmekataloogide jaoks määratud õigused. Fail /etc/my.conf peaks olema kirjutatav ainult juure. See blokeerib teisi kasutajaid andmebaasiserveri konfiguratsioonide muutmisel.

# chmod 644 /etc/my.cnf

7. Kustutage MySQL Shelli ajalugu

Kõik MySQL-i kestal täidetud käsud salvestab mysql-klient ajaloofaili: ~/.mysql_history. See võib olla ohtlik, sest kõigi teie loodud kasutajakontode puhul salvestatakse kõik kestale sisestatud kasutajanimed ja paroolid ajaloofaili.

# cat /dev/null > ~/.mysql_history

8. Ärge käivitage MySQL-i käske käsurealt

Nagu te juba teate, salvestatakse kõik terminalis sisestatud käsud ajaloofaili, sõltuvalt kasutatavast kestast (näiteks ~/.bash_history bashi jaoks). Ründaja, kellel õnnestub sellele ajaloofailile juurde pääseda, näeb hõlpsasti sinna salvestatud paroole.

Paralleelselt ei soovitata käsureale paroole kirjutada, umbes nii:

# mysql -u root -ppassword_

Kui kontrollite käsuajaloofaili viimast jaotist, näete ülaltoodud parooli.

# history 

Sobiv viis MySQL-i ühendamiseks on.

# mysql -u root -p
Enter password:

9. Määratlege rakenduspõhised andmebaasi kasutajad

Andke iga serveris töötava rakenduse jaoks juurdepääs ainult kasutajale, kes vastutab antud rakenduse andmebaasi eest. Näiteks kui teil on WordPress-sait, looge WordPress-saidi andmebaasi jaoks konkreetne kasutaja järgmiselt.

# 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

ja pidage meeles, et eemaldage alati need kasutajakontod, mis ei halda enam ühtegi rakenduse andmebaasi serveris.

10. Kasutage täiendavaid turvapluginaid ja -raamatukogusid

MySQL sisaldab mitmeid turvapluginaid: klientide katsete autentimine mysql-serveriga ühenduse loomiseks, paroolide kinnitamine ja tundliku teabe salvestamise tagamine, mis on kõik saadaval tasuta versioonis.

Lisateavet leiate siit: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Muutke MySQL-i paroole regulaarselt

See on tavaline teave/rakendus/süsteemi turvanõuanded. Kui tihti te seda teete, sõltub täielikult teie sisejulgeolekupoliitikast. See võib aga takistada\"nuhkijatel», kes võisid teie tegevust pikka aega jälgida, juurdepääsu teie mysql-serverile.

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

12. Uuendage MySQL-i serveripaketti regulaarselt

Turvavärskenduste ja veaparandustega kaasas käimiseks on tungivalt soovitatav mysql/mariadb pakette regulaarselt uuendada. Tavaliselt on operatsioonisüsteemi vaikehoidlates olevad paketid aegunud.

# yum update
# apt update

Pärast mysql/mariadb serveris muudatuste tegemist taaskäivitage teenus alati.

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

See on kõik! Meile meeldib teid allpool oleva kommentaarivormi kaudu kuulda. Jagage meiega kõiki ülaltoodud loendis puuduvaid MySQL/MariaDB turvanõuandeid.