- •Некоторые термины
- •Пользователи субд
- •Дискреционная защита
- •Мандатная защита
- •1. Введение
- •1.1 Функциональные возможности
- •1.2 Необходимые условия для защиты
- •2. Установка MySql
- •2.1 Компиляция mysql
- •2.2 Копирование файлов конфигурации
- •2.3 Запуск сервера
- •2.4 Проверка подключений
- •3. Chrooting сервер
- •3.1 Операционная система
- •3.2 Подготовка chroot среды
- •3.4 Создание структуры каталогов
- •3.5 Сжатие паролей и групп
- •3.6 Специальные соображения
- •3.8 Проверка конфигурации
- •4. Конфигурирование сервера
- •4.1 Отключение удаленного доступа
- •4.2 Улучшение локальной защиты
- •4.3 Изменение пароля администратора
- •4.4 Удаление значений по умолчанию users/db
- •4.6 Удаление файлов истории команд
- •5. Связь между php и mysql
- •6. Финальные шаги
- •6.1 Заключение
- •Реализация системы защиты в ms sql Server
- •Проверка полномочий
1. Введение
MySQL является одной из наиболее популярных баз данных в Internet, и часто используется вместе с PHP. Помимо её бесспорных преимуществ, таких как простота использования и относительно высокая эффективность, MySQL предлагает простые, но в то же время очень эффективные механизмы защиты. К сожалению, заданная по умолчанию инсталляция MySQL, а в особенности пустой пароль по умолчанию и потенциальная уязвимость к атакам переполнения буфера, делают базу данных MySQL простым объектом для нападений.
Эта статья описывает основные шаги, выполнение которых, максимально защитит базу данных MySQL от локальных и удаленных нападений.
1.1 Функциональные возможности
В этой статье мы предполагаем, что Web-сервер Apacheвместе с PHP модулем, был установлен в соответствии с требованиями предыдущих статей, и помещен в каталог /chroot/httpd.
Кроме этого мы также принимаем следующее:
База данных MySQL будет использоваться только PHP приложениями, установленными на том же самом хосте;
Для управления базой данных будут использоваться стандартные административные средства, типа mysqladmin, mysql, mysqldumpи т.д.;
Для удаленного резервирования MySQL данных будет использоваться SSH протокол.
1.2 Необходимые условия для защиты
Чтобы достигнуть самого высокого возможного уровня защиты, установка и конфигурация mysql должна быть выполнена в соответствии со следующими требованиями:
база данных mysql должна быть выполнена в chrooted среде;
процессы mysql должны выполняться под уникальным UID/GID, неиспользуемым никаким другим системным процессом;
Должен быть разрешен только локальный доступ к mysql;
Основная учетная запись mysql должна быть защищена “сложным” паролем;
Будет переименована учетная запись администратора;
Должен быть заблокирован анонимный доступ к базе данных (используя учетную запись nobody);
Должны быть удалены все типовые базы данных и таблицы.
2. Установка MySql
Прежде чем начать осуществление защиты MySQL, мы должны установить программное обеспечение на сервере. Как мы писали в предыдущих статьях, мы запустим инсталляцию, создав уникальную, постоянную группу и учетную запись пользователя на операционной системе, которая будет посвящена базе данных MySQL:
pw groupadd mysql
pw useradd mysql-c " mysql Сервер"-d/dev/null-g mysql-s/sbin/nologin
2.1 Компиляция mysql
Мы скомпилируем и установим mysql в каталог /usr/local/mysql:
./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-ldflags=-all-static make su make install strip /usr/local/mysql/libexec/mysqld scripts/mysql_install_db chown -R root /usr/local/mysql chown -R mysql /usr/local/mysql/var chgrp -R mysql /usr/local/mysql
Приведенный процесс установки сервера практически идентичен описанному в руководстве к mysql. Единственным отличием является использование нескольких дополнительных параметров, указанных в строке: ./configure. Наиболее важным отличием является использование параметра -- with-mysqld-ldflags =-all-static, который делает MySQL сервер статически связанным. Это значительно упрощает процесс chrooting сервера, как описано в Разделе 3. Остальные параметры приказывают make программе установить программное обеспечение в каталог /usr/local/mysql, выполнить MySQL демон с привилегиями учетной записи mysql, и создать сокет mysql.sock в каталоге /tmp.
