17.11. Secure TCP/IP Connections with SSH Tunnels#
17.11. Secure TCP/IP Connections with SSH Tunnels #
Возможно использовать SSH для шифрования сетевого соединения между клиентами и сервером Tantor BE. При правильной настройке это обеспечивает достаточно безопасное сетевое соединение, даже для клиентов, не поддерживающих SSL.
Сначала убедитесь, что на том же компьютере, где работает сервер Tantor BE, правильно работает сервер SSH и вы можете войти в систему с использованием команды 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
, и он будет использовать любую процедуру аутентификации, настроенную для подключений этого пользователя к этому адресу привязки. Обратите внимание, что сервер не будет считать соединение зашифрованным SSL, поскольку на самом деле оно не зашифровано между сервером SSH и сервером Tantor BE. Это не должно представлять дополнительных угроз для безопасности, поскольку они находятся на одной машине.
Для успешной настройки туннеля необходимо иметь разрешение на подключение через 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
для получения подробной информации.
Подсказка
Существует несколько других приложений, которые могут обеспечивать безопасные туннели с использованием процедуры, аналогичной описанной выше.