43

我们在Windows上使用 Jenkins 1.504 。

我们需要在不同的子网络中拥有 Master 和 Slave,并在它们之间设置防火墙。
我们不能有 ANY to ANY 端口防火墙规则,我们必须指定确切的端口号。

我知道 Master 正在监听的端口。

我还看到 Slave 从每次运行时动态分配的任意端口打开与 Master 的连接,并且 Master 端的端口也是任意的。
我可以通过在管理 Jenkins > 配置全局安全 > JNLP 从代理的 TCP 端口中指定它来修复 Master 的端口)。

如何修复从端口?


更新:找到此处描述的连接机制: https ://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI#JenkinsCLI-Connectionmechanism

我认为它可能对我们有用,但仍然会更好地使用固定 2 固定端口连接。

4

4 回答 4

44

我们有类似的情况,但在我们的情况下,Infosec 同意允许任何 1,所以我们不必修复从端口,而是将主端口修复到高级 JNLP 端口 49187 工作(“配置全局安全性”->“TCP 端口对于 JNLP 从代理”)。

TCP
49187 - Fixed jnlp port
8080 - jenkins http port

将 slave 作为 Windows 服务启动所需的其他端口

TCP
135 
139 
445

UDP
137
138
于 2013-08-01T18:58:23.443 回答
12

从站不是服务器,它是客户端类型的应用程序。网络客户端(几乎)从不使用特定端口。相反,他们要求操作系统提供一个随机的空闲端口。这工作得更好,因为您通常在许多事先不知道当前配置的机器上运行客户端。这可以防止每天数以千计的“客户端无法启动,因为端口已在使用中”的错误报告。

您需要告诉安全部门,从站不是服务器,而是连接到服务器的客户端,并且您绝对需要有一条规则,即客户端:ANY -> 服务器:FIXED。客户端端口号应该 >= 1024(端口 1 到 1023 需要特殊权限)但我不确定您是否真的通过为此添加规则获得任何东西 - 如果攻击者可以打开特权端口,他们基本上已经拥有机器.

如果他们争论,那么问他们为什么他们不需要对人们在你公司使用的所有网络浏览器都使用相同的规则。

于 2014-11-05T09:33:00.263 回答
1

我有类似的情况,并且在按照您的描述设置 JNLP 端口并添加单个防火墙规则后连接没有问题,允许使用该端口在服务器上进行连接。假设它是一个随机选择的客户端端口,它连接到一个已知的服务器端口(需要一个 host:ANY -> server:1 规则)。

从我对源代码的阅读中,我看不到在从从站发出请求时设置要使用的本地端口的方法。不幸的是,这将是一个不错的功能。

备择方案:

在您的客户端上使用一个简单的代理来侦听端口 N,然后使用恒定的本地端口将所有数据转发到远程主机上的实际 Jenkins 服务器。将你的奴隶连接到这个本地代理而不是真正的 Jenkins 服务器。

创建一个自定义 Jenkins 从属构建,它允许一个选项来指定要使用的本地端口。

还要记住,如果您通过自签名证书使用 HTTPS,则必须更改从属设备上的配置 jenkins-slave.xml 文件以在命令行上指定-noCertificateCheck选项。

于 2014-09-23T21:06:03.460 回答
0

不确定这是否相关并且我不太了解 Jenkins,但我们一直在尝试修复一些影响 Jenkins 服务器告诉从属客户端运行任务的防火墙块。我们发现我们需要允许 RDP 端口 3389 在回溯 127.0.0.1 上进行销售。这有任何意义吗?

于 2021-10-29T09:27:24.873 回答