Plesk 11 Panel mit Client-Zertifikat absichern
Es wäre ja sinnvoll das Plesk-Panel zusätzlich vor Zugriff zu sichern.
Es besteht ja im Apache Web-Server die Möglichkeit einzelne Seiten oder Verzeichnisse über ein SSL Client-Zertifikat abzusichern.
Wie mache ich das aber mit Plesk und seinem Lighttpd, da bin ich hier im Forum und auf der Seite von Huschi auf mod_proxy gestoßen.
Ja das ist unser Freund.
Hier mal ein kleines Code-Beispiel
Ich habs mal ein bischen bunt gemacht wegen der vielen Komentare, die anzupassenden Code-Teile sind rot markiert.
Das ganze habe ich in die Datei zzz_plesk.conf unter /etc/apache2/conf.d abgespeichert.
Apache neu starten.
Jede Domain kann jetzt das Plesk-Panel unter der Subdomain plesk.domain.de erreichen.
Es erfolgt eine automatische Weiterleitung auf https://plesk.domain.de inklusive Abfrage der ensprechenden Werte aus dem Client-Zertifikat.
Über update.domain.de kommt man dann direkt zum Update-Manager.
Das Meckern der Browser das das SSL-Zertifikat nicht zur Domain passt bleibt natürlich. Damit dies nicht mehr errscheint muß man das ganze nur an eine feste Domain mit passendem Zertifikat binden.
Für Anregungen und Hinweise bin ich Dankbar
Viel Spaß beim probieren.
Gruß
Steffen
P.S. mein System: Debian 6.0.6 / Plesk 11.0.9 / Apache/2.2.16 (Debian)
Es wäre ja sinnvoll das Plesk-Panel zusätzlich vor Zugriff zu sichern.
Es besteht ja im Apache Web-Server die Möglichkeit einzelne Seiten oder Verzeichnisse über ein SSL Client-Zertifikat abzusichern.
Wie mache ich das aber mit Plesk und seinem Lighttpd, da bin ich hier im Forum und auf der Seite von Huschi auf mod_proxy gestoßen.
Ja das ist unser Freund.
Hier mal ein kleines Code-Beispiel
Code:
# Konfiguration um Plesk-Panel mit Client-Zertifikat zu sichern
# Konfiguration Subdomain plesk* Port:80 mit Automatischer Weiterleitung auf Port:443
[COLOR="RoyalBlue"]<VirtualHost [COLOR="Red"]IP[/COLOR]:80 >
ServerAlias plesk.*
RewriteEngine on
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>[/COLOR]
# Konfiguration Subdomain update* für Port:443
[COLOR="RoyalBlue"]<IfModule mod_ssl.c>
<VirtualHost [COLOR="Red"]IP[/COLOR]:443 >
ServerAlias plesk.*
SSLEngine on
SSLCertificateFile /opt/psa/var/certificates/[COLOR="Red"]cert-xxx[/COLOR]
SSLCACertificateFile /opt/psa/var/certificates/[COLOR="Red"]cert-xxx[/COLOR]
[/COLOR]
### Prüfung auf Client-Zertifikat
# SSLRequire %{SSL_CLIENT_S_DN_Email} Email des Zertifikatinhabers
# SSLRequire %{SSL_CLIENT_S_DN_CN} Name des Zertifikates
# SSLRequire %{SSL_CLIENT_S_DN_O} Organisation
# SSLRequire %{SSL_CLIENT_S_DN_OU} Abteilung
# es gibt hier noch viel mehr werte und Verknüpfungsmöglichkeiten
# für mehrere Werte :
# SSLRequire %{SSL_CLIENT_S_DN_Email} in {"Email1", "Email2" ...}
[COLOR="RoyalBlue"]<Location />
SSLVerifyClient require
SSLVerifyDepth 5
SSLRequire %{SSL_CLIENT_S_DN_Email} eq "[COLOR="Red"]beispiel@beispiel.de[/COLOR]"
</Location>
ErrorLog "/var/log/apache2/plesk_error"
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost Off
SSLProxyEngine On
[/COLOR]
# Zugriffsregeln für Proxy
[COLOR="RoyalBlue"]<Proxy *>
Order Deny,Allow
Deny from all
Allow from all
</Proxy>[/COLOR]
# Weiterleitung auf Subdomain update wenn 'update und upgrade'
[COLOR="RoyalBlue"]<Location /admin/update/product/>
RewriteEngine on
RewriteRule ^ https://update.%{SERVER_NAME}/ [R=301,L]
</Location>[/COLOR]
# Weiterleitung auf localhost über mod_proxy
[COLOR="RoyalBlue"]
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</IfModule>
</VirtualHost>
</IfModule>
[/COLOR]
# Konfiguration Subdomain update* Port:80 mit Automatischer Weiterleitung auf Port:443
[COLOR="RoyalBlue"]<VirtualHost [COLOR="Red"]IP[/COLOR]:80 >
ServerAlias update.*
RewriteEngine on
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>
[/COLOR]
# Konfiguration Subdomain update* für Port:443
[COLOR="RoyalBlue"]
<IfModule mod_ssl.c>
<VirtualHost [COLOR="Red"]IP[/COLOR]:443 >
ServerAlias update.*
SSLEngine on
SSLCertificateFile /opt/psa/var/certificates/[COLOR="Red"]cert-xxx[/COLOR]
SSLCACertificateFile /opt/psa/var/certificates/[COLOR="Red"]cert-xxx[/COLOR]
[/COLOR]
### Prüfung auf Client-Zertifikat
# SSLRequire %{SSL_CLIENT_S_DN_Email} Email des Zertifikatinhabers
# SSLRequire %{SSL_CLIENT_S_DN_CN} Name des Zertifikates
# SSLRequire %{SSL_CLIENT_S_DN_O} Organisation
# SSLRequire %{SSL_CLIENT_S_DN_OU} Abteilung
# es gibt hier noch viel mehr werte und Verknüpfungsmöglichkeiten
# für mehrere Werte :
# SSLRequire %{SSL_CLIENT_S_DN_Email} in {"Email1", "Email2" ...}
[COLOR="RoyalBlue"]<Location />
SSLVerifyClient require
SSLVerifyDepth 5
SSLRequire %{SSL_CLIENT_S_DN_Email} eq "[COLOR="Red"]beispiel@beispiel.de[/COLOR]"
</Location>
ErrorLog "/var/log/apache2/plesk_error"
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost Off
SSLProxyEngine On
[/COLOR]
# Zugriffsregeln für Proxy
[COLOR="RoyalBlue"] <Proxy *>
Order Deny,Allow
Deny from all
Allow from all
</Proxy>
ProxyPass / https://localhost:8447/
<Location />
ProxyPassReverse /
</Location>
</IfModule>
</VirtualHost>
</IfModule>[/COLOR]
Ich habs mal ein bischen bunt gemacht wegen der vielen Komentare, die anzupassenden Code-Teile sind rot markiert.
Das ganze habe ich in die Datei zzz_plesk.conf unter /etc/apache2/conf.d abgespeichert.
Apache neu starten.
Jede Domain kann jetzt das Plesk-Panel unter der Subdomain plesk.domain.de erreichen.
Es erfolgt eine automatische Weiterleitung auf https://plesk.domain.de inklusive Abfrage der ensprechenden Werte aus dem Client-Zertifikat.
Über update.domain.de kommt man dann direkt zum Update-Manager.
Das Meckern der Browser das das SSL-Zertifikat nicht zur Domain passt bleibt natürlich. Damit dies nicht mehr errscheint muß man das ganze nur an eine feste Domain mit passendem Zertifikat binden.
Für Anregungen und Hinweise bin ich Dankbar
Viel Spaß beim probieren.
Gruß
Steffen
P.S. mein System: Debian 6.0.6 / Plesk 11.0.9 / Apache/2.2.16 (Debian)
Last edited by a moderator: