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.