Wie aktiviere ich die Sicherheit für Jenkins JNLP-Slaves?

8

Das scheint eine offensichtliche Frage zu sein, aber ich habe hoch und niedrig geschaut und kann keine Antwort finden. Hier ist die Situation:

  1. Ich betreibe einen Jenkins Continuous Integration Server im öffentlichen Internet mit (vertrauenswürdigen) Freiwilligen, die Sklaven auf einer Mischung von Windows- und Linux-Rechnern laufen lassen
  2. Wir verwenden den JNLP (Web start) doodad, um Slaves zu starten, um Firewall-Probleme zu vermeiden und ssh
  3. einzurichten / zu debuggen
  4. Der Server ist mit Matrix-basierter Sicherheit eingerichtet

Das Problem ist, ich kann genau keine Informationen darüber finden, wie Sicherheit mit JNLP funktioniert. Wenn anonyme Leseberechtigungen erteilt werden, kann jeder auf der Welt slave.jar herunterladen und auf die (einfach zu erratenden) URLs auf meinem Server auf die jnlp-Datei zugreifen und sich als Slave verbinden.

Ich habe festgestellt, dass die jnlp-Datei blockiert ist, wenn ich alle anonymen Zugriffe zurückziehe, aber sklave.jar ist immer noch zugänglich.

Es scheint nichts besonders Sicheres in der jnlp-Datei zu geben, außer einer langen Hex-Zahl. Ist dieses Setup sicher oder muss ich etwas anderes tun?

Es wäre schön, wenn die Besucher die letzten Builds sehen könnten, ohne sich einzuloggen, aber wenn ich Leseberechtigungen für anonyme Benutzer bewillige, kann jeder auf die jnlp-Datei zugreifen.

    
Andrew Collette 12.12.2012, 04:08
quelle

2 Antworten

3
  

Wenn anonyme Leseberechtigungen erteilt werden, kann jeder auf der Welt slave.jar herunterladen und auf die (einfach zu erratenden) URLs auf meinem Server auf die jnlp-Datei zugreifen und sich als Slave verbinden.

Es stellt sich heraus, dass dies eine kritische Sicherheitslücke in Jenkins war:

Ссылка

Als Antwort auf meine Frage scheint der beste Ansatz darin zu bestehen, den gesamten anonymen Lesezugriff zu deaktivieren.

    
Andrew Collette 09.01.2013 22:18
quelle
0

Aus den Kommentaren zu diesem jenkins-Fehler scheint dieses Verhalten (das erlaubt jedem mit Leseberechtigungen) siehe die jnlp-Datei) wurde im Zuge der Korrektur der Sicherheitslücke , und Sie können jetzt den Zugriff auf die jnlp-Datei auf bestimmte Benutzer beschränken.

Ich konnte auch keine Dokumentation über das aktuelle Verhalten finden, aber es ist möglich, einige Hinweise durch

zu erhalten
  1. Widerrufen aller Berechtigungen für "anyhnome"
  2. Versuch, die jnlp-Datei ohne Angabe von Anmeldeinformationen mit wget oder ähnlichem herunterzuladen

Schritt 2. wird eine Antwort "403 verboten" geben, die etwas wie

enthält %Vor%

Die Antwort enthält auch eine JavaScript-Umleitung, daher müssen Sie wget oder eine andere nicht Javascript-fähige Methode verwenden, um sie sehen zu können.

Nach Versuch und Irrtum habe ich festgestellt, dass "hudson.model.Computer.Connect" anscheinend der Berechtigung "Slave Connect" in der Jenkins-Benutzeroberfläche zugeordnet ist.

    
slowdog 13.03.2014 11:38
quelle

Tags und Links