Spec-Zone .ru
спецификации, руководства, описания, API
|
Когда Вы соединяетесь с сервером MySQL, следует использовать пароль. Пароль не передается в открытом тексте по соединению. Обработка пароля во время клиентской последовательности соединения была обновлена в MySQL 4.1.1, чтобы быть очень безопасной. Если Вы все еще используете pre-4.1.1-style пароли, алгоритм шифрования не как strong как более новый алгоритм. С некоторым усилием умный атакующий, который может вдохнуть трафик между клиентом и сервером, может взломать пароль. (См. Раздел 6.1.2.4, "Пароль, Хеширующий в MySQL", для обсуждения различных методов обработки пароля.)
Вся другая информация передается как текст, и может быть считана любым, кто в состоянии наблюдать соединение.
Если соединение между клиентом и сервером проходит через ненадежную сеть, и Вы обеспокоены этим, можно
использовать сжатый протокол, чтобы сделать трафик намного более трудным дешифровать. Можно также использовать
внутреннюю поддержку SSL MySQL, чтобы сделать соединение еще более безопасным. См. Раздел
6.3.9, "Используя SSL для Безопасных Соединений". Альтернативно, используйте SSH, чтобы
получить зашифрованное соединение TCP/IP между сервером MySQL и клиентом MySQL. Можно найти клиент SSH С
открытым исходным кодом в
Чтобы сделать систему MySQL безопасной, следует строго рассмотреть следующие предложения:
Потребуйте, чтобы у всех учетных записей MySQL был пароль. Клиентская программа не
обязательно знает идентификационные данные человека, выполняющего это. Для клиент-серверных приложений
распространено, что пользователь может определить любое имя пользователя к клиентской программе.
Например, любой может использовать mysql программу, чтобы соединиться как любой другой
человек просто, вызывая это как mysql -u
если other_user
db_name
other_user
не имеет никакого пароля. Если у всех учетных записей есть пароль, соединяясь использующий учетную
запись другого пользователя становится намного более трудным.
Для обсуждения методов для того, чтобы установить пароли, см. Раздел 6.3.5, "Присваивая Пароли Учетной записи".
Удостоверьтесь, что единственная учетная запись пользователя Unix с чтением или полномочиями записи в каталогах базы данных является учетной записью, которая используется для того, чтобы выполнить mysqld.
Никогда не выполняйте сервер MySQL как Unix root
пользователь. Это чрезвычайно опасно, потому что любой пользователь с FILE
полномочие в состоянии заставить сервер создавать файлы как
root
(например, ~root/.bashrc
). Чтобы
предотвратить это, mysqld отказывается работать как root
если это не определяется, явно используя --user=root
опция.
mysqld может (и если) быть выполненным как обычный,
непривилегированный пользователь вместо этого. Можно создать отдельную названную учетную запись Unix
mysql
сделать все еще более безопасным. Используйте эту учетную запись
только за администрирование MySQL. Чтобы запустить mysqld как различного пользователя Unix,
добавьте a user
опция, которая определяет имя пользователя в [mysqld]
группа my.cnf
файл опции, где
Вы определяете параметры сервера. Например:
[mysqld]user=mysql
Это заставляет сервер запускаться как назначенный пользователь, начинаете ли Вы это вручную или при использовании mysqld_safe или mysql.server. Для получения дополнительной информации см. Раздел 6.1.5, "Как к MySQL Run как Нормальный Пользователь".
Выполнение mysqld
как пользователь Unix кроме root
не означает, что Вы должны измениться
root
имя пользователя в user
таблица.
Имена пользователей для учетных записей MySQL не имеют никакого отношения
к именам пользователей для учетных записей Unix.
Не предоставляйте FILE
полномочие неадминистративным пользователям. Любой пользователь, у
которого есть это полномочие, может записать файл где угодно в файловой системе с полномочиями mysqld демона. Это включает каталог данных сервера,
содержащий файлы, которые реализуют таблицы полномочия. Сделать FILE
- немного более безопасные операции полномочия, файлы,
сгенерированные с SELECT ... INTO
OUTFILE
не перезаписывайте существующие файлы, и перезаписываемы всеми.
FILE
полномочие может
также использоваться, чтобы считать любой файл, который читаем миром или доступен для пользователя
Unix, которого сервер выполняет как. С этим полномочием можно считать любой файл в таблицу базы
данных. Этим можно было злоупотребить, например, при использовании LOAD DATA
загружаться /etc/passwd
в
таблицу, которая тогда может быть выведена на экран с SELECT
.
Ограничить расположение, в котором файлы могут быть считаны и записаны, установлены secure_file_priv
система к определенному каталогу. См. Раздел 5.1.4, "Системные Переменные
Сервера".
Не предоставляйте PROCESS
или SUPER
полномочие неадминистративным пользователям. Вывод mysqladmin processlist и SHOW PROCESSLIST
показывает текст любых операторов, в настоящий момент
выполняемых, таким образом, любой пользователь, которому разрешают видеть список серверного процесса,
мог бы быть в состоянии видеть заявления, сделанные другими пользователями такой как UPDATE user SET password=PASSWORD('not_secure')
.
mysqld резервирует дополнительное соединение для
пользователей, которые имеют SUPER
полномочие, так, чтобы MySQL root
пользователь может войти в систему и
проверить действие сервера, даже если используются все нормальные соединения.
SUPER
полномочие
может использоваться, чтобы завершить клиентские соединения, работу сервера изменения, изменяя
значение системных переменных, и управлять серверами репликации.
Не разрешайте использование символьных ссылок на таблицы. (Эта возможность может
быть отключена с --skip-symbolic-links
опция.) Это особенно важно, если Вы выполняете
mysqld как root
, потому
что любой, у которого есть доступ для записи к каталогу данных сервера тогда, мог удалить любой файл в
системе! См. Раздел 8.11.3.1.2,
"Используя Символьные ссылки для MyISAM
Таблицы на Unix".
Сохраненные программы и представления должны быть записаны, используя направляющие линии безопасности, обсужденные в Разделе 19.6, "Управление доступом для Сохраненных Программ и Представления".
Если Вы не доверяете своему DNS, следует использовать IP-адреса, а не имена хоста в таблицах предоставления. В любом случае следует быть очень осторожными относительно создавания записей таблицы предоставления, используя стоимость имени хоста, которая содержит подстановочные знаки.
Если Вы хотите ограничить число соединений, разрешенных к единственной учетной
записи, можно сделать так, устанавливая max_user_connections
переменная в mysqld. GRANT
оператор также поддерживает опции управления ресурсами для
того, чтобы ограничить степень использования сервера, разрешенного к учетной записи. См. Раздел
13.7.1.4,"GRANT
Синтаксис".
Если сменный каталог перезаписываем сервером, для пользователя может быть возможно
записать исполняемый код в файл в использовании каталога SELECT ... INTO DUMPFILE
. Это может быть предотвращено, делая plugin_dir
только для чтения к серверу или устанавливая --secure-file-priv
к каталогу, где SELECT
записи могут быть сделаны безопасно.