Werbung

mod_security als Teil der Apache Sicherheit

geschrieben von | einsortiert in Webserver - Apache | geschrieben am 09.06.2011

Laden Sie sich das Modul mod_security von http://www.modsecurity.org und entpacken es auf die lokale Platte.

Für Apache2 gehen Sie in dem Verzeichnis, in dem die Dateien entpackt wurden, in das ./apache2 Verzeichnis und kompilieren dort das Modul mit der DSO-Methode. Dies geht einfacher und schneller.

1
apxs2 -cia mod_security.c

Falls das apxs2 Programm nicht gefunden wurde, so muss das Paket apache2-devel.-2.0.x.rpm installiert werden, dort ist das Tool apxs2 enthalten. Das Programm möchte die /etc/apache2/httpd.conf-prefork aktualisieren, was aber nicht unbedingt sein muss, normalerweise heisst diese Datei auch /etc/apache2/httpd.conf.

Nun müssen wir noch einen symbolischen Link anlegen:

1
2
3
# cd /usr/lib/apache2-prefork
# ln -s ../apache2/mod_security.so mod_security.so

Manuell kann man diese Konfiguration auch machen: Fügen Sie in die /etc/apache2/httpd.conf folgende Zeilen ein:

1
2
3
4
5
# Security Module
LoadModule security_module /usr/lib/apache2-prefork/mod_security.so
Include /etc/apache2/modsecurity.conf

Wenn Sie ein separates Verzeichnis für das audit und das debug Lofilge möchten, so legen Sie dieses an, z.B.

1
# mkdir /var/log/apache2/security

Nun müssen wir noch die Security-Richtlinien /etc/apache2/modsecurity.conf erzeugen und mit Inhalt füllen. Hier eine Beispieldatei:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Enable ModSecurity
SecFilterEngine On
# Reject requests with status 403
SecFilterDefaultAction "deny,log,status:403"
# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding Off
# Accept almost all byte values
SecFilterForceByteRange 1 255
# Server masking is optional
# SecServerSignature "Microsoft-IIS/5.0"
# Designate a directory for temporary files
# storage. It is a good idea to change the
# value below to a private directory, just as
# an additional measure against race conditions
SecUploadDir /tmp
SecUploadKeepFiles Off
# Only record the interesting stuff
SecAuditEngine RelevantOnly
#SecAuditEngine On
# Uncomment below to record responses with unusual statuses
# SecAuditLogRelevantStatus ^5
SecAuditLog /var/log/apache2/security/audit_log
# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog /var/log/apache2/security/modsec_debug_log
# Only accept request encodings we know how to handle
# we exclude GET requests from this because some (automated)
# clients supply "text/html" as Content-Type
SecFilterSelective REQUEST_METHOD "!^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Type "!(^application/x-www-form-urlencoded$|^multipart/form-data;)"
# Do not accept GET or HEAD requests with bodies
SecFilterSelective REQUEST_METHOD "^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Length "!^$"
# Require Content-Length to be provided with
# every POST request
SecFilterSelective REQUEST_METHOD "^POST$" chain
SecFilterSelective HTTP_Content-Length "^$"
# Don't accept transfer encodings we know we don't handle
SecFilterSelective HTTP_Transfer-Encoding "!^$"

Dies ist nur eine Beispieldatei und muss noch den Begebenheiten angepasst werden.

Als vorletzen Schritt sollte die Konfiguration zuerst überprüft werden

1
# apache2ctl configtest

was als Ergebnis Syntax OK bringen sollte.
Nun kann man den Apache2-Server reloaden:

1
# /etc/init.d/apache2 reload

oder wenn er nicht gelaufen ist neu starten:

1
# /etc/init.d/apache2 start
Werbung

schreibe ein Kommentar

*