MySQL - рекомендации по безопасности | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

MySQL — рекомендации по безопасности

Любой, кто использует MySQL на компьютере, подключенном к Интернету, должен прочитать эту (или аналогичную) статью, чтобы избежать наиболее распространенных ошибок безопасности.

Обсуждая безопасность, необходимо иметь в виду полную защиту всего хост-сервера (не только сервера MySQL) от всех типов применимых атак: подслушивания, модификации, воспроизведения, отказа в обслуживании …

MySQL использует списки управления доступом на основе безопасности (списки контроля доступа, ACL) для всех подключений, запросов и других операций, которые могут выполнять пользователи.

MySQL также может поддерживать зашифрованные SSL-соединения между клиентами и серверами MySQL. Многие концепции, представленные в статье, относятся не только к MySQL — одни и те же общие идеи применимы практически ко всем приложениям.

Рекомендации по повышению безопасности MySQL

Очень важно, чтобы вы никогда не предоставляли (за исключением учетной записи root MySQL) доступ к таблице пользователей в базе данных службы mysql.

Привилегии

Узнайте, как работает система привилегий доступа (APS).

Основная функция MySQL APS — аутентифицировать пользователя, который подключается с хоста, и связать этого пользователя с такими привилегиями базы данных, как SELECT, INSERT, UPDATE и DELETE.

Используйте команды GRANT и REVOKE для управления доступом к MySQL. Не предоставляйте привилегий больше, чем необходимо. Никогда не давайте привилегии всем хостам.

Выполните команду:

mysql -u корень

Если вы можете успешно подключиться к серверу без запроса пароля, это означает, что любой может подключиться к серверу MySQL как пользователь root с полными привилегиями.

Ознакомьтесь с инструкциями по установке MySQL, уделив особое внимание информации по созданию пароля root.

Используйте команду SHOW GRANTS, чтобы проверить, какие учетные записи имеют какие права доступа. Затем используйте инструмент REVOKE, чтобы удалить те привилегии, которые не нужны.

mysqlgt; шоу-гранты; Гранты для cliuser @ localhost ПРЕДОСТАВЛЕНИЕ ИСПОЛЬЗОВАНИЯ *. * TO 'клиент'@'localhost' ИДЕНТИФИЦИРОВАНО ПАРОЛЕМ lt; secretgt; ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА `clidata`. * ДЛЯ 'клиент'@'localhost' С ОПЦИЕЙ ГРАНТА 2 ряда в наборе (0,00 сек)

С помощью команды REVOKE мы удаляем привилегию INSERT:

mysqlgt; ОТЗЫВАТЬ ВСТАВКУ НА `clidata`. * ОТ 'клиент'@'localhost'; Запрос выполнен, затронуты 0 строк (0,00 сек)

Мы снова проверяем привилегии, и теперь вместо ВСЕХ ПРИВИЛЕГИЙ MySQL перечисляет все другие привилегии пользователя:

mysqlgt; шоу-гранты; Гранты для cliuser @ localhost ПРЕДОСТАВЛЕНИЕ ИСПОЛЬЗОВАНИЯ *. * TO 'клиент'@'localhost' ИДЕНТИФИЦИРОВАНО ПАРОЛЕМ lt; secretgt; GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON ` 'клиент'@'localhost' С ОПЦИЕЙ ГРАНТА 2 ряда в наборе (0,00 сек)

Пароли

Не храните пароли в читаемом текстовом формате в базе данных. Если ваш компьютер взломан, хакер может взять полный список паролей и использовать их по своему усмотрению. Вместо этого используйте SHA2 () или другую функцию одностороннего хеширования и сохраните хеш-значение.

Чтобы предотвратить восстановление пароля из радужных таблиц, не используйте эти функции с простым паролем. Вместо этого выберите выражение для использования в качестве соли и создайте хэш для обоих значений (пароль + соль).

Радужные таблицы — это огромные наборы предварительно скомбинированных таблиц с хеш-значениями, которые предварительно сопоставлены с возможными паролями в виде обычного текста.

Не выбирайте пароли из словарей. Существуют специальные программы для взлома паролей. Даже пароли типа fish98 очень слабые. Намного лучше duag98, который содержит то же слово «рыба», но написано на одну клавишу слева от стандартной QWERTY-клавиатуры.

Другой метод — использовать пароль, который берется из первых символов каждого слова в случайном предложении (например, Four score и семь лет назад приводит к паролю для Fsasya). Пароль легко запомнить и написать, но его трудно угадать тем, кто не знает предложения. В этом случае вы можете дополнительно заменить слова в предложении числами, чтобы получить фразу 4 балла и 7 лет назад и по тому же алгоритму получить пароль 4sa7ya, который еще сложнее угадать.

Интернет

Купите брандмауэр. Это защитит вас как минимум от 50% всех типов вирусов в любом программном обеспечении. Разместите MySQL за брандмауэром или в DMZ (демилитаризованная зона — нет доступа в Интернет).

Попробуйте просканировать свои порты из Интернета с помощью такого инструмента, как nmap. MySQL по умолчанию использует порт 3306. Этот порт не должен быть доступен для внешних ненадежных хостов.

В качестве простого способа проверить, открыт ли ваш порт MySQL, попробуйте следующую команду с удаленного устройства, где server_host — это имя хоста или IP-адрес хоста, на котором работает сервер MySQL:

shellgt; telnet server_host 3306

Если telnet блокируется (зависает) или соединение запрещается, это означает, что порт заблокирован, как и должно быть. Если соединение установлено и появляются дополнительные нечитаемые символы, порт открыт и должен быть закрыт на вашем брандмауэре или маршрутизаторе, за исключением случаев, когда у вас действительно есть веская причина держать его открытым.

Приложения, которые имеют доступ к MySQL, не должны доверять вводимым пользователем данным и должны быть написаны с использованием соответствующих методов безопасного программирования.

Шифрование информации

Не передавайте данные в текстовом формате (в незашифрованном виде) через Интернет. Эта информация доступна любому, у кого есть время и возможность перехватить ее и использовать в своих целях.

Вместо этого используйте зашифрованный протокол, например SSL или SSH. MySQL поддерживает внутренние SSL-соединения. Другой метод — использовать переадресацию портов SSH для создания зашифрованного (и сжатого) туннеля связи.

Узнайте, как использовать утилиты tcpdump и strings. В большинстве случаев вы можете убедиться, что потоки данных MySQL не зашифрованы, введя следующую команду:

shellgt; tcpdump -l -i eth0 -w — src или dst порт 3306 | струны

Команда работает в Linux, для работы в других операционных системах могут потребоваться незначительные изменения.

Предупреждение: если вы не видите четко читаемых данных, это не всегда означает, что информация действительно зашифрована. Если вам нужен высокий уровень безопасности, проконсультируйтесь со специалистом по безопасности.

Ссылка: dev.mysql.com

Читайте так же:
Not found

Нам доверяют

Интернет магазин