这些客户端中的每一个都使用ssh -R命令从端口80的Web服务器到公共服务器创建反向SSH隧道.
反向SSH隧道的目标端口(在客户端)为80,源端口(在公共服务器端)依赖于用户.我们计划为每个用户维护一个端口地址映射.
例如,客户端A将其端口80的Web服务器隧道传送到我们的端口8000;客户B从80到8001;客户C从80到8002.
ClIEnt A: ssh -R 8000:internal.webserver:80 clIEnta@publicserverClIEnt B: ssh -R 8001:internal.webserver:80 clIEntb@publicserverClIEnt C: ssh -R 8002:internal.webserver:80 clIEntc@publicserver
基本上,我们要做的是将每个用户绑定到一个端口,并且不允许它们隧道到任何其他端口.
如果我们使用SSH的正向隧道功能和ssh -L,我们可以使用permitopen = host:port配置允许通过隧道传输哪个端口.但是,反向SSH隧道没有等价物.
有没有办法限制每个用户的反向隧道端口?
解决方法 由于您不允许以粗体显示,我假设您希望在SSH客户端进行某种运行时拒绝,以防止端口绑定.所以,我已经为您挖掘了源代码:serverloop.c:
/* check permissions */if (!options.allow_tcp_forwarding || no_port_forwarding_flag || (!want_reply && Listen_port == 0)#ifndef NO_IPPORT_RESERVED_CONCEPT || (Listen_port != 0 && Listen_port < IPPORT_RESERVED && pw->pw_uID != 0)#endif ) { success = 0; packet_send_deBUG("Server has Disabled port forwarding.");} else { /* Start Listening on the port */ success = channel_setup_remote_fwd_Listener( Listen_address,Listen_port,&allocated_Listen_port,options.gateway_ports);}
不幸的是,正如您所看到的,除了标准端口之外,没有多少条件可以阻止端口转发.
我打算在iptables中推荐使用mod_owner的相同建议,但杰夫已经打败了我.
您最干净的解决方案就是修改此文件(例如,您可以使用pw-> pw_uID来获取用户连接的uID,并将其映射到正确的端口)并重新编译SSH服务器,但这取决于如何你很舒服.
总结以上是内存溢出为你收集整理的linux – 如何限制反向SSH调整端口?全部内容,希望文章能够帮你解决linux – 如何限制反向SSH调整端口?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)