- •Некоторые термины
- •Пользователи субд
- •Дискреционная защита
- •Мандатная защита
- •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
- •Проверка полномочий
3.6 Специальные соображения
Как и в случае с Web-сервером Apache, мы должны создать специальный файл устройства /dev/null:
ls -al /dev/null
crw-rw-rw- 1 root sys 2, 2 Jun 21 18:31 /dev/null
mknod /chroot/mysql/dev/null c 2 2
chown root:sys /chroot/mysql/dev/null
chmod 666 /chroot/mysql/dev/null
Теперь необходимо скопировать базу данных mysql, которая содержит таблицы, созданные в процессе инсталляции mysql:
cp-R/usr/local/mysql/var//chroot/mysql/usr/local/mysql/var
chown-R mysql:mysql/chroot/mysql/usr/local/mysql/var
3.7 Локализация
Если будет использоваться какой-либо язык кроме английского, то необходимо будет скопировать нужный набор символов из каталога /usr/local/mysql/share/mysql/charsets.
3.8 Проверка конфигурации
Теперь MySQL готов к запуску в chrooted среде. Мы можем проверить, правильно ли запускается MySql, выполнив следующую команду:
chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
Если произойдет какая-либо ошибка, то необходимо будет использовать команду truss или подобную ей, типа ktrace/kdump, strace, и т.д. Это поможет нам определить и устранить причину проблемы.
Заметьте, что для выполнения процесса mysqld, вместо chroot, как в случае Apache или PHP, использовалась программа chrootuid. Главное отличие состоит в том, что chrootuid меняет владельца запущенного процесса. В нашем примере, mysqld выполняется в chrooted среде, но владелец процесса - не root, а пользователь mysql. Chrootuidво многих операционных системах не установлен по умолчанию, поэтому необходимо загрузить и установить эту программу вручную. Программа Chrootuidможет быть загружена здесь .
4. Конфигурирование сервера
Следующий шаг должен сконфигурировать сервер базы данных в соответствии с нашими требованиями по защите.
В случае заданной по умолчанию инсталляции mysql, главным файлом конфигурации является /etc/my.cnf. Однако, в нашем случае, из-за выполнения сервера в chrooted среде, мы будем использовать два файла конфигурации: /chroot/mysql/etc/my.cnfи /etc/my.cnf. Первый будет использоваться сервером mysql, а второй - утилитами mysql (например: mysqladmin, mysql, mysqldump и т.д.). В обоих случаях, потребуются некоторые изменения конфигурации.
4.1 Отключение удаленного доступа
Первое изменение касается порта 3306/tcp, который mysqlпрослушивает по умолчанию. Поскольку, согласно начальным предположениям по защите, база данных будет использоваться только локально установленными PHP приложениями, мы можем свободно отключить прослушивание этого порта. Это ограничит возможность нападения на базу данных mysql прямыми TCP/IP подключениями с других хостов. Чтобы отключить прослушивание упомянутого порта, необходимо к разделу [mysqld] файла /chroot/mysql/etc/my.cnf добавить следующий параметр:
skip-networking
Если, по некоторым причинам, все же требуется удаленный доступ к базе данных (например, чтобы выполнить удаленное резервирование данных), то можно использовать SSH протокол, как показано ниже:
backuphost$ ssh mysqlserver /usr/local/mysql/bin/mysqldump -A > backup
