Mysql 4

4.2.2. Як убезпечити MySQL від хакерів

При підключенні до сервера MySQL використовується, як правило, пароль. По лінії зв'язку пароль не передається у вигляді відкритого тексту, але алгоритм шифрування не дуже складний. Тлумачний хакер, якщо йому вдасться перехопити трафік між клієнтом і сервером, при певній наполегливості може зламати пароль. Тому якщо зв'язок між клієнтом і сервером здійснюється по ненадійною мережі, для шифрування зв'язку слід використовувати SSH-тунель.

Якщо ви використовуєте MySQL 4.0, то можете також використовувати передбачену в цій версії підтримку протоколу OpenSSL. Зверніться до розділу See Розділ 4.3.9, «Використання безпечних з'єднань».

Для забезпечення безпеки MySQL-системи необхідно строго дотримуватися наступних рекомендацій:

У всіх користувачів MySQL повинні бути паролі. Для додатків клієнт / сервер є загальноприйнятим, що клієнт може вказувати будь-яке ім'я користувача, але якщо для other_user не заданий пароль, то будь-хто може зайти під будь-яким ім'ям, просто ввівши mysql -u other_user db_name. Щоб цього уникнути, можна змінити пароль для всіх користувачів, відредагувавши скрипт mysql_install_db перед запуском програми, або тільки пароль для root-користувачів MySQL, як це показано нижче:

Не заводьте демон MySQL від імені користувача Unix root. Це дуже небезпечно, тому що будь-який користувач, який має привілей FILE. буде в змозі створювати файли як користувач root (наприклад

В результаті сервер буде запущений від імені призначеного користувача, незалежно від того, здійснюється запуск вручну або за допомогою safe_mysqld або mysql.server. Для отримання додаткової інформації зверніться до розділу See Розділ A.3.2, «Запуск MySQL від звичайного користувача».

Відмовтеся від підтримки символічних посилань на таблиці (її можна заборонити за допомогою опції --skip-symlink). Це особливо важливо в тому випадку, якщо ви запускаєте mysqld від імені користувача root. оскільки у того, хто має право доступу для запису в каталоги даних mysqld. з'являється можливість стерти будь-який файл в системі! Зверніться до розділу See Розділ 5.6.1.2, «Використання символічних посилань для таблиць».

Переконайтеся, що користувач Unix, від імені якого запускається mysqld, є єдиним користувачем, що має привілеї читання / запису в директорії бази даних.

Чи не надавайте привілеї PROCESS всім користувачам. Команда mysqladmin processlist виводить текст запитів, що обробляються в даний момент. Отже, будь-який користувач, який має право на виконання цієї команди, отримує можливість прочитати, наприклад, такий запит іншого користувача, як UPDATE user SET password = PASSWORD ( 'not_secure'). mysqld резервує додатковий підключення для користувачів, що мають привілей PROCESS. так що користувач MySQL під ім'ям root може підключитися і здійснювати контроль навіть в тому випадку, коли всі звичайні підключення зайняті.

Чи не надавайте привілеї FILE всім користувачам. Будь-який користувач, який має такий привілей, може записати в будь-якому місці файлової системи файл з привілеями демона mysqld. Щоб забезпечити тут хоч мінімальний захист, всі файли створюються за допомогою команди SELECT. INTO OUTFILE. зроблені загальнодоступними для запису, але перезаписати існуючі файли можна.

Привілей FILE може бути також використана для читання будь-якого файлу, доступного користувачу Unix, від імені якого запускається сервер.

Можна також прочитати будь-який файл в поточну базу даних. Це може бути використано в корисливих цілях. Можливо, наприклад, за допомогою команди LOAD DATA завантажити / etc / passwd в таблицю і прочитати її пізніше за допомогою SELECT.

Щоб обмежити число підключень, доступних для окремого користувача, можна в mysqld задати значення змінної max_user_connections.

Схожі статті