將 Jenkins 鎖定在 8080 埠
我的同事在我們的一台測試伺服器上安裝了 Jenkins。當我訪問伺服器 ip 和埠 8080 時,Jenkins 正在執行,即 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://localhost: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(我認為我的問題的答案在這個文件中,但我無法弄清楚)。
任何幫助表示讚賞。
問候,斯蒂芬
使用 iptables 阻止流量的簡單方法
IPTables How TO是一個相當不錯的方法
如何阻止的基本思想是
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
以拒絕所有其他網路
由於您將來自 apache 網路伺服器的流量代理到
http://localhost:8080/
,因此您可以在 tomcat連接器中配置它應該綁定到的,address=127.0.0.1
而不是綁定到所有介面的預設行為。這樣,進入您的詹金斯服務的唯一途徑是通過您的代理(當然,除非您從執行詹金斯的同一台機器連接)
如果您也想在配置中包含 SSL,那麼您也可以使用 proxyPass,但對於偵聽 443 的埠,並將您的 SSL 配置也放入 apache httpd(並從埠 80 重定向到 443)。