首页 文章

Jenkins奴隶防火墙的端口号

提问于
浏览
35

我们在 Windows 上使用Jenkins 1.504 .

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

我知道Master正在听的端口 .

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

如何修复Slave端口?

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

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

3 回答

  • 9

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

    TCP
    49187 - Fixed jnlp port
    8080 - jenkins http port
    

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

    TCP
    135 
    139 
    445
    
    UDP
    137
    138
    
  • 35

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

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

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

  • 1

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

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

    备择方案:

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

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

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

相关问题