0Pricing
Linux Server Deployment & SSH Mastery · Урок

Защищённые подключения к базе данных

Настройте защищённые подключения к базе данных с использованием SSL/TLS и ограничьте доступ по IP-адресам для повышения безопасности.

«Защищённые подключения к базе данных» — бесплатный урок Linux Server Deployment & SSH Mastery на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Server Deployment & SSH Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

Зачем защищать подключения к базе данных

Когда приложения подключаются к базе данных, конфиденциальные данные часто передаются по сети. Без надлежащей защиты эти данные могут быть перехвачены или изменены.

  • Конфиденциальность: предотвращает несанкционированный просмотр данных.
  • Целостность: гарантирует, что данные не будут изменены во время передачи.
  • Аутентификация: подтверждает личность клиента и сервера.

В этом уроке рассматриваются два ключевых метода: шифрование SSL/TLS и ограничения доступа на основе IP.

SSL/TLS для баз данных

SSL/TLS (Secure Sockets Layer/Transport Layer Security) — стандартная технология для создания зашифрованного соединения между веб-сервером и клиентом, а в нашем случае — между сервером базы данных и клиентом.

  • Она шифрует все передаваемые данные и защищает их от перехвата.
  • Она использует цифровые сертификаты для проверки подлинности сервера и, при необходимости, клиента.
  • Она необходима для защиты таких данных, как пароли, финансовые сведения и персональная информация, во время передачи.

Создание сертификатов SSL/TLS

Для использования SSL/TLS серверу базы данных нужны цифровой сертификат и закрытый ключ. Они подтверждают подлинность сервера.

  • Самоподписанные сертификаты: их проще всего создавать для тестирования или внутренних сетей, но по умолчанию им не доверяют.
  • Сертификаты, подписанные CA: выдаются центром сертификации (CA) и признаются доверенными во всём мире; это идеальный вариант для рабочей среды.

В этом уроке будем считать, что у вас уже есть сертификат сервера (server.crt) и закрытый ключ (server.key).

PostgreSQL: включение SSL

Чтобы включить SSL в PostgreSQL, необходимо отредактировать файл postgresql.conf. Он указывает серверу принимать защищённые подключения и задаёт расположение сертификатов.

Основные параметры:

  • ssl = on: включает SSL.
  • ssl_cert_file: путь к сертификату сервера.
  • ssl_key_file: путь к закрытому ключу сервера.

После внесения изменений перезапустите PostgreSQL.

# Snippet from postgresql.conf

ssl = on
ssl_cert_file = '/etc/ssl/certs/postgresql/server.crt'
ssl_key_file = '/etc/ssl/private/postgresql/server.key'
ssl_crl_file = '' # Optional: Certificate Revocation List

# Remember to restart PostgreSQL after changes!

MySQL: включение SSL/TLS

Для MySQL настройте SSL/TLS в файле my.cnf (или my.ini в Windows), обычно в разделе [mysqld].

Укажите пути к сертификату сервера, закрытому ключу и, при необходимости, сертификату центра сертификации (CA), если он используется для проверки сертификатов клиентов.

После внесения изменений перезапустите службу MySQL, чтобы они вступили в силу.

# Snippet from my.cnf

[mysqld]
ssl_ca = /etc/mysql/certs/ca.pem
ssl_cert = /etc/mysql/certs/server-cert.pem
ssl_key = /etc/mysql/certs/server-key.pem

# Restart MySQL after changes!

Подключение клиента с использованием SSL/TLS

После настройки сервера клиентам нужно указать, что при подключении следует использовать SSL/TLS. Обычно для этого задают параметры SSL в строке подключения или команде.

Вот пример с использованием клиента psql для PostgreSQL, в котором режим SSL требуется явно:

  • sslmode=require: принудительно устанавливает SSL-подключение.
  • sslrootcert: путь к сертификату CA для проверки сервера.
psql "host=your_db_host user=your_user dbname=your_db \
  sslmode=require sslrootcert=/path/to/ca.crt"

Ограничение доступа по IP-адресу

Помимо шифрования, ограничение доступа по IP-адресу клиента — важная мера безопасности. Это гарантирует, что даже попытаться подключиться к базе данных смогут только доверенные компьютеры.

