In dem How-To hier zeige ich Euch, wie man den lästigen „X-Powered-By: PleskLin“ HTTP-Header bei von Plesk gehosteten Webseiten los wird – und zwar mit Hilfe eines Custom Templates.
1. Worum gehts überhaupt?
Es geht darum, potentiellen Angreifern so wenig wie möglich Informationen über seine Webseite anzubieten. Wer einfach mal die in allen Browsern vorhandene Netzwerkanalyse auf Plesk gehostete Webseiten loslässt, stellt in den Antwort-Headern des Servers genau diese in meinen Augen völlig sinnlose Zusatzinfo „X-Powered-By: PleskLin“ fest.
2. Ok, wie werd ich diesen Mist wieder los?
Es gibt da mehrere Wege, ich wähle hier aber den sauberen Weg, der auch von Parallels selber empfohlen wird: Wir erstellen sogenannte „Custom Templates“. Diese Custom Templates (oder auf deutsch: benutzerdefinierte Templates) werden anstelle der Default-Templates verwendet und auch bei Plesk Updates nicht überschrieben. Diese Anleitung bezieht sich primär auf Linux/Ubuntu, ich denke aber dass man das problemlos auch auf anderen Betriebssystemen hinkriegt. Legen wir los…
2.1. Custom Template erstellen
Custom Template Ordner erstellen, falls noch nicht vorhanden:
mkdir /usr/local/psa/admin/conf/templates/custom/domain -p
relevante Dateien aus dem Default Template kopieren:
cp /usr/local/psa/admin/conf/templates/default/server.php /usr/local/psa/admin/conf/templates/custom/ cp /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/
2.2. Anpassen des Custom Templates
In den beiden, in den Custom Template Ordner kopierten Dateien (server.php und nginxDomainVirtualHost.php) jeweils nach „PleskLin“ suchen und anpassen.
2.2.1. server.php (zuständig für den Apache)
Betreffenden Abschnitt einfach löschen (war bei mir Zeile 58-60):
<IfModule mod_headers.c> Header add X-Powered-By PleskLin </IfModule>
2.2.2. nginxDomainVirtualHost.php (nginx)
Betreffende Zeile löschen (bei mir Zeile 77):
add_header X-Powered-By PleskLin;
2.3. Plesk Webserver Konfigurationen neu erstellen lassen
Zum Schluss müssen die Konfigurationen für die Webserver nginx und Apache2 neu erstellt werden:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
Falls das noch nicht reichen sollte, evt die beiden Webserver nochmal neustarten:
service apache2 restart && service nginx restart
Nun sollte der HTTP-Header nicht mehr mitgesandt werden.
Plesk schreibt auch:
Cache-Control: max-age=0, no-cache
in jeden Header.
Wie kann man das abstellen?
In Plesk 12 unter „Webserver-Einstellungen“ des vHosts einfügen:
für apache2 (http://httpd.apache.org/docs/current/mod/mod_expires.html):
# Expire-Settings
# turn on the module for this directory
ExpiresActive on
# set default
ExpiresDefault "access plus 1 months"
# cache text-files
ExpiresByType text/html "access plus 3 days"
ExpiresByType text/plain "access plus 3 days"
# cache common graphics
ExpiresByType image/jpg "access plus 3 months"
ExpiresByType image/gif "access plus 3 months"
ExpiresByType image/jpeg "access plus 3 months"
ExpiresByType image/png "access plus 3 months"
ExpiresByType image/tiff "access plus 3 months"
ExpiresByType image/svg+xml "access plus 1 months"
ExpiresByType image/x-icon "access plus 1 months"
ExpiresByType image/vnd.microsoft.icon "access plus 3 months"
ExpiresByType image/x-ms-bmp "access plus 3 months"
ExpiresByType application/font-sfnt "access plus 3 months"
ExpiresByType application/vnd.ms-fontobject "access plus 3 months"
ExpiresByType application/font-woff "access plus 3 months"
falls nginx als Frontend-Server genutzt wird (Beispiel):
location ~* \.(js|css|htm|html|xhtml|xml|json)$ {
try_files $uri =404;
expires 2w;
add_header Pragma public;
add_header Cache-Control public;
access_log off;
}
Werte und Dateitypen sind jetzt nur beispielhaft, Prinzip sollte aber klar sein.
Fehlermeldung
/usr/local/psa/admin/bin/httpdmng –reconfigure-all
Execution failed.
Command: httpdmng
Arguments: Array
(
[0] => –reconfigure-server
[1] => -no-restart
)
Details: [2015-12-19 22:39:19] ERR [util_exec] proc_close() failed [‚/opt/psa/admin/bin/apache-config‘ ‚-t‘] with exit code [1]
[2015-12-19 22:39:23] ERR [util_exec] proc_close() failed [‚/opt/psa/admin/bin/apache-config‘ ‚-t‘] with exit code [1]
[2015-12-19 22:39:25] ERR [panel] Apache config (14505611560.99775700) generation failed: Template_Exception: Syntax error on line 60 of /etc/apache2/plesk.conf.d/server.conf:
Too many arguments to directive
file: /opt/psa/admin/plib/Template/Writer/Webserver/Abstract.php
line: 75
code: 0
Syntax error on line 60 of /etc/apache2/plesk.conf.d/server.conf:
Too many arguments to directive
Hab es genau so gemacht wie es hier steht. Plesk 12.
Wo ist ein Fehler? Ich vermute er will nun die Werte aus default und dem custom Ordner und hat dadurch natürlich doppelte Einträge.
Nein, soweit ich weiß benutzt Plesk einfach die Dateien im Custom-Ordner als Ersatz zum Default-Ordner, die nicht kopierten Dateien werden vom Default-Ordner weiter benutzt. Benutze das z.B. auch zur Anpassung der TLS/SSL-Einstellungen. Sicher, dass du nicht irgendwo nen Fehler gemacht hast? Notfalls überschreib zum Testen deine Custom-server.php nochmal mit der Default-server.php, mit der sollte ein „/usr/local/psa/admin/bin/httpdmng –reconfigure-all“ auf jeden Fall gehen – wenn nicht, läuft noch irgendwas anderes aufm Server schief (evt. eine inkorrekte vHost-Konfig).
Hi Oli,
vielen Dank für den Beitrag. Hat mir wirklich sehr geholfen!
Bisher konnte ich keine Anleitung für die Custom Templates finden. Du erwähnst, dass Parallels selbst diese Lösung vorschlägt: Gibt’s eine Url dorthin?
Viele Grüße,
Marco
Plesk Custom Templates
Danke, hat mir sehr geholfen
Hi Oli,
super erklärt! Kurz und knapp mit den relevanten Schritten! Danke