锁定 Jenkins 的 8080 端口

锁定 Jenkins 的 8080 端口

我的同事在我们的一台测试服务器上安装了 Jenkins。当我访问服务器 ip 和端口 8080 时,Jenkins 正在运行 ie 99.999.999.999:8080

我想将 Jenkins 应用程序锁定到外部世界,并且只能从内部 IP 地址访问它。

因此我在 apache 中设置了一个 VirtualHost,如下所示:

<VirtualHost *:80>
   ServerName jenkins.mytestserver.com
   ErrorLog logs/jenkins.mytestserver.com-error_log
   CustomLog logs/jenkins.mytestserver.com-access_log common

   #ProxyPass  /usr/share/tomcat6/webapps/ ajp://127.0.0.1:8080/usr/share/tomcat6/webapps/
   #ProxyPassReverse /usr/share/tomcat6/webapps/ ajp://127.0.0.1:8080/usr/share/tomcat6/webapps/
   #ProxyRequests Off

   ProxyPass / http://localhost:8080/ nocanon
   ProxyPassReverse / http://localhost:8080/
   ProxyRequests Off
   ProxyPreserveHost On

   <Location />
     order deny,allow
     deny from all
     Allow from 11.111.111.111 
   </Location>
</VirtualHost>

Vhost 工作正常,我可以通过 jenkins.mytestserver.com 访问 jenkins,并且它被外界屏蔽了。

如何阻止外界通过 99.999.999.999:8080 访问它?

我感觉上面执行 ReverseProxy 的方式不正确,因为它只是将请求传递给http://本地主机:8080/这与http://99.999.999.999:8080

我一直参考以下文档:

https://wiki.jenkins-ci.org/display/JENKINS/Apache+frontend+for+security

https://www.mulesoft.com/tcat/tomcat-connectors(我认为我的问题的答案就在这个文档中,但我无法弄清楚)。

任何帮助均感激不尽。

问候,斯蒂芬

答案1

使用 iptables 阻止流量的简单方法

IPTables 如何操作是一个很好的方法

阻止的基本思路是

sudo iptables -A INPUT -s 192.168.x.x -p tcp --dport 8080 -j ACCEPT到您的所有网络 sudo iptables -A INPUT -p tcp --dport 8080 -j REJECT以拒绝所有其他网络

答案2

由于您将流量从 apache web 服务器代理到http://localhost:8080/,因此您可以在 tomcat 中进行配置连接器它应该绑定到address=127.0.0.1而不是绑定到所有接口的默认行为。

这样,进入你的 jenkins 服务的唯一方式是通过你的代理(当然,除非你从运行 jenkins 的同一台机器连接)

如果您也想在配置中包含 SSL,那么您也可以使用 proxyPass,但对于在 443 上监听的端口,并将您的 SSL 配置也放入 apache httpd 中(并从端口 80 重定向到 443)。

相关内容