Sichere Verbindung zu PD-Admin per SSL

  • ###
    ### Achtung, diese Anleitung ist veraltet. Bitte gehen Sie wie in
    ### http://www.pdadmin-forum.de/th…p?threadid=4241#post21673
    ### beschrieben vor.
    ###



    Bei der Standardinstallation wird über Port 80 auf das Interface zugegriffen. Das daß nicht das Wahre ist sollte klar sein, so klar wie die Paßwörter übermittelt werden, im Klartext!!
    Um hier Abhilfe zu schaffen und den Zugriff generell auf eine verschlüsselte Verbindung zu bringen, dazu dieses kleine HowTo.


    Zuerst brauchen wir ein eigenes Certificate, ein sogenanntes „self-signed certificate“!
    In der Konsole geben wir folgende Befehle ein:


    Code
    openssl genrsa -out server.key 1024
    openssl req -new -key server.key -out server.csr
    openssl x509 -req -days 2000 -in server.csr -signkey server.key -out server.crt


    Damit haben wir im Root- Verzeichnis zwei Certificate, den server.key und das server.csr.
    Diese beiden Dateien kopieren wir z.B. in das Verzeichnis /var/www/cert/
    Ich habe die Gültigkeit auf 2000 Tage gestellt, man will ja nicht jedes Jahr ein neues Certificate erstellen.
    Das Certificate ist die Grundvoraussetzung für eine Verschlüsselung, die anderen Voraussetzungen stellen wir in der /etc/apache/httpd.conf ein


    Zerst müsssen wir dem Indianer sagen das er nicht nur auf Port 80 lauscht sondern auch auf den Port 443!
    In der httpd.conf (und natürlich auch in der httpd.conf-template) stellen wir folgendes ein:


    Port 80
    Listen 80
    Listen 443


    Mit diesem Eintrag hört der Indianer nun auch auf den Port 443 (der Port ist natürlich frei wählbar z.B. 444, 88 usw.)



    Der nächste Eintrag behandelt den virtuellen Host! (Server IP natürlich richtig setzen)


    Code
    <VirtualHost xxx.xxx.xxx.xxx:80>
    DocumentRoot /var/www/
    ServerName xxx.xxx.xxx.xxx
    ServerAdmin admin@ihre-domain.de
    </VirtualHost>


    Im ersten VHost Eintrag werden die Rewrite ausdokumentiert oder gelöscht, wir wollen ja erreichen, dass unsere Kunden „gezwungen“ werden auf unserem Server nur mit einer verschlüsselter Verbindung auf das Interface zu zugreifen. Auch ist ab jetzt das PhPMyAdmin- Interface für unsere Kunden auch nur noch über SSL erreichbar. (Alias /phpmyadmin/ /var/www/phpmyadmin/) unter den zweiten VHost Eintrag.



    Jetzt brauchen wir nur noch den Indianer mit „apachectl graceful“ neu zu starten und das PD-Admin Interface ist ab sofort nur noch über https://admin.ihre.domain.de/customer oder https://ihre-domain.de/customer/ (administrator) zu erreichen. Natürlich auch über https://xxx.xxx.xxx.xxx/administrator (customer) erreichbar. Auf Port 80, also den unverschlüsselten Port ist das Interface nicht mehr zu erreichen.
    Soll das Interface unseres Server auch auf Port 80 erreichbar sein, so muß der erste Eintrag um...
    ------------------------------------------------------
    Alias /customer /opt/pdadmin/www/customer
    Alias /administrator /opt/pdadmin/www/administrator
    RewriteEngine On
    RewriteRule /customer/sid/[a-z0-9]+/(.*) /opt/pdadmin/www/customer/$1
    RewriteRule /administrator/sid/[a-z0-9]+/(.*) /opt/pdadmin/www/administrator/$1
    ------------------------------------------------------
    erweitert werden. Damit ist allerdings wieder das Interface über den unverschlüsselten Port 80 erreichbar und unsere Arbeit ist zum Absurdum geworden.
    Anzumerken ist hier noch... alle Änderungen auch in der „httpd.conf-template“ durchführen... sonst ist beim Anlegen einer neuen Domain alles weg... was man auch sogleich im PD-Admin Interface erfährt (https -Verbindung wird unterbrochen).


    Mit diesen kleinen Eintragen werden unsere Daten verschlüsselt übertragen und setzt die Sicherheit unseres Server ein Zacken höher.


    Quellenangabe: Sicherer Server mit Linux (O´Reilly, ISBN 3-89721-139-4)
    Sicherheits Kochbuch (o´Reilly, ISBN 3-89721-371-0)
    Internet


    -------------


    Vielen Dank an dieser Stelle an BerndK der dieses HowTo erstellt hat.


    mfg Tim

  • Es ist allerdings sinnvoll, den Apachen nicht mit graceful zu restarten, sondern ihn zu stoppen und dann zu starten.


    Hintergrund:
    Nur wenn der Apache komplett gestoppt wird, liest er die Server-Zertifikate ein. Anderenfalls gibt es eine Fehlermeldung im error_log, die darauf hinweist.

  • Nächstes Problem: ;(
    Ich habe die Certificate erzeugt, wie beschrieben in die Ordner kopiert und ab dem Zeitpunkt komme ich nicht mehr auf den Server. weder per ftp, noch über die Konsole. Webseiten lassen sich auch nicht mehr aufrufen. Kommt überall ein timeout..


    Gibt es noch einen Weg an die Dateien ran zu kommen?

  • Du hast ja hoffentlich ein Backup der Dateien gemacht und kannst sie jetzt wieder zurück kopieren, wenn nicht im pd-admin Backup (wenn eingerichtet) ist ja auch alles drin. Dann startest Du am besten alles mal neu, dann sollte es wieder laufen.
    Normalerweise sollte aber FTP bzw. Konsole damit gar nichts zu tun haben, denn Du hast ja lediglich am Apachen gearbeitet.