Schlagwort-Archive: GNU/Linux

Unixähnliche Mehrbenutzer-Betriebssysteme, die auf dem Linux-Kernel und wesentlich auf GNU-Software basieren. Wie CentOS, Debian, Ubuntu Fedora.

Apache ServerSignatur deaktivieren

ServerSignatur und ServerTokens bei Apache und Nginx unterdrücken, kein HTTP-Server-Header für PHP

Es gibt zahlreiche Möglichkeiten, wie Webseiten Sicherheitsbedrohungen ausgesetzt werden. Informationen in der ServerSignatur and ServerTokens sind für Systeme erhöhte Risiken und können gegen sie eingesetzt werden.

Die ServerSignatur und ServerTokens liefert wichtige Information über den Server mit den Erweiterungen und das Betriebssystem. Bei einem Apache Server auf Debian GNU/Linux wird die Apache Versionsnummer und Betriebssysteminformation in der HTTP Server Header Signatur angezeigt.

$ wget --server-response --spider http://www.foo.com/index.php
Spider mode enabled. Check if remote file exists.
--2020-12-12 14:41:06--  http://www.foo.com/index.php
Resolving www.foo.com (www.foo.com)... 192.168.123.45
Connecting to www.foo.com (www.foo.com)|192.168.123.45|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 301 Moved Permanently
  Date: Sat, 12 Dec 2020 13:41:06 GMT
  Server: Apache/2.4.35 (Debian) PHP/7.3.5~deb10u2 OpenSSL/1.1.1i
  Location: https://www.foo.com/index.php
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Content-Type: text/html; charset=iso-8859-1
Location: https://www.foo.com/index.php [following]
Spider mode enabled. Check if remote file exists.

Diese im HTTP Server Header angezeigte Information bei Zeile 10 gibt aufschluss über die Webserver Versionsnummer und die PHP-Version, die OpenSSL Version für Transport Layer Security sowie das Betriebssystem.

Die ServerSignatur und ServerTokens können vertrauliche Informationen zu den auf dem Webserver ausgeführten Softwareversionen enthalten. Wird eine Seite auf dem Server nicht gefunden, sendet der Server dem Client eine Fehlerseite, dabei erscheint im Browser die Seite, Not Found.

Apache ServerSignatur deaktivieren
Abbildung: Browser Seite mit HTTP-Statuscode 404 und Serversignatur

Ein toter Link wird mit dem HTTP-Statuscode 404 dem Browser zurückgegeben, dazu werden noch weitere Informationen über den Webserver sowie die verwendete Version bekanntgegeben.

Es wird empfohlen die Serversignatur zu deaktivieren, wenn das System vor offenen Bedrohungen geschützt werden soll. In diesem Tutorial wird gezeigt, wie die Serversignatur unterdrückt werden kann.

Apache HTTP ServerSignature und ServerTokens bei Debian deaktivieren

Unter Debian 10 (buster) wird die Konfiguration der Serversignatur in der Datei security.conf vorgenommen.

$ vi /etc/apache2/conf-available/security.conf

Die Standard Einstellung bei Debian 10 (buster) und auch bei Ubuntu für ServerSignature ist On und ServerTokens ist Full. Daktivieren lassen sich diese wie folgt.

ServerTokens Prod
ServerSignature Off

Die änderung der Apache Webserver Konfiguration übermehmen.

$ systemctl restart apache2.service

Apache HTTP ServerSignature und ServerTokens bei CentOS deaktivieren

Bei CentOS (RedHat) wird die änderung der ServerSignature und ServerTokens in der Apache Konfigurationsdatei httpd.conf vorgenommen.

$ vi /etc/httpd/conf/httpd.conf
...
ServerTokens Prod
ServerSignature Off
..

Deaktivierung der HTTP-ServerSignature und ServerTokens für CentOS übernehmen.

$ systemctl restart httpd.service

Nach der deaktivierung der ServerSignature und ServerTokens wird diese in der HTTP Server Header Ausgabe nicht mehr angezeigt. Die überprüfung der änderung kann mit wget oder hier gemacht werden.

$ wget --server-response --spider http://www.foo.com/index.php
Spider mode enabled. Check if remote file exists.
--2020-12-12 15:15:33--  http://www.foo.com/index.php
Resolving www.foo.com (www.foo.com)... 192.168.123.45
Connecting to www.foo.com (www.foo.com)|192.168.123.45|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 301 Moved Permanently
  Date: Sat, 12 Dec 2020 14:15:33 GMT
  Server: Apache
  Location: https://www.foo.com/index.php
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Content-Type: text/html; charset=iso-8859-1
Location: https://www.foo.com/index.php [following]
Spider mode enabled. Check if remote file exists.

Das deaktivieren der Serversignatur kann auch mit einer .htaccess-Datei erreicht werden, diese wird falls nicht bereits vorhanden, in der Docroot erstellt.

$ echo -e "ServerTokens Prod\nServerSignature Off" >> .htaccess

PHP-Version unterdrücken im HTTP Server Header

Die Ausgabe der PHP Versionsnummer wird bei Debian 10 (buster) wie folgt in der Datei php.ini unterdrückt.

$ vi /etc/php/7.4/apache2/php.ini
...
expose_php = Off
..

