Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Najmä začínajúci penetrační testeri kladú menší dôraz na bezpečnosť databáz vo všeobecnosti. Aplikácia bez konfigurácie databázy a bezpečnostných testov nemôže byť bezpečná. Možno už používate softvér MySQL, systém správy databáz, tak ako ho môžete zvýšiť zabezpečením? Tu je sedem krokov, ktoré musíte dodržať.

1. Namiesto vzdialeného pripojenia použite tunelovanie SSH

Služba MySQL štandardne beží na porte 3306. Keď nainštalujete MySQL, uvidíte, že port 3306 je v režime počúvania pre všetky pripojenia. V súčasnej podobe je port MySQL otvorený vonkajšiemu svetu. Preto by ste mali nastaviť službu MySQL tak, aby počúvala iba lokálnu adresu.

Keďže servery zvyčajne bežia na distribúcii Linuxu, nižšie uvedené príklady sú založené na distribúcii Debian. Súbor, ktorý musíte použiť na tunelovanie SSH namiesto vzdialeného pripojenia a na zatvorenie predvoleného portu pre vonkajší svet, je

instagram viewer
/etc/mysql/my.cnf. V tomto súbore je potrebné otvoriť pole tzv [mysqld] a napíšte nasledujúci príkaz:

[mysqld]
viazať-adresa=127.0.0.1

Po tomto procese nezabudnite tento súbor uložiť a reštartovať službu nasledujúcim príkazom:

sudo systemctl reštartujte mysqld
# alebo
sudosystemctlreštartmariadb.servis

Vďaka tomu bude služba MySQL počúvať iba lokálnu adresu.

Ak používate MariaDB, môžete tiež preskúmať /etc/mysql/mariadb.conf.d/50-server.cnf a skontrolujte, či existuje definícia pre bind-address.

Teraz, keď máte nastavenú adresu väzby 127.0.0.1, čo je localhost, môžete spustiť skenovanie Nmap a skontrolovať výstup:

Môžete vidieť port MySQL, pretože 127.0.0.1 predstavuje localhost, ktorý vidíte. Môžete skúsiť znova zmeniť adresu väzby, aby ste sa uistili, že to funguje:

[mysqld]
viazať-adresa=127.5.5.1

Potom uložte /etc/mysql/my.cnf súbor a reštartujte službu MySQL. Ak vykonáte skenovanie Nmap opäť v tejto fáze by ste nemali vidieť túto adresu väzby na localhost.

Keď viete, že to funguje, vráťte sa k nastaveniam z prvého kroku a nastavte adresu väzby späť na 127.0.0.1 a znova uložte.

2. Nastavte lokálnu bariéru prístupu k súborom

MySQL dokáže komunikovať s lokálnym súborovým systémom. Pomocou dotazov môžete vidieť obsah textu v lokálnom súborovom systéme alebo napáliť výsledok dotazu na disk. Ak chcete zabrániť škodlivým útočníkom používať túto funkciu, musíte zabrániť MySQL v komunikácii s lokálnym súborovým systémom.

Na vykonanie preventívnych opatrení môžete použiť funkciu s názvom local-infile. Predstavte si napríklad, že máte súbor s názvom „/etc/secretfile.txt“ a v tomto súbore máte heslo. Ak je hodnota funkcie local-infile vo vašom súbore /etc/mysql/my.cnf 1, potom je prístup otvorený. Takže máte prístup k súboru secretfile.txt.

Hodnota funkcie local-infile je 1. Reštartujte databázu MySQL, aby sa zmeny prejavili. Teraz sa pripojte k MySQL pomocou nasledujúceho príkazu a skontrolujte, či vidíte súbor secretfile.txt:

VYBRAŤLOAD_FILE("/etc/secretfile.txt");

Nie je ťažké zachytiť informácie v akomkoľvek súbore v počítači.

Ak chcete vyriešiť tento problém, zmeňte hodnotu local-infile v súbore /etc/mysql/my.cnf takto:

[mysqld]
miestne-vklad=0

Reštartujte službu MySQL. Znovu sa pripojte k MySQL a zopakujte predchádzajúci krok; už by ste nemali vidieť obsah súboru.

Ak používatelia ešte nemajú povolenia na čítanie a zápis na lokálne súbory, nebudú môcť tento súbor vidieť. Stále je to však niečo, čo by ste si mali skontrolovať v penetračných testoch a zabezpečení databáz.

3. Nastavte používateľov aplikácií a heslá

