Weboldal keresés

12 MySQL/MariaDB biztonsági bevált gyakorlatok Linuxhoz


A MySQL a világ legnépszerűbb nyílt forráskódú adatbázis-rendszere, a MariaDB (a MySQL egyik ága) pedig a világ leggyorsabban növekvő nyílt forráskódú adatbázis-rendszere. A MySQL szerver telepítése után az alapértelmezett konfigurációjában nem biztonságos, a biztonsága pedig az általános adatbázis-kezelés egyik alapvető feladata.

Olvassa el még: Ismerje meg a MySQL-t/MariaDB-t kezdőknek – 1. rész

Ez hozzájárul a Linux szerverek általános biztonságának szigorításához és fokozásához, mivel a támadók mindig megvizsgálják a rendszer bármely részének sebezhetőségét, és a múltban az adatbázisok kulcsfontosságú célterületek voltak. Gyakori példa a MySQL-adatbázis root jelszavának durva kényszerítése.

Ebben az útmutatóban bemutatjuk a hasznos MySQL/MariaDB biztonsági bevált gyakorlatokat Linuxhoz.

1. Biztonságos MySQL telepítés

Ez az első ajánlott lépés a MySQL szerver telepítése után az adatbázis-kiszolgáló biztonságossá tétele felé. Ez a szkript megkönnyíti a MySQL-kiszolgáló biztonságának javítását azáltal, hogy a következőket kéri:

  • állítson be jelszót a root fiókhoz, ha nem állította be a telepítés során.
  • tiltsa le a távoli root felhasználói bejelentkezést a helyi gazdagépen kívülről elérhető root fiókok eltávolításával.
  • távolítsa el az anonim felhasználói fiókokat és tesztelje az adatbázist, amely alapértelmezés szerint minden felhasználó számára elérhető, még a névtelen felhasználók is.
mysql_secure_installation

A futtatás után állítsa be a root jelszót, és válaszoljon a kérdésekre a [Yes/Y] beírásával, majd nyomja meg az [Enter] billentyűt.

2. Az adatbázis-kiszolgáló összerendelése a visszahurkolási címhez

Ez a konfiguráció korlátozza a távoli gépek hozzáférését, és megmondja a MySQL szervernek, hogy csak a localhost-on belül fogadja el a kapcsolatokat. A fő konfigurációs fájlban állíthatja be.

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

Adja hozzá az alábbi sort a [mysqld] szakaszhoz.

bind-address = 127.0.0.1

3. Tiltsa le a LOCAL INFILE funkciót a MySQL-ben

A biztonsági szigorítás részeként le kell tiltania a local_infile elemet, hogy megakadályozza a mögöttes fájlrendszerhez való hozzáférést a MySQL-en belül a következő direktíva használatával a [mysqld] szakaszban.

local-infile=0

4. Módosítsa a MYSQL alapértelmezett portját

A Port változó beállítja azt a MySQL portszámot, amely a TCP/IP-kapcsolatok figyelésére szolgál. Az alapértelmezett portszám a 3306, de a képen látható módon módosíthatja a [mysqld] szakaszban.

Port=5000

5. Engedélyezze a MySQL naplózást

A naplók az egyik legjobb módja annak, hogy megértsük, mi történik a szerveren, bármilyen támadás esetén könnyedén megtekintheti a behatolással kapcsolatos tevékenységeket a naplófájlokból. A MySQL naplózást a következő változó hozzáadásával engedélyezheti a [mysqld] szakaszban.

log=/var/log/mysql.log

6. Állítsa be a megfelelő engedélyt a MySQL fájlokhoz

Győződjön meg arról, hogy megfelelő jogosultságokkal rendelkezik az összes mysql szerver fájlhoz és adatkönyvtárhoz. Az /etc/my.conf fájl csak root számára írható. Ez megakadályozza, hogy más felhasználók módosítsák az adatbázis-kiszolgáló konfigurációját.

chmod 644 /etc/my.cnf

7. Törölje a MySQL Shell előzményeit

A MySQL shellben végrehajtott összes parancsot a mysql kliens egy előzményfájlban tárolja: ~/.mysql_history. Ez veszélyes lehet, mert minden létrehozandó felhasználói fiók esetében a rendszerhéjba beírt összes felhasználónév és jelszó rögzítésre kerül az előzményfájlban.

cat /dev/null > ~/.mysql_history

8. Ne futtasson MySQL-parancsokat a parancssorból

Amint azt már tudja, a terminálon beírt összes parancs egy előzményfájlban tárolódik, a használt shelltől függően (például ~/.bash_history a bash esetén). A támadó, akinek sikerül hozzáférnie ehhez az előzményfájlhoz, könnyen láthatja az ott rögzített jelszavakat.

Erősen nem ajánlott jelszavakat beírni a parancssorba, ilyesmi:

mysql -u root -ppassword_

Amikor megnézi a parancselőzmény-fájl utolsó részét, látni fogja a fent begépelt jelszót.

history 

A MySQL csatlakoztatásának megfelelő módja az.

mysql -u root -p
Enter password:

9. Alkalmazás-specifikus adatbázis-felhasználók meghatározása

A kiszolgálón futó minden egyes alkalmazáshoz csak olyan felhasználónak adjon hozzáférést, aki az adott alkalmazás adatbázisáért felelős. Például, ha van egy wordpress-webhelye, hozzon létre egy adott felhasználót a wordpress-webhely-adatbázishoz az alábbiak szerint.

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

és ne felejtse el mindig eltávolítani azokat a felhasználói fiókokat, amelyek már nem kezelnek egyetlen alkalmazásadatbázist sem a kiszolgálón.

10. Használjon további biztonsági beépülő modulokat és könyvtárakat

A MySQL számos biztonsági beépülő modult tartalmaz a következőkhöz: a kliensek mysql szerverhez való kapcsolódási kísérleteinek hitelesítése, a jelszó ellenőrzése és az érzékeny információk tárolásának biztosítása, amelyek mindegyike elérhető az ingyenes verzióban.

További információkat itt talál: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Rendszeresen változtassa meg a MySQL jelszavakat

Ez egy gyakori információ/alkalmazás/rendszerbiztonsági tanács. Hogy ezt milyen gyakran teszi, az teljes mértékben az Ön belső biztonsági szabályzatától függ. Megakadályozhatja azonban, hogy a tevékenységét hosszú időn keresztül nyomon követő „leselkedők” hozzáférjenek a mysql-kiszolgálóhoz.

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

12. Frissítse rendszeresen a MySQL Server csomagot

Erősen ajánlott a mysql/mariadb csomagok rendszeres frissítése, hogy lépést tarthasson a biztonsági frissítésekkel és hibajavításokkal a gyártó tárházából. Általában az operációs rendszer alapértelmezett tárolóiban lévő csomagok elavultak.

yum update
apt update

A mysql/mariadb szerveren végzett változtatások után mindig indítsa újra a szolgáltatást.

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

Olvassa el még: 15 hasznos MySQL/MariaDB teljesítményhangolási és -optimalizálási tipp

Ez minden! Szeretnénk hallani Önről az alábbi megjegyzés űrlapon keresztül. Ossza meg velünk a fenti listából hiányzó MySQL/MariaDB biztonsági tippeket.