Jenkins奴隶防火墙的端口号

时间:2013-07-04 14:01:22

标签: jenkins port firewall slave

我们在 Windows 上使用Jenkins 1.504。

我们需要在不同的子网络中拥有Master和Slave,其间有防火墙。
我们不能拥有任何端口防火墙规则,我们必须指定完全端口号。

我知道Master正在听的端口。

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

如何修复Slave端口?


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

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

3 个答案:

答案 0 :(得分:36)

我们有类似的情况,但在我们的情况下,Infosec同意允许任何1,所以我们没有必须修复从端口,而是将主机固定到高级JNLP端口49187工作(“配置全局安全” - &gt ;“JNLP从属代理的TCP端口”)。

TCP
49187 - Fixed jnlp port
8080 - jenkins http port

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

TCP
135 
139 
445

UDP
137
138

答案 1 :(得分:9)

奴隶不是服务器,它是客户类型的应用程序。网络客户端(几乎)从不使用特定端口。相反,他们要求操作系统提供随机自由端口。这样做效果要好得多,因为您通常在许多机器上运行客户端,而当前配置事先并不知道。这可以防止成千上万的客户端无法启动,因为端口已经在使用"每天都会报告错误。

你需要告诉安全部门,奴隶不是服务器,而是连接到服务器的客户端,你绝对需要一个说客户端的规则:ANY - >服务器:固定。客户端端口号应该是> = 1024(ports 1 to 1023 need special permissions)但是我不确定你是否真的通过为此添加规则获得任何东西 - 如果攻击者可以打开特权端口,他们基本上已经拥有了机。

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

答案 2 :(得分:1)

我有类似的情况,在设置您描述的JNLP端口后连接没有问题,并添加了一个允许使用该端口在服务器上建立连接的防火墙规则。当然,它是一个随机选择的客户端端口转到已知的服务器端口(主机:ANY - >服务器:1规则是必需的。)

从我对源代码的阅读中,我没有看到在从奴隶发出请求时设置本地端口的方法。不幸的是,这将是一个很好的功能。

备选方案:

在客户端上使用侦听端口N的简单代理,然后使用常量本地端口将所有数据转发到远程主机上的实际Jenkins服务器。将您的slave连接到此本地代理而不是真正的Jenkins服务器。

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

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