在特定端口上运行的服务可以从任何网站运行...如何禁用它?


0

所以,我在我的VPS上运行多个网页,并利用Apache的虚拟主机确保前往我网站的任何人都被发送到正确的网站。不幸的是,我在设置Jenkins实例后注意到的一点是,我可以去任何指向我的VPS的域中的任何域,并在不同的vhosts上添加:8080到他们去Jenkins服务器。我想找到一种方法来防止这种情况,并允许我只通过ip:port访问Jenkins服务器。任何帮助深表感谢!

作为一个额外的问题,有没有什么方法可以放弃连接到ip:80的尝试?谢谢。


禁用8080,仅允许443用于HTTP流量,然后设置反向代理,基本上将Jenkin安装代理到特定URI。例如,https://jenkin.example.com获取反向代理https://example.com:8080并在其前面放置某种auth,或者只允许特定的IP在Apache中访问它。
shinjijai

添加防火墙(iptables)规则以拒绝端口8080上的访问(除非源是localhost或Web服务器)?
davidgo

Answers:


0

我可以去任何这些域[...]并附:8080加到他们去Jenkins服务器。我想找到一种方法来防止这种情况,并允许我只通过访问Jenkins服务器ip:port

正如评论中所提到的,第一步是阻止公共访问your_ip:8080(Jenkins仍然可以在此端口上运行)。你如何做到这一点可能取决于你的VPS(虽然你的iptables或防火墙接口可能是一个很好的起点)。

第二步是使端口的“默认”Apache虚拟主机:XX成为反向代理(使用Apache mod_proxy模块),并将代理目标设置为对端口上运行的Jenkins的(本地)引用:8080。这个反向代理是允许访问Jenkins的,即使它会被公开阻止。你可能会对关于在Apache背后运行Jenkins官方Jenkins wiki笔记特别感兴趣。

笔记

  • 您希望反向代理成为给定端口的“默认”主机的原因是,对于Apache和基于名称的虚拟主机,:XX当IP为IP时,将返回此“默认”主机(通常是第一个带端口的虚拟主机)请求。

  • 反向代理的端口由虚拟主机条目定义。但是,如果Apache和Jenkins在同一台服务器上运行,则此端口不能与Jenkins运行的端口相同(例如:8080)。

  • 不要忘记在Apache配置中添加适当Listen的port指令:XX

  • 如果使用端口:443(SSL),则该端口的证书应包含您的IP作为有效名称。否则您可能会收到证书警告。


需要说明的是,port :XX只是一个示例/占位符,表示您选择的任何端口。


有什么方法可以放弃尝试连接ip:80吗?

Listen在除了以外的端口上安装Apache :80。但是,这将破坏:80对您站点的所有正常端口HTTP访问(即,如果用户未明确键入https://其浏览器或使用显式https://链接访问,则它们将无法连接)。

作为折衷方案,您可以使用上述相同的技术(在端口上使用“默认”主机:80)将请求重定向(而非代理)到您的主站点或其他地方(例如https://www.google.com)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.