Можно ли ограничить назначение SSH для прямого туннелирования для отдельных пользователей?
Пример: клиент «а» может перенаправить туннель только на 192.168.10.2:22. Клиент «b» может перенаправить туннель на 192.168.11.2:22 - исключительно.
Я хочу ограничить следующую команду туннелирования для каждого пользователя или группы:
Требования:
Действительная команда туннелирования (для client_a):
ssh -f client_a@gateway -L localhost:2222:192.168.10.2:22 -N
Недопустимая команда туннелирования (для client_a) - SSH-соединение на шлюзе должно быть немедленно закрыто.
ssh -f client_a@gateway -L localhost:2222:192.168.11.2:22 -N
Действительная команда туннелирования (для client_b):
ssh -f client_b@gateway -L localhost:2222:192.168.11.2:22 -N
Недопустимая команда туннелирования (для client_b) - SSH-соединение на шлюзе должно немедленно закрыться.
ssh -f client_b@gateway -L localhost:2222:192.168.10.2:22 -N
Можно ли добиться этого ограничения, изменив sshd_config?
Предполагая, что это современная версия sshd, / и т.д. / SSH / sshd_config поддерживает Match
и PermitOpen
директивы, которые можно комбинировать, чтобы ограничить цели, указанные в настройках клиентов. LocalForward параметры
Разрешитьоткрыть
Указывает места назначения, которым разрешена переадресация TCP-порта. Спецификация пересылки должна быть в одной из следующих форм:PermitOpen host:port PermitOpen IPv4_addr:port PermitOpen [IPv6_addr]:port
Можно указать несколько нападающих, разделив их белыми полосами. Аргумент «любой» может использоваться для снятия всех ограничений и разрешения любых запросов на пересылку. По умолчанию все запросы на переадресацию портов разрешены. https://www.freebsd.org/cgi/man.cgi?sshd_config(5)
Так что что-то вроде этого должно работать ...
Match User client_a
PermitOpen none
PermitOpen 192.168.10.2:22
Match User client_b
PermitOpen none
PermitOpen 192.168.11.2:22
Я не уверен на 100% в заказе этих PermitOpens .. (By
default all port forwarding requests are permitted.
), поэтому вам, возможно, придется отменить их или добавить Permit none
в подходящий момент, чтобы заблокировать несоответствующие пересылки.
Или, возможно, вот так;
Match User client_a
PermitOpen 192.168.10.2:22
Match User client_b
PermitOpen 192.168.11.2:22
Match User client_a client_b
PermitOpen none