Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

A kezdő penetrációs tesztelők különösen kevésbé fektetnek hangsúlyt az adatbázis-biztonságra általában. Az adatbázis-konfiguráció és a biztonsági tesztek nélküli alkalmazás nem lehet biztonságos. Lehet, hogy már használ MySQL szoftvert, adatbázis-kezelő rendszert, hogyan teheti ezt biztonságosabbá? Íme hét lépés, amit követned kell.

1. Távoli kapcsolat helyett használjon SSH tunnelinget

A MySQL szolgáltatás alapértelmezés szerint a 3306-os porton fut. Amikor telepíti a MySQL-t, látni fogja, hogy a 3306-os port figyelési módban van az összes kapcsolathoz. Jelenlegi állapotában a MySQL port nyitott a külvilág felé. Ezért a MySQL szolgáltatást úgy kell beállítani, hogy csak a helyi címet figyelje.

Mivel a szerverek általában Linux disztribúción futnak, az alábbi példák Debian disztribúción alapulnak. Az a fájl, amelyet az SSH-alagúthoz kell használni a távoli kapcsolat helyett, és be kell zárni az alapértelmezett portot a külvilág felé

instagram viewer
/etc/mysql/my.cnf. Ebben a fájlban meg kell nyitnia egy mezőt [mysqld] és írja ki a következő parancsot:

[mysqld]
kötni-cím=127.0.0.1

A folyamat után ne felejtse el menteni ezt a fájlt, és indítsa újra a szolgáltatást a következő paranccsal:

sudo systemctl indítsa újra a mysqld-t
# vagy
sudosystemctlújrakezdmariadb.szolgáltatás

Ezzel a MySQL szolgáltatás csak a helyi címet fogja figyelni.

Ha MariaDB-t használsz, akkor is vizsgálhatod /etc/mysql/mariadb.conf.d/50-server.cnf és ellenőrizze, hogy van-e definíció a számára kötési cím.

Most, hogy beállította a kötési címet 127.0.0.1, amely egy localhost, futtathat egy Nmap vizsgálatot, és ellenőrizheti a kimenetet:

Láthatja a MySQL portot, mivel a 127.0.0.1 a látott helyi gazdagépet képviseli. Megpróbálhatja újra megváltoztatni a kötési címet, hogy megbizonyosodjon arról, hogy ez működik:

[mysqld]
kötni-cím=127.5.5.1

Ezután mentse el a /etc/mysql/my.cnf fájlt, és indítsa újra a MySQL szolgáltatást. Ha Nmap vizsgálatot végez ismét ebben a szakaszban nem láthatja ezt a kötési címet a localhost-on.

Ha tudja, hogy ez működik, térjen vissza az első lépés beállításaihoz, állítsa vissza a kötési címet 127.0.0.1-re, majd mentse újra.

2. Helyi fájlhozzáférési akadály beállítása

A MySQL képes kommunikálni a helyi fájlrendszerrel. A lekérdezések segítségével megtekintheti a szöveg tartalmát a helyi fájlrendszerben, vagy kiírhatja a lekérdezés eredményét egy lemezre. A szolgáltatás rosszindulatú támadóinak megakadályozása érdekében meg kell akadályoznia, hogy a MySQL kommunikáljon a helyi fájlrendszerrel.

Az óvintézkedések megtételéhez használhatja a local-infile nevű függvényt. Képzelje el például, hogy van egy "/etc/secretfile.txt" nevű fájlja, és ebben a fájlban van egy jelszó. Ha az /etc/mysql/my.cnf fájlban a local-infile függvény értéke 1, akkor a hozzáférés nyitva van. Így hozzáférhet a secretfile.txt fájlhoz.

A local-infile függvény értéke 1. A módosítások végrehajtásához indítsa újra a MySQL adatbázist. Most csatlakozzon a MySQL-hez a következő paranccsal, és ellenőrizze, hogy látja-e a secretfile.txt fájlt:

KIVÁLASZTÁSLOAD_FILE("/etc/titkosfájl.txt");

Nem nehéz rögzíteni az információkat a számítógépén lévő bármely fájlba.

A probléma megoldásához módosítsa a helyi adatfájl értékét az /etc/mysql/my.cnf fájlban az alábbiak szerint:

[mysqld]
helyi-infile=0

Indítsa újra a MySQL szolgáltatást. Csatlakozzon újra a MySQL-hez, és ismételje meg az előző lépést; többé nem láthatja a fájl tartalmát.

Ha a felhasználók még nem rendelkeznek írási és olvasási engedéllyel a helyi fájlokhoz, akkor nem fogják látni ezt a fájlt. Ennek ellenére érdemes ellenőrizni a penetrációs teszteket és az adatbázis biztonságát.

3. Állítsa be az alkalmazás felhasználóit és jelszavait

