Насколько я понимаю, при создании ssh-туннеля к удаленному компьютеру порты становятся открытыми на этом компьютере для любого, кто может использовать его и подключиться к моему локальному ящику (а не только пользователю, открывшему туннель). Есть ли способ ограничить доступ к портам, открытым на удаленном компьютере, для указанной группы unix? Я думал, что это возможно с помощью правила iptables или какого-либо другого ограничения порта TCP / IP, но я не совсем уверен.
Спасибо
Вы можете использовать iptables owner
модуль, чтобы он соответствовал UID или GID исходного сокета, но это работает только для пакетов, исходящих локально (то есть с удаленного компьютера).
% ssh -fNR 20022:localhost:22 localhost
% sudo iptables --append OUTPUT --destination 127.0.0.1 --protocol tcp --dport 20022 --match owner \! --uid-owner mgorven --jump REJECT
% sudo iptables -nvL OUTPUT
Chain OUTPUT (policy ACCEPT 40 packets, 6349 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT tcp -- * * 0.0.0.0/0 127.0.0.1 tcp dpt:20022 ! owner UID match 1000 reject-with icmp-port-unreachable
% telnet 127.0.0.1 20022
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
^]
telnet> Connection closed.
% sudo telnet 127.0.0.1 20022
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused