Einleitung
Leider gibt es nie einen Garant für absolute Sicherheit! Es ist daher notwendig zu wissen, dass ein Hacker immer 1 Schritt voraus ist und niemals auf einen Patch wartet. Vor Scriptkiddys muss man weniger Angst haben, da diese keine Exploits selbst schreiben können.
Updates
Um euren Apache zu beginn schon etwas sicherer zu machen als bei einer Standard Installation, müsst ihr stehts die aktuellste Version haben. Die aktuelleste Version findet ihr hier:
Versteckspiel
Verstecken sie bei Möglichkeit alle Versionsnummern und sonstigen Informationen welche darauf schliessen lassen welche Version sie von Apache oder den verwendeten Modulen aktiviert haben. Die geschieht ganz einfach mit folgendem Befehl in eurer httpd.conf
ServerSignature Off ServerTokens Prod
ServerSignaturen erscheinen bei Apache gerenderten Webseiten
ServerTokens erscheint im HTTP Header im Feld Server:
Für geübte ist es auch möglich den Servertoken in den Sources vor dem kompilieren zu ändern.
Der Indianer braucht seine eigenen Rechte
Viele standard Installationen, installieren Apache mit dem User "nobody" und auch der Gruppe "nobody". Das Problem liegt auf der Hand. Wenn der Apache und ein Mailserver mit der Gruppe "nobody" gestartet wird, und der Apache Server oder der Mailserver geknackt wird, sind beide Server gleichermassen schlimm betroffen. Dies kann man einfach umgehen indem man dem Apache Server eine eigene UID/GID gibt.
User apache Group apache
Zugriff?
Kontrollieren sie die Zugriffsrechte vom Apache, damit eine PHP Applikation (oder sonstiges) keinen Zugriff auf Verzeichnisse unterhalb des Webroots hat.
<Directory /> Order Deny,Allow Deny from all Options None AllowOverride None </Directory> <Directory /web> Order Allow,Deny Allow from all </Directory>
Achtung: wir haben "Options None" und "AllowOverride None" eingestellt. Dies setzt voraus, das für jedes Directory, welches eine Option oder einen Override braucht es explizit gesetzt werden muss.
Optionen ausschalten
Nicht nur um Resourcen zu sparen sondern auch aus Sicherheitsgründen sollten nur die Optionen verwendet werden, welche auch wirklich gebraucht werden. Deshalb fügt ihr einem Virtualhost folgende Options hinzu
Options -ExecCGI -FollowSymLinks -Indexes -Includes
.htaccess Support
Falls du Overrides brauchst, stell vorher sicher das diese nicht heruntergeladen oder geändert werden können. Eine zusätzliche Sicherheit bietet die .htaccess umzubenennen und statt dessen als Beispiel ".helloworld" zu nehmen. Zusätzlich kann man noch eine Sperre für ".ht*" Dateien erstellen. Hier noch ein Beispiel
AccessFileName .helloworld
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
Hmmmmmmm viele werden mir jetzt wahrscheinlich den Kopf abreissen und sagen mod_security macht nur Probleme und führt zu nichts. Zudem habe mann eine starke Leistungseinbusse.
Nun bei einem Punkt kann ich zustimmen. Mod_security mit allen Rules ist wirklich langsam. Man hat aber wie überall die möglichkeit durch Regular Expressions, seine eigenen Filter zu erstellen die den eigenen Webserver mehr schützen.
Module Friedhof
Nicht gebrauchte Module kann man getrost abstellen. Dies steigert die Performance
und nimmt einige Last von unserm Indianer.in der httpd.conf findet ihr eine Linie die sagt LoadModule. Um Module zu
deaktivieren, könnt ihr einfach an den beginn der Linie ein # hinmachen.
Hier seht ihr noch ein paar Module die typischerweise geladen werden
mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex.
Root Access...
Kontrollieren sie bitte ob nur root die Berechtigung hat um auf die Apache Config und die Apache Binarys zuzugreifen
chown -R root:root /usr/local/apache chmod -R o-rwx /usr/local/apache
Timeout Value
Normalerweise ist das Timeout Value bei 300 Sekunden. Dies kann fatale Folgen bei einer DoS (Denial of Service) Attacke haben. Ändern sie diesen Wert deshalb auf 15-45...
Timeout 45
Grossmäuler stopfen
Apache hat von Haus aus viele Möglichkeiten anfragen zu limitieren. Ein wichtiger Punkt hier ist die
"LimitRequestBody" Direktive. Normalerweise ist diese auf unlimitiert eingestellt. Falls also nur Datei Uploads
kleiner 1MB erlaubt werden kann die Direktive auf den Wert von 1MB gesetzt werden
LimitRequestBody 1048576
XML Jeans zu gross
Falls ihr mod_dav (typischerweise in Verbindung mit Subversion) einsetzt, wollt ihr auch den XML Request
Body limitieren. Wie im Beispiel oben, könnt ihr diesen auf 1MB setzen
LimitXMLRequestBody 10485760
Allow from Underground
Um den Zugriff von unbefugten bösen Netzwerken zu unterdrücken, kann dies in der
Virtualhost Config erstellt werden. Ein selbsterklärendes Beispiel gibt es
natürlich noch dazu
ein Netz erlauben, alles andere blockieren:
Order Deny,Allow
Deny from all
Allow from 176.16.0.0/16
einzelne IP erlauben, alles andere blockieren:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Das Gefängnis
Alle reden davon, also machen wir das doch auch.
chroot erlaubt es dir deinen Apache Webserver in einem kleinen Gefängnis zu betreiben. Dies ist wohl die Sicherste Variante, falls sich auf dem selben Server noch mehr Dienste befinden.
Nicht alle Module lassen sich in ein chroot migrieren, deshalb sollte die zuerst in einer Testumgebung probiert werden.