Az adatbázis-kezelő felhasználónak és az adatbázishoz hozzáférő MySQL-felhasználónak különböznie kell egymástól. Más szóval, az alkalmazások MySQL-hez való csatlakoztatása root felhasználókkal rendkívül veszélyes. Ha lehetséges, határozza meg a nem működő alkalmazások felhasználóit UPDATE vagy INSERT műveletek külön.

Egy másik dolog, amit ezen a ponton figyelembe kell venni, a felhasználói jelszavak. Mint szinte minden területen, a MySQL-felhasználók jelszavainak összetettnek és kiszámíthatatlannak kell lenniük. Ha segítségre van szüksége ebben, nagyszerű jelszógeneráló rendszereket használhat.

4. Névtelen felhasználók törlése

Amikor alapértelmezés szerint telepíti a MySQL-t, előfordulnak névtelen felhasználók. Ezeket törölni kell, és le kell tiltani a hozzáférésüket. Biztonságos MySQL-kiszolgáló esetén nem kaphat választ a következő lekérdezés eredményeként:

KIVÁLASZTÁS * TÓL TŐL mysql.user AHOLFELHASZNÁLÓ="";
# Példa kimenet
Üres készlet (0,001 mp)

Ha vannak eredmények, törölje ezeket a névtelen felhasználókat. Például, ha van egy "anonuser" nevű névtelen fiók egy "localhost" nevű környezetben, akkor a fiók törléséhez egy ehhez hasonló parancsot kell használnia:

HASZNÁLJON FEL 'névtelen felhasználó'@'helyi kiszolgáló';

5. Ellenőrizze a MySQL helyi fájl engedélyeit

Képzelje el, hogy Ön adatbázis-adminisztrátor, és szeretne visszatérni az egy héttel ezelőtti adatokhoz. Ebben az esetben előfordulhat, hogy SSH-n keresztül kell csatlakoznia az adatbázis-kiszolgálóhoz, és módosítania kell a kívánt MySQL-fájlokat. Ennek során előfordulhat, hogy a Linux root felhasználói jogosultságait használta; vagyis az adatfájlok tulajdonjoga és jogosultságai változhatnak. Ezt nem akarod.

Tekintse meg a /var/lib/mysql könyvtárat a megadott engedélyek ellenőrzéséhez. Itt ellenőriznie kell, hogy az összes fájl tulajdonosa-e a MySQL felhasználó. A következő parancs megteszi a trükköt:

sudo ls -al /var/lib/mysql

A fájlok olvasási és írási jogosultságai csak a MySQL felhasználónak lehetnek. Más felhasználóknak nem lehetnek engedélyei.

6. Használja a MySQL SSL-t

Egy konkrét példán való gondolkodás a legjobb módja a MySQL és az SSL használatának megértésének. Képzelje el, hogy az ABC régió egyik szerverét, ahol sok különböző szerver található, rosszindulatú hackerek veszik át. A hackerek belső vizsgálatot végeznek az ABC régióban. Ily módon információkat gyűjtenek a szerverekről.

Ha a folyamat során MySQL szervert észlelnek, végrehajthatják a Man-in-the-Middle (MitM) támadás a célszerver ellen, ami azt jelenti, hogy ellophatják a szerverhez csatlakozó alkalmazások és felhasználók munkamenet-információit. Ennek elkerülésére az egyik legjobb módszer az engedélyezze az SSL-t a MySQL szerveren.

7. Napló- és előzményfájlok

A MySQL-naplókat használja a hibák elemzésére és keresésére. A my.cnf megadásával módosíthatja, hogy hol tárolják ezeket a naplókat:

# /etc/mysql/my.cnf
[mysqld]
log =/var/log/mylogfiles

A mylogfiles nevét vagy helyét tetszés szerint módosíthatja. Van még egy fájl, amelyet ellenőriznie kell. Amikor egy Linux terminálon csatlakozik a MySQL kiszolgálóhoz, és különféle parancsokat ír be, ezek a lekérdezések a mysql_history fájlba kerülnek. Ha a következő parancsot futtatja, láthatja a MySQL terminálban használt lekérdezéseket:

macska ~/.mysql_history

Törölnie kell ennek a fájlnak a tartalmát, ha nem szeretne információt adni arról, hogy milyen lekérdezéseket hajt végre a szerveren belül. A következő paranccsal törölheti a fájl tartalmát:

sudo echo "tisztítani"> ~/.mysql_history

Ezután újra ellenőrizheti a fájl tartalmát.

Aki az adatbázis tulajdonosa, az birtokolja a rendszert

Nem számít, milyen iparágban dolgozik, az adatbázisa mindig fontos információkat tartalmaz. Ezek lehetnek ügyfelei, bankszámlái és jelszavai. A rosszindulatú támadók ismerik ezek fontosságát és értékét. Az adatbázis-fejlesztőknek és a rendszergazdáknak ismerniük kell legalább azokat az alapokat, amelyekkel a penetrációs tesztek során találkoznak, hogy legyőzzék a hackereket.