2013-07-04 185 views
30

我們使用Jenkins 1.504上的WindowsJenkins從屬端口號防火牆

我們需要在不同的子網中擁有Master和Slave,並在兩者之間設置防火牆。
我們不能對任何端口防火牆規則有任何規定,我們必須指定確切的端口號。

我知道Master正在監聽端口。

我也看到Slave從每個運行動態分配的任意端口打開到Master的連接,並且Master端的端口也是任意的。
我可以通過在Manage Jenkins> Configure Global Security> TCP port for JNLP slave agents中指定它來修復Master的端口)。

如何解決從站端口?


UPDATE:這裏介紹找到銜接機制:https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI#JenkinsCLI-Connectionmechanism

我認爲它可能爲我們工作,但仍然會比較好有固定2固定端口的連接。

回答

32

我們有類似的情況,但在我們的案例中,Infosec同意允許任何1,所以我們沒有必要修復從端口,而是將主端口修改爲高端JNLP端口49187工作(「配置全局安全」 >「用於JNLP從屬代理的TCP端口」)。

TCP 
49187 - Fixed jnlp port 
8080 - jenkins http port 

其他端口需要推出從作爲窗口服務

TCP 
135 
139 
445 

UDP 
137 
138 
+0

感謝有關發射奴隸的信息。我們也需要這個。 – Ivan

+0

我發現從節點啓動JNLP代理默認爲端口50724. – DonBecker

+2

@DonBecker它似乎隨機化端口。 –

1

我也有類似的情況,並有設置JNLP端口象你所說的,添加一個防火牆規則後,連接沒有問題允許使用該端口在服務器上進行連接。當然,這是一個隨機選擇的客戶端端口去一個已知的服務器端口(主機:任何 - >服務器:1規則是必要的)。

從我讀的源代碼,我沒有看到一種方法來設置從本地請求時使用本地端口。這很不幸,這將是一個不錯的功能。

替代方案:

使用您的客戶端上的一個簡單的代理,監聽端口N和再利用恆定的本地端口確實轉發所有數據到遠程主機上的實際詹金斯服務器。將你的奴隸連接到這個本地代理,而不是真正的Jenkins服務器。

創建一個自定義的Jenkins從站版本,該版本允許一個選項指定要使用的本地端口。

也請記住,如果你是通過自簽名證書使用HTTPS,則必須改變從屬節點上的配置詹金斯-slave.xml文件中指定命令行-noCertificateCheck選項。

8

從站不是服務器,它是客戶端類型的應用程序。網絡客戶端(幾乎)不會使用特定的端口。相反,他們要求操作系統提供一個隨機的免費端口。由於您通常在當前配置未知的多臺計算機上運行客戶端,因此這會更好。這樣可以防止每天有數千個「客戶端無法啓動,因爲端口已被使用」錯誤報告。

您需要告訴安全部門,從站不是服務器,而是連接到服務器的客戶端,您絕對需要有一個規則說客戶端:ANY - > server:FIXED。客戶端端口號應大於1024(ports 1 to 1023 need special permissions),但我不確定是否通過爲此添加規則實際獲得任何內容 - 如果攻擊者可以打開特權端口,則他們基本上已經擁有該機器。

如果他們爭論,然後問他們爲什麼他們不要求所有的人在你的公司使用的瀏覽器的規則。

+1

好點,Aaron!另外客戶端可以擁有1024以上的任意端口,因爲它們可以在沒有管理員權限的情況下運行 – Ivan

+0

你說得對,但我不確定是否值得強制執行此限制。如果攻擊者可以打開特權端口,他們已經擁有該機器。 –