Руководство по безопасному включению удаленного доступа к MySQL в 2025 году.
В данной статье описаны безопасные методы обеспечения удаленного доступа к серверам MySQL и MariaDB.

Руководство по безопасному включению удаленного доступа к MySQL в 2025 году.

В этой статье вы узнаете о безопасных и практичных способах обеспечения удаленного доступа к серверам MySQL и MariaDB в 2025 году. Следуя рекомендациям по безопасности и используя VPN и SSH, вы сможете легко и уверенно получать доступ к своим базам данных.
0 Акции
0
0
0
0
  1. Как обеспечить безопасный удалённый доступ к MySQL/MariaDB?
  2. Общие шаги и принципы безопасности
  3. Почему MySQL не должен быть напрямую доступен из интернета?
  4. Пошаговая настройка MySQL для удаленного доступа (практические инструкции)
    1. 1) Отредактируйте конфигурационный файл.
    2. 2) Создание защищенного пользователя с ограничениями.
    3. 3) Включение SSL/TLS для MySQL
    4. 4) Использование SSH-туннеля
    5. 5) Настройки брандмауэра
  5. Дополнительная защита — передовые и рекомендуемые решения (2025)
    1. Использование частной сети, VPC и VPN.
    2. Bastion Host и Zero Trust
    3. Аутентификация и алгоритмы
    4. Защита от нападений и ограничений
    5. Мониторинг и ведение журналов
  6. Практические советы по выбору местоположения и конфигурации центра обработки данных в зависимости от области применения.
  7. Примеры конфигурации my.cnf для различных целей.
  8. Окончательный контрольный список мер безопасности перед включением удаленного доступа.
  9. Заключение и окончательные рекомендации
  10. Часто задаваемые вопросы

 

Как обеспечить безопасный удалённый доступ к MySQL/MariaDB?

В этом обновленном (2025 г.) руководстве мы рассматриваем практические и безопасные способы обеспечения удаленного доступа к серверам MySQL и MariaDB. Цель — предоставить практический контрольный список для администраторов сайтов, специалистов DevOps, команд разработчиков баз данных и разработчиков, позволяющий предоставлять доступ только авторизованным пользователям и приложениям без ущерба для безопасности.

 

Общие шаги и принципы безопасности

Краткое описание шагов:

  • Архитектурный дизайн: Никогда Не размещайте базу данных непосредственно в общедоступном интернете, если в этом нет необходимости.
  • Используйте частную сеть (VPC/VLAN), VPN или SSH-туннелирование.
  • Ограничьте доступ на основе IP-адресов и создавайте пользователей с определенными правами. Минимальный балл.
  • Шифрование TLS/SSL для трафика базы данных и использование надежной аутентификации (*caching_sha2_password* / *X.509*).
  • Включите ведение журналов и ограничение скорости запросов, используйте межсетевые экраны и системы обнаружения вторжений (IDS/IPS).
  • Проанализируйте производительность и задержку и выберите подходящее местоположение центра обработки данных в зависимости от приложения.

 

Почему MySQL не должен быть напрямую доступен из интернета?

Базы данных являются привлекательной целью для хакеров, поскольку содержат конфиденциальные данные и учетные данные. Открытие порта 3306 для доступа в интернет без ограничений или шифрования увеличивает риски утечки данных, атак методом перебора паролей и DDoS-атак.

 

Пошаговая настройка MySQL для удаленного доступа (практические инструкции)

 

1) Отредактируйте конфигурационный файл.

Общие конфигурационные файлы:

  • MySQL (Debian/Ubuntu): /etc/mysql/mysql.conf.d/mysqld.cnf
  • MariaDB: /etc/mysql/mariadb.conf.d/50-server.cnf

По умолчанию эта строка может адрес привязки К 127.0.0.1 Настройка выполнена. Для приема подключений с определенного IP-адреса или со всех адресов:

Рекомендуется: Разрешить использование определенного IP-адреса:

bind-address = 192.0.2.10

Не рекомендуется использовать, за исключением частных сетей:

bind-address = 0.0.0.0

После изменений:

systemctl restart mysql

 

2) Создание защищенного пользователя с ограничениями.

Никогда от пользователя корень Не использовать для удалённых подключений. Примеры команд:

mysql -u root -p
CREATE USER 'appuser'@'203.0.113.45' IDENTIFIED WITH caching_sha2_password BY 'StrongP@ssw0rd!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'appuser'@'203.0.113.45';
FLUSH PRIVILEGES;

Важные моменты:

  • Гораздо безопаснее использовать конкретный IP-адрес ('203.0.113.45') вместо '%'.
  • Определение Минимальные права доступа (наименьшие привилегии).
  • Для подключений из частной сети используйте частные адреса (например, 10.xxx).

 

3) Включение SSL/TLS для MySQL

Краткий пример создания центра сертификации и сертификатов с помощью OpenSSL:

openssl genrsa 4096 -out ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem -subj "/CN=MyDB-CA"

openssl genrsa 4096 -out server-key.pem
openssl req -new -key server-key.pem -out server-req.csr -subj "/CN=db.example.com"
openssl x509 -req -in server-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 3650

openssl genrsa 4096 -out client-key.pem
openssl req -new -key client-key.pem -out client-req.csr -subj "/CN=dbclient"
openssl x509 -req -in client-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 3650

Размещение сертификатов в my.cnf:

[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

После перезапуска появляется возможность требовать от пользователей использования сертификатов:

ALTER USER 'appuser'@'203.0.113.45' REQUIRE X509;
-- یا فقط TLS بدون client cert:
ALTER USER 'appuser'@'203.0.113.45' REQUIRE SSL;

Защищенное соединение со стороны клиента:

mysql -u appuser -p -h db.example.com --ssl-mode=REQUIRED --ssl-ca=ca.pem

 

4) Использование SSH-туннеля

Подходит для администраторов и пользователей с ограниченным доступом в случаях, когда TLS недоступен. На клиентском компьютере:

ssh -fN -L 3306:127.0.0.1:3306 [email protected]

Этот метод подключает вас к локальному порту 3306, который туннелируется к удаленному серверу.

 

5) Настройки брандмауэра

Пример использования ufw (разрешить только указанные IP-адреса):

ufw allow from 203.0.113.45 to any port 3306 proto tcp

С firewalld:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port protocol="tcp" port="3306" accept'
firewall-cmd --reload

Проверка порта:

ss -tlnp | grep 3306
telnet db.example.com 3306

 

Дополнительная защита — передовые и рекомендуемые решения (2025)

 

Использование частной сети, VPC и VPN.

Вместо открытия порта базы данных для доступа из интернета используйте частную сеть между приложением и базой данных. При использовании нашего сервиса вы можете использовать частную сеть и BGP/VRF для безопасного соединения.

Для распределенных пользователей рекомендуется использовать VPN или IPsec, чтобы трафик к базе данных передавался только по зашифрованным каналам.

 

Bastion Host и Zero Trust

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

 

Аутентификация и алгоритмы

  • MySQL 8: Использование caching_sha2_password Вместо mysql_native_password Это безопаснее.
  • В деликатных случаях использовать Сертификаты клиентов X.509 Рекомендовано.
  • Управление паролями с помощью менеджера секретов или хранилища (например, HashiCorp Vault, AWS Secrets Manager) лучше, чем хранение паролей в файлах или коде.

 

Защита от нападений и ограничений

  • Держите значение max_connect_errors на низком уровне. пропуск разрешения имени Включите эту опцию, чтобы избежать задержек, связанных с DNS.
  • Использование fail2ban со специальным фильтром mysql-auth для блокировки вредоносных IP-адресов.
  • Общий лимит скорости соединений и соответствующая настройка connection_timeout.

 

Мониторинг и ведение журналов

Включение журналов аудита, общих журналов и журналов медленных запросов, а также использование таких инструментов, как Prometheus + Grafana или Percona Monitoring, имеет важное значение для выявления вредоносных шаблонов и проблем с производительностью.

 

Практические советы по выбору местоположения и конфигурации центра обработки данных в зависимости от области применения.

Рекомендации в зависимости от типа приложения:

  • Торговля (Форекс/Криптовалюты): Минимальное время отклика (RTT) до сервера биржи/трейдера имеет важное значение; рекомендуется выбирать местоположение, близкое к бирже. Наш сервис предоставляет такую возможность благодаря более чем 85 точкам продаж.
  • Игры: Для игровых баз данных требуется низкий пинг; оптимизированная маршрутизация BGP и сеть с низкой задержкой имеют важное значение. Полезными являются игровые VPS-серверы и серверы защиты от DDoS-атак.
  • Искусственный интеллект/Рендеринг: При высоких нагрузках на ввод-вывод и вычисления объединение серверов GPU и баз данных в одной частной сетевой зоне позволяет снизить задержку.
  • Веб-сайты и приложения: Использование CDN и кэша на уровне приложений (Redis/Memcached) вместе с базой данных в частной сети обеспечивает наилучший баланс скорости и стоимости.

 

Примеры конфигурации my.cnf для различных целей.

Конфигурация для сервера со средней нагрузкой (веб/приложение):

[mysqld]
bind-address = 10.0.1.5
max_connections = 200
innodb_buffer_pool_size = 2G
skip-name-resolve = 1
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Для высоконагруженных выделенных серверов для ИИ/рендеринга:

innodb_buffer_pool_size = 16G
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000

Всегда регулируйте параметры в зависимости от потребностей оперативной памяти, ввода-вывода и приложений.

 

Окончательный контрольный список мер безопасности перед включением удаленного доступа.

  • Использование частной сети или VPN для передачи данных в базу данных.
  • Ограничение разрешенных IP-адресов в межсетевом экране.
  • Создавайте пользователей с минимальными привилегиями и используйте безопасные алгоритмы хеширования.
  • Включите TLS/SSL и, при необходимости, клиентские сертификаты.
  • Для удалённых подключений не используется root-права.
  • Включить ведение журналов; отправлять журналы во внешнюю систему.
  • Установка лимитов на количество подключений и использование fail2ban
  • Мониторинг и оповещение в случае необычного увеличения трафика или ошибок.
  • Регулярное резервное копирование и тестирование восстановления.

 

Заключение и окончательные рекомендации

В 2025 году удаленный доступ к MySQL должен быть быстрым и безопасным. Оптимальный подход: сначала рассмотрите возможность использования частной сети или VPN, затем добавьте TLS и ограничения по IP-адресу, а также ограничьте доступ до минимума.

Использование Bastion Host, многофакторной аутентификации и расширенного логирования повысит вашу безопасность. Если вам нужен высокостабильный сервер, сеть с низкой задержкой и функциями безопасности, наши услуги включают более 85 локаций по всему миру, серверы с графическими процессорами, вычислительные серверы, серверы с защитой от DDoS-атак, VPS для торговли и игр, CDN и сети BGP, предлагая как готовые, так и настраиваемые варианты.

 

Часто задаваемые вопросы

Вам также может понравиться

Как импортировать и экспортировать базы данных в MySQL или MariaDB

Введение: Импорт и экспорт баз данных — распространённая задача при разработке программного обеспечения. Вы можете использовать данные дампа…