Назад | Перейти на главную страницу

Защита туннелей SSH

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

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

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

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

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

В вашем файле 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

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

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

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