Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Начинаещите тестери за проникване, по-специално, поставят по-малко акцент върху сигурността на базата данни като цяло. Приложение без конфигурация на база данни и тестове за сигурност не може да бъде защитено. Може би вече използвате MySQL софтуер, система за управление на база данни, така че как можете да я направите по-сигурна? Ето седем стъпки, които трябва да следвате.

1. Използвайте SSH тунелиране вместо отдалечена връзка

Услугата MySQL работи на порт 3306 по подразбиране. Когато инсталирате MySQL, ще видите, че порт 3306 е в режим на слушане за всички връзки. В настоящия си вид портът на MySQL е отворен за външния свят. Ето защо трябва да настроите услугата MySQL да слуша само локалния адрес.

Тъй като сървърите обикновено се изпълняват на дистрибуция на Linux, примерите по-долу са базирани на дистрибуция на Debian. Файлът, който трябва да използвате за SSH тунелиране вместо отдалечена връзка и за затваряне на порта по подразбиране към външния свят, е

instagram viewer
/etc/mysql/my.cnf. В този файл трябва да отворите поле, наречено [mysqld] и напишете следната команда:

[mysqld]
обвързвам-адрес=127.0.0.1

След този процес не забравяйте да запазите този файл и да рестартирате услугата със следната команда:

sudo systemctl рестартирайте mysqld
# или
sudosystemctlрестартирамmariadb.обслужване

С това услугата MySQL ще слуша само локалния адрес.

Ако използвате MariaDB, можете също да разгледате /etc/mysql/mariadb.conf.d/50-server.cnf и проверете дали има определение за свързващ адрес.

Сега, след като адресът за свързване е зададен на 127.0.0.1, което е localhost, можете да стартирате Nmap сканиране и да проверите резултата:

Можете да видите MySQL порта като 127.0.0.1 представлява локалния хост, който виждате. Можете да опитате и да промените адреса за свързване отново, за да сте сигурни, че това работи:

[mysqld]
обвързвам-адрес=127.5.5.1

След това запазете /etc/mysql/my.cnf файл и рестартирайте услугата MySQL. Ако извършите Nmap сканиране отново на този етап не трябва да виждате този адрес за свързване на localhost.

След като разберете, че това работи, върнете се към настройките от първата стъпка и задайте адреса за свързване обратно на 127.0.0.1 и запазете отново.

2. Настройте локална бариера за достъп до файлове

MySQL може да комуникира с локалната файлова система. Със заявките можете да видите съдържанието на текст в локалната файлова система или да запишете резултата от заявката на диск. За да попречите на злонамерени нападатели да използват тази функция, трябва да попречите на MySQL да комуникира с локалната файлова система.

Можете да използвате функция, наречена local-infile, за да вземете предпазни мерки. Например, представете си, че имате файл с име "/etc/secretfile.txt" и имате парола в този файл. Ако стойността на функцията local-infile във вашия файл /etc/mysql/my.cnf е 1, тогава достъпът е отворен. Така че можете да получите достъп до файла secretfile.txt.

Стойността на функцията local-infile е 1. Рестартирайте MySQL базата данни, за да настъпят промените. Сега се свържете с MySQL със следната команда и проверете дали можете да видите файла secretfile.txt:

ИЗБЕРЕТЕLOAD_FILE("/etc/secretfile.txt");

Не е трудно да заснемете информацията във всеки файл на вашия компютър.

За да разрешите този проблем, променете стойността на local-infile във вашия файл /etc/mysql/my.cnf, както следва:

[mysqld]
местен-infile=0

Рестартирайте услугата MySQL. Свържете се отново с MySQL и повторете предишната стъпка; вече не трябва да можете да виждате съдържанието на файла.

Ако потребителите все още нямат разрешения за четене и писане на локални файлове, те няма да могат да видят този файл. Въпреки това, това все още е нещо, което трябва да проверите в тестовете за проникване и сигурността на базата данни.

3. Задайте потребители и пароли за приложения

