【问题标题】:Jenkins Slave port number for firewallJenkins 从属防火墙端口号
【发布时间】:2013-07-02 13:51:32
【问题描述】:

我们在 Windows 上使用 Jenkins 1.504。

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

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

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

如何修复 Slave 端口?


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

我认为它可能对我们有用,但还是有固定 2 固定端口连接会更好。

【问题讨论】:

    标签: jenkins port firewall slave


    【解决方案1】:

    我们也遇到过类似的情况,但在我们的案例中,Infosec 同意允许 any 为 1,因此我们不必修复从端口,而是将主端口修复为高级 JNLP 端口 49187(“配置全局安全”-> “JNLP 从代理的 TCP 端口”)。

    TCP
    49187 - Fixed jnlp port
    8080 - jenkins http port
    

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

    TCP
    135 
    139 
    445
    
    UDP
    137
    138
    

    【讨论】:

    • 我发现从节点启动 JNLP 代理默认使用端口 50724。
    • @DonBecker 似乎随机化了端口。
    • 我还没有找到其他必要的端口。只是 JNLP 和 HTTP 端口。
    • @metaforge,您能否在仅打开 JNLP 端口的情况下将 jenkins 代理安装为 Windows 服务?我记得,我不能,这就是为什么必须找出必要的 UDP 端口。
    • @user6930 我确认除了固定的 jnlp 和 jenkins http 端口(使用 CentOS 6.8 master 和 Windows 7 slave 测试)之外不需要其他端口
    【解决方案2】:

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

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

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

    【讨论】:

    • 好点,亚伦!客户端也可以有 1024 以上的任意端口,因为它们可以在没有管理员权限的情况下运行。
    • 你是对的,但我不确定是否值得强制执行此限制。如果攻击者可以打开特权端口,他们就已经拥有了这台机器。
    【解决方案3】:

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

    根据我对源代码的阅读,我没有看到设置本地端口以在从从站发出请求时使用的方法。不幸的是,拥有它会是一个不错的功能。

    替代方案:

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      猜你喜欢
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      相关资源
      最近更新 更多