2012-12-12 48 views
8

這似乎是一個明顯的問題,但我看起來很高,也很低,找不到答案。這裏的情況:如何爲Jenkins JNLP從服務器啓用安全性?

  1. 我在公共互聯網上的Windows和Linux機器的
  2. 我們使用JNLP(網絡啓動)的裝飾物混合運行的奴隸(信任)志願者上運行的詹金斯持續集成服務器開始的奴隸,以避免防火牆問題和建立/調試SSH
  3. 服務器設置了基於矩陣的安全

麻煩的是,我能找到的關於安全如何與JNLP工程完全爲零的信息。如果授予任何匿名讀取權限,那麼世界上的任何人都可以下載slave.jar並在我的服務器上的(易於猜測的)URL上訪問jnlp文件,並作爲從屬連接。

我發現如果我撤銷所有匿名訪問,jnlp文件被阻止,但slave.jar仍然可以訪問。

在jnlp文件中似乎沒有任何特別安全的東西,除了一個長十六進制數。這個設置是安全的還是還有其他的我需要做的?

如果訪問者可以在不登錄的情況下看到最近的版本,但如果我將讀權限授予匿名,任何人都可以訪問jnlp文件,那將會很好。

回答

3

如果授予任何匿名讀取權限,那麼世界上的任何人都可以下載slave.jar並在我的服務器上的(容易猜到的)URL上訪問jnlp文件,並作爲從屬連接。

事實證明,這實際上是在詹金斯的關鍵安全漏洞:

https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2013-01-04

在回答我的問題,看來最好的辦法是禁用所有匿名讀取權限。

+0

看起來像這是修復如果你升級,你是否仍然需要禁用匿名讀取訪問? – DonBecker

0

從上this jenkins bug的評論看來,這種行爲(允許任何人讀取權限,看看JNLP文件)的固定the security vulnerability的過程中被改變了,你現在可以限制訪問JNLP文件到特定用戶。

我找不到對當前的行爲的任何文件要麼,但它可以通過

  1. 撤消所有權限「anynmous」
  2. 嘗試下載JNLP文件,而無需提供任何得到一些線索憑據,使用wget或類似

步驟2將提供一個「403禁止」響應包含一個類似

Authentication required 
<!-- 
You are authenticated as: anonymous 
Groups that you are in: 

Permission you need to have (but didn't): hudson.model.Computer.Connect 
... which is implied by: hudson.model.Computer.Disconnect 
... which is implied by: hudson.model.Hudson.Administer 
--> 

該響應還包含JavaScript重定向,因此您需要使用wget或其他一些非啓用JavaScript的方法才能看到它。

通過反覆試驗,我發現「hudson.model.Computer。連接「似乎映射到詹金斯用戶界面中的」從屬連接「權限