Bei CentOS (RedHat) wird der PHP Version Header unterdrückung in der php.ini unter folgendem Pfad vorgenommen.

$ vi /etc/php.ini
...
expose_php = Off
..

Apache HTTP-Response-Header

Die Apache ServerTokens Direktive hat die folgenden möglichen Werte, die an Clients gesendet werden, wenn der spezifische Wert festgelegt wird.

ServerTokens Prod[uctOnly]
    Der Server sendet (zB): Server: Apache
ServerTokens Major
    Der Server sendet (zB): Server: Apache/2
ServerTokens Minor
    Der Server sendet (zB): Server: Apache/2.0
ServerTokens Min[imal]
    Der Server sendet (zB): Server: Apache/2.0.41
ServerTokens OS
    Der Server sendet (zB): Server: Apache/2.0.41 (Unix)
ServerTokens Full (oder nicht angegeben)
    Der Server sendet (zB): Apache/2.4.37 (Debian) PHP/7.3.5~deb10u2 OpenSSL/1.1.1

Diese Einstellung gilt für den gesamten Server und kann nicht auf Virtual-Host-Basis aktiviert oder deaktiviert werden.

Nginx HTTP Server_tokens OFF

Für den Nginx Webserver ist die Datei nginx.conf zu editieren.

$ vi /etc/nginx/nginx.conf

http {
...
    server_tokens off;
...

Die deaktivierung der Nginx Serversignatur übernehmen.

$ systemctl restart nginx.service

Gebietsschema in Linux festlegen mit localectl

Gebietsschema, Systemgebietsschema mit localectl und locale in Linux abfragen und festlegen

Gebietsschema in Linux festlegen mit localectl

Das Gebietsschema in Linux festlegen mit localectl. Jedes Gebietsschema besteht aus einer Reihe von Umgebungsvariablen, um die Sprach-, Länder- und Zeichenkodierung für Anwendungen und in der Shell-Sitzung auf einem Linux-System zu definieren. Diese Umgebungsvariablen werden von Systembibliotheken und länderspezifischen Anwendungen auf dem System verwendet.

Systemgebietsschema mit Uhrzeit, Datumsformat, Zahlen und Währung

Das Gebietsschema wirkt sich auf die Uhrzeit und das Datumsformat aus, den ersten Wochentag, Zahlen, Währung und viele weitere Werte, die entsprechend der Sprache oder Region (Land) formatiert sind. Unter Linux kann man ein Gebietsschema mit dem Dienstprogramm localectl und locale abfragen und festlegen.

Die Dienstprogramme locale und localectl

Das Dienstprogramm locale und localectl liefert Informationen zum aktuell installierten Gebietsschema und ändert diese bei bedarf.

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Liste aller verfügbaren Gebietsschema ausgeben.

$ locale -a
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER@saaho
aa_ER.utf8
aa_ER.utf8@saaho
aa_ET
aa_ET.utf8

Linux Gebietsschema mit localectl festlegen

Soll das Gebietsschema geändert und festgelegt werden, wird der Befehl update-locale und localectl verwendet. Mit der Variable LANG kann das Gebietsschema für das gesamte System festgelegt werden.

Der folgende Befehl setzt LANG auf de_DE.UTF-8

$ sudo localectl set-locale LANG=de_DE.UTF-8

Gebietsschema für Benutzer festlegen

Um ein Gebietsschema für einen einzelnen Benutzer festzulegen, kann man einfach die Datei ~/.bash_profile öffnen und die folgenden Zeilen hinzufügen.

LANG = "de_DE.utf8"
Export LANG

Debian dpkg-reconfigure locales

Unter Debian Linux kann man ein Gebietsschema mit dem Dienstprogramm locale abfragen und festlegen. Zudem bietet Debian zum festlegen des Systemgebietsschema das Diensprogramm dpkg-reconfigure an.

$ sudo dpkg-reconfigure locales

Die Gebietsschemaeinstellungen befinden sich in den folgenden Dateien.

  • /etc/default/locale – Ubuntu/Debian
  • /etc/locale.conf – CentOS/RHEL

Diese Dateien können auch manuell mit einem bevorzugten Befehlszeileneditoren wie Vim oder Nano bearbeitet werden, um das Systemgebietsschema zu konfigurieren.

Dei Manpages locale localectl

$ man locale
$ man update-locale
$ man localectl

Fazit

In diesem Tutorial wird gezeigt, wie man ein Gebietsschema in Linux mit localectl ändern und festlegen kann. Jedes Gebietsschema besteht aus einer Reihe von Umgebungsvariablen, um die Sprach-, Länder- und Zeichenkodierung für Anwendungen und Shell-Sitzung auf einem Linux-System zu definieren.

Mit dem Dienstprogramm localectl können alle notwendigen Informationen abgefragt und Einstellungen getroffen werden, um das Gebietsschema und das dazu passende Tastaturlayout einzustellen. Dies ist dann nötig, wann etwa bei der Installation falsche Einstellungen getroffen worden sind und/oder durch Updates oder Software-Installationen die Voreinstellungen verlorengegangen sind. localectl ist auf den meisten Linux-Systeme vorinstalliert und wird ausschließlich über das Terminal bedient.