Иллюстрированный самоучитель по PostgreSQL

Аутентификация и шифрование

Шифрование сеанса

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

В то же время шифрование обмена данными стало вполне обыденным явлением. На всех солидных коммерческих сайтах пересылка конфиденциальных данных (номера кредитной карты, домашнего адреса) защищается при помощи протокола SLL (Secure Sockets Layer).

Самый распространенный тип компьютерных преступлений вообще не связан со "взломом". Многие беспечные пользователи доверяют пересылку информации по Интернету таким протоколам, как POP и FTP. При этом пользователь может непреднамеренно передать свое имя и пароль в текстовом (не зашифрованном) виде.

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

Удаленное подключение к PostgreSQL без шифрования данных открывает потенциальные возможности для злоупотреблений. Если хакер установит сниффер в вашей сети или в сети между клиентом и сервером, к которому вы подключаетесь, он сможет получить полный доступ ко всей информации, хранящейся в PostgreSQL.

В этом разделе мы рассмотрим три общих способа шифрования данных между PostgreSQL и клиентом.

  • Встроенная поддержка SSL. Поддержка SSL в PostgreSQL активизируется при компиляции с ключом --with-ssl. Это позволяет psql (или любому клиенту, написанному с учетом возможности подключения к PostgreSQL через SSL) установить защищенное подключение к PostgreSQL.
  • SSH/OpenSSH. Сеанс SSH (Secure SHell) позволяет создать туннель (tunnel) к удаленному серверу – при условии, что демон SSH (например, sshd) установлен в системе и доступен для подключающегося пользователя. Для этого в системе, в которой работает PostgreSQL, создается учетная запись для каждого пользователя.
  • Stunnel. Приложение Stunnel создает шифрованный туннель для обмена данными между клиентом и сервером PostgreSQL. Для пользователей, не имеющих прямого доступа к удаленному серверу, Stunnel можно настроить на работу в клиентской системе.

Встроенная поддержка SSL

В PostgreSQL предусмотрена возможность активизации встроенной поддержки SSL при помощи ключа конфигурации --with-ssl. Этот вариант особенно удобен в тех случаях, когда для работы с PostgreSQL вы собираетесь в основном использовать psql, потому что в этом клиенте предусмотрена внутренняя поддержка подобного способа подключения.

Большинство пользователей предпочитает работать с PostgreSQL при помощи всевозможных клиентских приложений. В этом случае вам придется либо самостоятельно написать клиента, поддерживающего SSL-подключение к PostgreSQL, либо выбрать внешнюю схему шифрования сеансов между клиентом/приложением и сервером PostgreSQL (например, SSH или Stunnel).

SSH/OpenSSH

OpenSSH является превосходным средством внешнего шифрования обмена данными между клиентом и сервером. Профессионалы в области безопасности и системные администраторы фактически приняли OpenSSH как стандарт в области шифрования. Чаще всего OpenSSH используется в терминальных приложениях или в программах пересылки файлов. Протокол SSH обеспечивает обобщенный механизм шифрования, применимый практически в любой области.

Имея доступ к системной учетной записи на удаленном сервере, можно пройти аутентификацию и открыть туннель между удаленным и локальным хостами с ключом – L. Туннель прослушивает заданный порт локального компьютера, шифрует поступающие пакеты данных и отправляет их на удаленный сервер в зашифрованном виде. Там данные расшифровываются и передаются на указанный порт удаленного сервера.

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.