Библиотека - 1 Введение
Вход Регистрация
1. Введение
MySQL является одной из наиболее популярных баз данных в Internet, и часто используется вместе с PHP. Помимо её бесспорных преимуществ, таких как простота использования и относительно высокая эффективность, MySQL предлагает простые, но в то же время очень эффективные механизмы защиты. К сожалению, заданная по умолчанию инсталляция MySQL, а в особенности пустой пароль по умолчанию и потенциальная уязвимость к атакам переполнения буфера, делают базу данных MySQL простым объектом для нападений.
Эта статья описывает основные шаги, выполнение которых, максимально защитит базу данных MySQL от локальных и удаленных нападений. Это третья и последняя статья из цикла статей, посвященных защите Apache, PHP и 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.
2.2 Копирование файлов конфигурации
После выполнения вышеупомянутых команд, мы должны скопировать заданный по умолчанию файл конфигурации в соответствии с ожидаемым размером базы данных (маленькая, средняя, большая, огромная). Например:
cp support-files/my-medium.cnf /etc/my.cnf
chown root:sys /etc/my.cnf
chmod 644 /etc/my.cnf
2.3 Запуск сервера
Теперь mysql полностью установлен и готов к выполнению. Мы можем запустить mysql сервер, выполнив следующую команду:
/usr/local/mysql/bin/mysqld_safe
2.4 Проверка подключений
Попробуйте установить связь с базой данных следующим образом:
/usr/local/mysql/bin/mysql -u root mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.13-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
|
Стр.: 1 2 3 4
На главную
Поиск по сайту
Пользователи: 48
На сайте: 0 | 10
соглашение|о сайте|