客户端防火墙阻止除80和443之外的所有端口,需要将端口443上的请求转发到SSH或HTTPS

时间:2009-01-04 13:47:28

标签: https ssh firewall port forwarding

我目前在客户端工作,他们已经锁定了网络,除了端口80和443.我需要使用SSH连接到我们的服务器,但同一台服务器也运行我们的网站。我们不想投资新服务器或放置第二张网卡。

我一直在网上搜索设置我们的linux服务器(运行CentOS 5),以便有一个守护进程监听端口443,根据客户端协议将请求转发到正确的内部端口(SSH 22或HTTPS已移至其他端口_。

互联网上有很多人正在寻找这种解决方案,但没有明确说明如何做到这一点。

任何人都有想法/明确指示如何做到这一点?

问候,nidkil

5 个答案:

答案 0 :(得分:6)

sslh:http://www.rutschle.net/tech/sslh.shtml

我正在使用1.5;我还没有尝试过1.6b,并且1.3在离开僵尸方面存在问题。

在端口443上运行它;如果没有数据以2秒(默认值)发送,则转发到ssh。否则,它会转发到您的Web服务器。

我在我的网站上运行它(http://mikeage.net) - 如果你想看到两个登录横幅,你可以netcat。

就我而言,它还有另一个目的。我们的设置比您更具限制性:所有端口都被阻止,但可以通过代理访问80和443。我可以让SSH使用像corkscrew(或putty本地)这样的程序来通过公司代理将我的SSH连接代理到我的服务器:443,在短暂的延迟之后,我的SSH服务器用它的登录横幅进行响应。我还可以通过标准HTTPS提供网页(事实上也是如此)。

答案 1 :(得分:3)

解决问题的一个简单方法可能是为您的盒子分配多个IP地址,并将SSH绑定到另一个IP上的端口443; you can usually assign multiple IP addresses to a single adapter,无需添加第二张网卡。否则我不知道你想要做什么的任何开箱即用的解决方案。您可能必须为此创建一个自定义守护程序,这将是一个有点棘手但可行的。

答案 2 :(得分:3)

出于某种原因,防火墙限制到位。它们可能不是好的,但它们对实施它或使其实现的人有意义。我不会试图违反公司关于外部联系的政策。

如果您的需要是合法的,我会要求将端口或备用端口打开到您需要的地址。如果这不起作用,那么VPN解决方案也许是可以接受的。

如果网络人员只是疯狂地保护,不愿意回应理由,或者说是无能为力,我想确保我已经从一位愿意为我蝙蝠的经理那里签字了。在我实施解决方案之前成为一个问题。任何其他事情都可能合理地结束你的工作被终止。毕竟,您所说的是违反公司安全政策。

答案 3 :(得分:1)

您可以构建一个侦听端口443的小型Web应用程序,该应用程序使用公钥身份验证为反向SSH shell启用传入连接的IP。 说:

  • 您在Web应用程序上进行身份验证; Web应用程序检索您的IP
  • 应用程序启动从其IP到IP(在端口22)的SSH隧道
  • 计算机上的SSH服务器结束隧道并侦听localhost:8080
  • 然后,您使用localhost:8080启动SSH会话。以下交互式会话中的命令将重定向到远程主机。

答案 4 :(得分:0)

如果你的centos框上有apache,你可以使用mod_proxy将请求从一个端口重定向到另一个端口。我使用此方法将请求重定向到http://webmin.myserver.comhttp://myserver.com:10000(在无法访问的端口上运行的webmin)

ServerName webmin.myserver.co.uk
SSLProxyEngine On

ProxyRequests Off
ProxyPass / https://myserver.co.uk:10000/
ProxyPassReverse / https://myserver.co.uk:10000/

将上述内容放在您的虚拟服务器指令中,您就可以了。这可能不适用于Putty,但如果您安装webmin,它有一个SSH模块,您可以通过浏览器访问。