Потребителят за управление на базата данни и потребителят на MySQL, осъществяващ достъп до базата данни, трябва да се различават един от друг. С други думи, свързването на приложения към MySQL с root потребители е изключително опасно. Ако е възможно, дефинирайте потребителите на приложения, които не работят Операции UPDATE или INSERT отделно.

Друго нещо, което трябва да имате предвид на този етап, са потребителските пароли. Както в почти всяка област, паролите за потребителите на MySQL трябва да бъдат сложни и непредвидими. Ако имате нужда от помощ за това, има страхотни системи за генериране на пароли, които можете да използвате.

4. Изтриване на анонимни потребители

Когато инсталирате MySQL по подразбиране, се появяват някои анонимни потребители. Трябва да ги изтриете и да блокирате достъпа им. За защитен MySQL сървър не трябва да получавате отговор в резултат на следната заявка:

ИЗБЕРЕТЕ * ОТ mysql.user КЪДЕТОПОТРЕБИТЕЛ="";
# Примерен резултат
празна комплект (0,001 сек)

Ако има някакви резултати, трябва да изтриете тези анонимни потребители. Например, ако имаше анонимен акаунт с име "anonuser" в среда с име "localhost", ще трябва да използвате команда като следната, за да изтриете този акаунт:

ИЗХВЪРЛЕТЕ ПОТРЕБИТЕЛЯ 'anonuser'@'локален хост';

5. Проверете разрешенията за локални файлове на MySQL

Представете си, че сте администратор на база данни и искате да се върнете към данни от преди седмица. В този случай може да се наложи да се свържете със сървъра на базата данни чрез SSH и да промените MySQL файловете, които искате. Докато правите това, може да сте използвали привилегиите на root потребител на Linux; тоест собствеността и разрешенията на файловете с данни могат да се променят. Ти не искаш това.

Погледнете директорията /var/lib/mysql, за да проверите предоставените разрешения. Това, което трябва да проверите тук е дали собственикът на всички файлове е потребителят на MySQL. Следната команда ще свърши работа:

sudo ls -al /вар/lib/mysql

Разрешенията за четене и запис на файловете трябва да са само за потребителя на MySQL. Никой друг потребител не трябва да има никакви разрешения.

6. Използвайте MySQL SSL

Мисленето за конкретен пример е най-добрият начин да разберете използването на MySQL и SSL. Представете си, че един от сървърите в региона ABC, където има много различни сървъри, е превзет от злонамерени хакери. Хакерите ще извършат вътрешно сканиране в района на ABC. По този начин те събират информация за сървърите.

Ако открият MySQL сървър по време на този процес, те могат да извършат a Man-in-the-Middle (MitM) атака на целевия сървър, което означава, че могат да откраднат информацията за сесията на приложения и потребители, свързващи се към този сървър. Един от най-добрите начини да избегнете това е да активирайте SSL на MySQL сървъра.

7. Регистрационни файлове и файлове с история

Използвате регистрационни файлове на MySQL, за да анализирате и намирате грешки. Можете да редактирате къде се съхраняват тези регистрационни файлове, като въведете my.cnf, както следва:

# /etc/mysql/my.cnf
[mysqld]
дневник =/променлива/дневник/mylogfiles

Можете да промените името или местоположението на mylogfiles, както желаете. Има още един файл, който трябва да проверите. Когато се свържете към MySQL сървъра в Linux терминал и въведете различни команди, тези заявки се записват във файла mysql_history. Ако изпълните следната команда, можете да видите заявките, които използвате в MySQL терминала:

котка ~/.mysql_history

Трябва да изтриете съдържанието на този файл, ако не искате да давате информация за това какви заявки правите в сървъра. Използвайте следната команда, за да изтриете съдържанието на файла:

sudo ехо "изчистен"> ~/.mysql_history

След това можете отново да проверите съдържанието на файла.

Който притежава базата данни, притежава системата

Без значение в каква индустрия работите, вашата база данни винаги съдържа важна информация. Това могат да бъдат вашите клиенти, банкови сметки и пароли. Злонамерените нападатели знаят важността и стойността на тези. Разработчиците и администраторите на бази данни трябва поне да знаят основите, с които ще се сблъскат при тестовете за проникване, за да победят хакерите.