Sicherheit bei Apache mit proxy_http?

  • Hallo,


    ich habe auf meinem vServer (Debian Squeeze) ein ci-tool laut folgender Anleitung installiert:
    https://wiki.jenkins-ci.org/di…talling+Jenkins+on+Ubuntu


    D.h. es läuft jetzt ein Apache httpd mit proxy u. proxy_http mit den Standard-Einstellungen. Ein VirtualHost liefert auf einer subdomain auf port 80 die Seiten des tools von Port 8080 aus.


    Da mir tiefergehende Kenntnisse zu proxy fehlen, möchte ich gern folgende Frage stellen:


    Kann ich das so auf einem öffentlich erreichbaren Server laufen lassen oder sollte ich im Interesse der Sicherheit weitere Anpassungen vornehmen?


    Schönen Gruß,
    Lars

  • Du solltest mod_proxy in der Apache-Hauptkonfiguration komplett abschalten. Normalerweise ist das auch schon so der Fall, wenn man es installiert. Du hast dazu wahrscheinlich in der /etc/apache2/mods-enabled/proxy.conf folgende Einträge (bitte überprüfe das mal):


    Code
    ProxyRequests Off
    
    
    
    
    <Proxy *>
        AddDefaultCharset off
        Order deny,allow
        Deny from all
    </Proxy>

    Ansonsten sollten die Einstellungen soweit OK sein.


    Du kannst mod_proxy theoretisch noch auf die Ziel-URL einschränken, aber durch ProxyRequests Off und nur einer ProxyPass-Direktive ist das effektiv schon der Fall:


    Code
    [FONT=monospace]<Proxy http://localhost:8080/>
        Order deny,allow
        allow from all
    </Proxy>[/FONT]


    (dazu noch den <Proxy *>-Block rauswerfen oder auf deny from all setzen)


    Du kannst ja zum Testen einfach mal deinen Server mit Port 80 im Browser als Proxy eintragen und ausprobieren, ob Du z.B. noch www.google.com aufrufen kannst ;)


    Ausserdem solltest Du noch den Zugriff von aussen auf Port 8080 blockieren (z.B. per Firewall oder den Jenkins nur auf 127.0.0.1 lauschen lassen). Das ist zwar nicht unbedingt nötig, aber wenn Du auch über den Proxy darauf zugreifen kannst, gibt es keinen Grund, 8080 noch offen stehen zu lassen.


    btw: Gratulation zur Installation von Jenkins ;)

  • Hallo Seb,


    vielen Dank für Deine Antwort!


    Die Datei /etc/apache2/mods-enabled/proxy.conf ist praktisch leer. Sprich es ist alles auskommentiert:


    Entspricht dies einem "ProxyRequests Off" oder sollte ich das anpassen?


    In der conf für die Subdomain steht folgendes:

    Code
    [...]
    	ProxyRequests Off
    	<Proxy *>
    		Order deny,allow
    		Allow from all
    	</Proxy>
    	ProxyPreserveHost on
    [...]


    Zitat von Seb2704;36905


    Ausserdem solltest Du noch den Zugriff von aussen auf Port 8080 blockieren (z.B. per Firewall oder den Jenkins nur auf 127.0.0.1 lauschen lassen). Das ist zwar nicht unbedingt nötig, aber wenn Du auch über den Proxy darauf zugreifen kannst, gibt es keinen Grund, 8080 noch offen stehen zu lassen.


    Das ist eine gute Idee, ich werde mich mal daran versuchen.


    Zitat von Seb2704;36905


    btw: Gratulation zur Installation von Jenkins ;)


    Dankeschön! :)
    Jenkins ist schon sehr praktisch. In Kombination mit gitolite und Nexus habe ich einen kompletten Build-Stack für meine Projekte.


    Nur das Theater mit Hudson finde ich schade. Privat habe ich mich erst einmal für Jenkins entschieden, da hier mehr plugins durch die community bereitgestellt werden. Aber ich beobachte nebenher, was sich bei Hudson so tut. (speziell die contributions für Maven3).


    Bis jetzt hatte ich Jenkins als .war im Tomcat mit einem ajp13 worker laufen, aber so kann ich updates mittels aptitude einspielen und muss nicht immer das .war laden, umbenennen und neu deployen.
    Und Jenkins reagiert jetzt auch gefühlt schneller.


    Schönen Gruß,
    Lars

  • Zitat von Seb2704;36919

    Die proxy.conf solltest Du auf jeden Fall anpassen. Wenn ich das richtig interpretiere, ist der Default "ProxyRequests On", was Du nicht willst.


    Ich habe jetzt den Inhalt von Deinem ersten Post eingetragen und den httpd neu gestartet.


    Jenkins und die normalen Webseiten funktionieren weiter.


    Wenn ich im Browser die IP des vServers als Proxy eintrage, lande ich immer auf der Default-Seite des httpd. Das scheint damit also auch nicht missbraucht werden zu können.


    Vielen Dank!
    Lars