Предположим, я создал учетную запись, чья оболочка входа в систему на самом деле является сценарием, который не разрешает интерактивный вход в систему и позволяет только очень ограниченный, определенный набор команд, которые будут выполняться удаленно.
Тем не менее, ssh
позволяет пользователю этой учетной записи переадресовывать порты, что является дырой.
Суть в том, что я действительно хочу, чтобы эта учетная запись настраивала конкретную конфигурацию переадресации портов, когда ssh
сеанс установлен. Но должно быть невозможно настроить произвольную переадресацию портов.
(Это приемлемое решение, если разрешенная конфигурация переадресации портов безоговорочно устанавливается как часть каждого сеанса.)
Ответы:
Оказывается, в OpenSSH есть функция для ограничения
-L
стилей, открываемых на стороне сервера. Функция доступна двумя способами.В файле конфигурации сервера есть
PermitOpen
опция. Эта опция может использоваться для указания хостов и портов, для которых могут быть установлены пересылки. Эта опция может использоваться внутриMatch
блока, поэтому она может быть ограничена пользователем, группой или именем хоста или шаблоном IP-адреса.В
authorized_keys
файле параметры могут быть связаны с определенным ключом. Естьpermitopen
опция, которая работает аналогично конфигурации сервера.Примечания / Ограничения:
Эта опция
AllowTcpForwarding
отключает всю переадресацию в обоих направлениях, предотвращая настройку прослушивающих портов на сервере, а также активную переадресацию.Нет
PermitOpen
контроля доступа для-R
стилевых соединений. Это, наверное, хорошо. Это означает, что пользователи могут использоватьssh
для открытия различных непривилегированных портов для прослушивания на сервере. Там, где они подключаются на другой стороне SSH-соединения, проблема клиента. Если мы ограничим переадресацию в-L
направлении, у пользователя не будет возможности использовать эти-R
порты (по крайней мере, не черезssh
, если этот пользователь не сможет создать произвольный интерактивный сеанс).Кажется, не существует способа создать пустой список разрешенных открытий, чтобы пользователи не могли устанавливать какие-либо
-L
стилистические соединения. Однако обходной путь - использовать безопасное, несуществующее или невозможное имя хоста, такое как пустая строка. Конкретно,permitopen=":1234"
делает трюк.источник
-R
, это работает для меня.Аргумент «any» может использоваться для снятия всех ограничений и разрешения любых запросов на пересылку. Аргумент «none» может использоваться для запрета всех запросов на пересылку. По умолчанию все запросы на переадресацию портов разрешены.
источник