Обеспечение безопасности SSH-туннелей

Обеспечение безопасности SSH-туннелей

У нас есть приложение, которое использует SSH для подключения к серверу: сетевой трафик приложения (база данных, некоторые пользовательские протоколы TCP и т. д.) туннелируется через SSH-соединение.

Мы используем пару ключей и непривилегированную учетную запись на сервере, но пользователи по-прежнему могут использовать свой ключ для входа на сервер или выполнять любое перенаправление портов по своему усмотрению.

Есть ли способ настроить SSH-сервер так, чтобы он разрешал тольконекоторыйтуннели (ограничены по конечному адресу и порту туннелей), и отключить доступ к оболочке ? (мы используем OpenSSH)

[редактировать]

Я наткнулся наЭта статья, похоже, что удаления доступа к оболочке недостаточно. Изменил заголовок и описание соответственно.

решение1

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

permitopen="tsserver.example.org:3389",no-pty,no-agent-forwarding,no-X11-forwarding,command="/usr/local/stm_shell.sh" ssh-rsa AAAAB3....

Мой stm_shell.sh такой (он также устанавливает 12-часовой тайм-аут). Я не уверен на 100%, что это полностью безопасно.

#!/bin/bash

# send a hang-up after this process exits
shopt -s huponexit
# maximum session length in hours
CONNECT_TIME=12
sleep $[CONNECT_TIME*60]
kill $PPID

решение2

Установка оболочки пользователя в значение /bin/false может дать то, что вам нужно.

решение3

Возможно, ключевое слово «ChrootDirectory» в sshd_config (man sshd_config) может обеспечить немного большую безопасность.

решение4

Я полагаю, что вы могли бы установить ForceCommandдирективу, /bin/falseчтобы запретить доступ к оболочке.

Связанный контент