Používateľ správy databázy a používateľ MySQL pristupujúci k databáze sa musia navzájom líšiť. Inými slovami, pripojenie aplikácií k MySQL s užívateľmi root je mimoriadne nebezpečné. Ak je to možné, definujte používateľov aplikácií, ktoré nefungujú Operácie UPDATE alebo INSERT oddelene.

Ďalšia vec, ktorú treba v tomto bode zvážiť, sú používateľské heslá. Ako takmer v každej oblasti, heslá pre používateľov MySQL musia byť zložité a nepredvídateľné. Ak s tým potrebujete pomoc, existujú skvelé systémy na generovanie hesiel, ktoré môžete použiť.

4. Odstrániť anonymných používateľov

Keď štandardne nainštalujete MySQL, vyskytnú sa niektorí anonymní používatelia. Musíte ich odstrániť a zablokovať im prístup. V prípade zabezpečeného servera MySQL by ste nemali dostať žiadnu odpoveď ako výsledok nasledujúceho dotazu:

VYBRAŤ * OD mysql.user KDEUSER="";
# Príklad výstupu
Prázdny nastaviť (0,001 s)

Ak existujú nejaké výsledky, mali by ste týchto anonymných používateľov odstrániť. Ak by napríklad existoval anonymný účet s názvom „anonuser“ v prostredí s názvom „localhost“, na odstránenie tohto účtu by ste museli použiť príkaz, ako je tento:

DROP USER 'anonusér'@'localhost';

5. Skontrolujte povolenia miestnych súborov MySQL

Predstavte si, že ste správcom databázy a chcete sa vrátiť k údajom spred týždňa. V tomto prípade sa možno budete musieť pripojiť k databázovému serveru cez SSH a zmeniť požadované súbory MySQL. Možno ste pri tom použili privilégiá užívateľa root systému Linux; to znamená, že vlastníctvo a povolenia dátových súborov sa môžu zmeniť. To nechceš.

Pozrite sa do adresára /var/lib/mysql a skontrolujte udelené povolenia. Tu musíte skontrolovať, či vlastníkom všetkých súborov je používateľ MySQL. Nasledujúci príkaz urobí trik:

sudo ls -al /var/lib/mysql

Povolenia na čítanie a zápis súborov by mali mať iba používateľ MySQL. Žiadni iní používatelia by nemali mať žiadne povolenia.

6. Použite MySQL SSL

Premýšľanie o konkrétnom príklade je najlepší spôsob, ako pochopiť používanie MySQL a SSL. Predstavte si, že jeden zo serverov v regióne ABC, kde je veľa rôznych serverov, prevezmú zákerní hackeri. Hackeri vykonajú internú kontrolu v oblasti ABC. Týmto spôsobom zhromažďujú informácie o serveroch.

Ak počas tohto procesu zistia server MySQL, môžu vykonať a Man-in-the-Middle (MitM) útok na cieľový server, čo znamená, že môžu ukradnúť informácie o reláciách aplikácií a používateľov, ktorí sa pripájajú k tomuto serveru. Jedným z najlepších spôsobov, ako sa tomu vyhnúť, je povoliť SSL na serveri MySQL.

7. Súbory denníka a histórie

Na analýzu a vyhľadávanie chýb používate denníky MySQL. Miesto uchovávania týchto protokolov môžete upraviť zadaním súboru my.cnf takto:

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

Názov alebo umiestnenie súboru mylogfiles môžete podľa potreby zmeniť. Je tu ešte jeden súbor, ktorý musíte skontrolovať. Keď sa pripojíte k serveru MySQL v termináli Linux a zadáte rôzne príkazy, tieto dotazy sa uložia do súboru mysql_history. Ak spustíte nasledujúci príkaz, môžete vidieť dotazy, ktoré používate v termináli MySQL:

cat ~/.mysql_history

Ak nechcete poskytovať informácie o tom, aký druh dotazov vytvárate na serveri, musíte vymazať obsah tohto súboru. Na odstránenie obsahu súboru použite nasledujúci príkaz:

sudo echo "vyčistené"> ~/.mysql_history

Potom môžete znova skontrolovať obsah súboru.

Kto vlastní databázu, vlastní systém

Bez ohľadu na to, v akom odvetví pracujete, vaša databáza vždy obsahuje dôležité informácie. Môžu to byť vaši zákazníci, bankové účty a heslá. Škodliví útočníci poznajú ich dôležitosť a hodnotu. Vývojári a správcovia databáz musia poznať aspoň základy, s ktorými sa stretnú pri penetračných testoch, aby porazili hackerov.