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é
/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.