Допускается использование SSH для шифрования сетевого соединения между клиентами и Digital Q.DataBase сервера. При правильной настройке это обеспечивает достаточный уровень безопасности сетевого соединения даже для клиентов, не поддерживающих SSL.
Сначала следует убедиться, что SSH сервер запущен и функционирует корректно на той же машине, что и
Digital Q.DataBase сервер, и что возможен вход через
ssh от имени какого-либо пользователя; после чего можно установить
защищенный туннель к удаленному серверу. Защищенный туннель прослушивает локальный порт и перенаправляет весь трафик на порт удаленной машины. Трафик, отправленный на удаленный порт, может поступать на его
localhost адрес или другой адрес прослушивания, если это необходимо; он не будет отображаться как исходящий от локальной машины. Данная команда создает защищенный туннель от клиентской машины к удаленной машине foo.com:
ssh -L 63333:localhost:5432 joe@foo.com
Первое число в -L аргументе, 63333, является номером локального порта туннеля; можно использовать любой свободный порт. (IANA
резервирует порты с 49152 по 65535 для частного использования). Имя или IP-
адрес после этого — это удаленный адрес прослушивания, к которому выполняется подключение,
то есть localhost, который используется по умолчанию. Второе
число, 5432, — это удаленная точка туннеля, например, номер порта,
который использует сервер баз данных. Для подключения к серверу баз данных через этот туннель следует использовать порт 63333 на локальной машине:
psql -h localhost -p 63333 postgres
С точки зрения сервера баз данных это будет выглядеть так, будто вы являетесь
пользователем joe на хосте foo.com
подключающимся к localhost адресу прослушивания (bind address), и сервер будет применять ту процедуру аутентификации, которая была настроена для подключений данного пользователя к этому адресу. Обратите внимание, что сервер не будет считать соединение зашифрованным по протоколу SSL, так как фактически шифрование между
SSH сервером и
Digital Q.DataBase сервера. Это не должно создавать дополнительных рисков безопасности, так как они находятся на одном узле.
Для успешной настройки туннеля необходимо иметь разрешение на подключение через
ssh в качестве joe@foo.com, точно так же, как если бы вы попытались использовать ssh для создания
терминальной сессии.
Перенаправление портов также можно настроить следующим образом:
ssh -L 63333:foo.com:5432 joe@foo.com
но тогда сервер баз данных будет воспринимать соединение как входящее
на его foo.com адрес привязки, который не открыт настройками по умолчанию listen_addresses =
'localhost'. Как правило, это не является желаемым результатом.
При необходимости «выполнить переход» к серверу баз данных через определенный узел входа, одна из возможных конфигураций может выглядеть следующим образом:
ssh -L 63333:db.foo.com:5432 joe@shell.foo.com
Обратите внимание, что при таком способе соединение
от shell.foo.com
к db.foo.com не будут шифроваться через SSH-туннель. SSH предоставляет широкие возможности настройки для случаев, когда на сеть наложены различные ограничения. Для получения подробных сведений следует обратиться к документации по SSH.
Существует ряд других приложений, позволяющих создавать безопасные туннели с использованием подхода, аналогичного описанному выше.