Root-Server Apache absichern


Root-Server Apache absichern

Der Apache Server ist auch ein beliebtes Ziel der Kriminellen.
Um Probleme mit Anwälten und Sicherheitsbehörden zu vermeiden sollte dieser Dienst bestmöglich abgesichert werden!

Die folgenden Hinweise beziehen sich auf einen Apache Server der auf Debian 7(Wheezy) läuft.

Hinweis

Die Konfigurationsdateien liegen bei Debian nicht in einer httpd.conf!

Befehle

Apache-Server neustarten:
# apachectl -k graceful (freundliches Neueinlesen der Konfiguration)
# service apache2 restart (brutales Neueinlesen der Konfiguration)

Apaches Plauderei abstellen

Fehlt eine Datei(z.B. bei der Fehlermeldung 404) wird der Name des http-Servers gefolgt von der Version und des Betriebsystems ausgegeben.
Angreifer können über die angegebenen Versionsnummern gezielt bekannte Sicherheitslücken ausnutzen.

Sicherheitseinstellungen werden bei Debian über /etc/apache2/conf.d/security angepasst:
ServerTokens Full = Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
ServerTokens OS = Apache/2.0.41 (Unix)
ServerTokens Minimal = Apache/2.0.41
ServerTokens Minor = Apache/2.0
ServerTokens Major = Apache/2
ServerTokens Prod = Apache
Sinnvoll ist hier die Einstellung ServerTokens Prod um keine Versionsnummern zu verraten.
Wird Servertokens mit vorangestelltem '#' auskommentiert ist die Darstellung wie bei 'OS'.

ServerSignature Off zeigt zwar unter Fehlerseiten(404error) gar nichts mehr an; diese Einstellung ist aber sinnlos, denn:
curl -I <Server-IP> von einem anderen Server gibt(wenn Port 80 freigegeben ist) trotzdem folgendes aus:
HTTP/1.1 200 OK
Date: Sat, 21 Sep 2013 09:39:24 GMT
Server: Apache
Last-Modified: Fri, 20 Sep 2013 21:27:44 GMT
ETag: "1701e1a-USS-Enterprise1ff"^^
Accept-Ranges: bytes
Content-Length: 2335
Vary: Accept-Encoding
Content-Type: text/html

Automatischen Index deaktivieren

Normalerweise erstellt Apache ein automatisches Inhaltsverzeichnis von Ordnern sofern dort keine index.html vorhanden ist.
Um das zu verhindern müsste man entweder in jedes Unterverzeichnis eine index.html mit entsprechendem Hinweis(hier ist nichts^^) kopieren, oder man stellt es in den Einstellungen von Apache ab:
In /etc/apache2/sites-available/default den Zusatz Indexes entfernen:
<Directory /var/www/>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride None
 Order allow,deny
 allow from all
</Directory>
Dadurch erhält man z.B. beim Versuch /images zu öffnen keinen Index mehr, sondern die Fehlermeldung 403-Forbidden.

Schutz vor POST //cgi-bin/php Angriffen

In Datei /etc/apache2/sites-enabled/000-default folgende Zeilen auskommentieren:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
 AllowOverride None
 Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
</Directory>

Listen IP setzen

Vorgabe ist beim Apache-Server, das er auf ALLES lauscht..
Geändert werden kann dies durch die Datei /etc/apache2/ports.conf
Anstelle der Vorgabe: Listen 80 setzt man die IP des root-Servers davor:Listen 1.2.3.4:80
# service apache2 restart (Neueinlesen der Konfiguration)
# netstat -tpan gibt Auskunft über die Änderung der LOKALEN Adresse des apache-Servers