Настроить это можно:

  • На уровне сервера базы данных (например, с помощью pg_hba.conf в PostgreSQL или операторов GRANT в MySQL).
  • С помощью межсетевого экрана (например, UFW или firewalld), блокируя трафик к порту базы данных от неавторизованных IP-адресов.

Совместное использование обоих методов обеспечивает многоуровневую защиту.

PostgreSQL: ограничение IP-адресов с помощью pg_hba.conf

PostgreSQL использует файл pg_hba.conf для аутентификации на основе узла. В каждой строке указываются типы подключений, базы данных, пользователи и разрешённые IP-адреса.

Распространённые поля:

  • TYPE: host (TCP/IP), local (сокет Unix).
  • DATABASE: all, имя конкретной базы данных.
  • USER: all, имя конкретного пользователя.
  • ADDRESS: диапазон IP-адресов (например, 192.168.1.0/24) или отдельный IP-адрес.
  • METHOD: scram-sha-256, md5, peer и другие.

Не забудьте перезапустить PostgreSQL после редактирования.

# Snippet from pg_hba.conf

# Allow connections from localhost for all users/databases
host    all             all             127.0.0.1/32            scram-sha-256

# Allow 'app_user' from specific IP range to 'app_db'
host    app_db          app_user        192.168.1.0/24          scram-sha-256

# Deny all other connections (implicit if no other rules match)

MySQL: ограничение IP-адресов с помощью GRANT

В MySQL доступ пользователя ограничивают, указывая узел, с которого ему разрешено подключаться, при создании или изменении пользователя с помощью оператора GRANT.

Ключевое значение имеет синтаксис 'user'@'host':

  • 'localhost': только с самого сервера.
  • '192.168.1.100': только с указанного IP-адреса.
  • '%': с любого узла (используйте с особой осторожностью!).
  • '192.168.1.%': с любого IP-адреса в диапазоне 192.168.1.x.

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

CREATE USER 'app_user'@'192.168.1.10' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'192.168.1.10';
FLUSH PRIVILEGES;

Рекомендации по обеспечению безопасности

Защита подключений к базам данных — непрерывный процесс. Вот несколько рекомендаций:

  • Минимальные привилегии: предоставляйте пользователям и приложениям только необходимые разрешения.
  • Надёжные пароли: требуйте сложные пароли и регулярно меняйте их.
  • Правила межсетевого экрана: используйте межсетевой экран сервера (UFW/firewalld), чтобы разрешить доступ к портам баз данных (например, 5432 для PostgreSQL и 3306 для MySQL) только доверенным IP-адресам.
  • Регулярные проверки: периодически просматривайте журналы базы данных и настройки доступа.
  • Своевременное обновление программного обеспечения: оперативно устанавливайте исправления безопасности для сервера базы данных и операционной системы.

Проверьте свои знания

Какие из перечисленных способов действительно повышают безопасность подключений к базам данных?

Итоги: защитите свои данные

В этом уроке мы рассмотрели важные способы защиты подключений к базам данных:

  • SSL/TLS: шифрует данные при передаче, обеспечивая конфиденциальность и целостность. Мы узнали, как включить его в PostgreSQL и MySQL, а также как клиенты подключаются безопасно.
  • Ограничения по IP-адресам: ограничивают круг тех, кто может подключаться к базе данных, с помощью pg_hba.conf в PostgreSQL и операторов GRANT в MySQL.
  • Рекомендации: мы также рассмотрели общие советы по безопасности, например использование надёжных паролей и регулярные проверки.

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

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

Урок «Защищённые подключения к базе данных» бесплатный?

Да — полный текст урока «Защищённые подключения к базе данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Server Deployment & SSH Mastery, подпишись на CoddyKit PRO. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

Чему я научусь в уроке «Защищённые подключения к базе данных»?

Настройте защищённые подключения к базе данных с использованием SSL/TLS и ограничьте доступ по IP-адресам для повышения безопасности. Ты практикуешь Linux Server Deployment & SSH Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Linux Server Deployment & SSH Mastery?

Предыдущий опыт не требуется. Linux Server Deployment & SSH Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Защищённые подключения к базе данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Linux Server Deployment & SSH Mastery?

Да. Каждый урок Linux Server Deployment & SSH Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Установка PostgreSQL/MySQL
  2. Пользователи базы данных и управление доступом
  3. Защищённые подключения к базе данных
  4. Стратегии резервного копирования и восстановления баз данных
← Назад к Linux Server Deployment & SSH Mastery