PDA

Bekijk Volledige Versie : Modsecurity configuratie



nielsvroegin
28/03/06, 17:35
Hey,

Ik ben bezig modsecurity te configureren op een server.
Nu wil ik dit vooral doen omdat we veel last hebben van mail header injection.

Ik heb van een site dit stukje code:

SecFilterSelective ARGS_VALUES "\n[[:space:]]*(to|bcc|cc)[[:space:]]*:.*@"

Het lijkt er alleen niet echt op dat die werkt:

Heb nu deze configuratie:



<IfModule mod_security.c>
# Turn the filtering engine On or Off
SecFilterEngine On

# Change Server: string
SecServerSignature "Apache"


# This setting should be set to On only if the Web site is
# using the Unicode encoding. Otherwise it may interfere with
# the normal Web site operation.
SecFilterCheckUnicodeEncoding Off

# The audit engine works independently and
# can be turned On of Off on the per-server or
# on the per-directory basis. "On" will log everything,
# "DynamicOrRelevant" will log dynamic requests or violations,
# and "RelevantOnly" will only log policy violations
SecAuditEngine RelevantOnly

# The name of the audit log file
SecAuditLog logs/audit_log

# Should mod_security inspect POST payloads
SecFilterScanPOST On

# Action to take by default
SecFilterDefaultAction "deny,log,status:403"

## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ##

# Require HTTP_USER_AGENT and HTTP_HOST in all requests
# SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"

# 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
# (and you don't need it anyway)
SecFilterSelective HTTP_Transfer-Encoding "!^$"

# Protecting from XSS attacks through the PHP session cookie
SecFilterSelective ARG_PHPSESSID "!^[0-9a-z]*$"
SecFilterSelective COOKIE_PHPSESSID "!^[0-9a-z]*$"

SecFilter "viewtopic\.php\?" chain
SecFilter "chr\(([0-9]{1,3})\)" "deny,log"

# Block various methods of downloading files to a server
SecFilterSelective THE_REQUEST "wget "
SecFilterSelective THE_REQUEST "lynx "
SecFilterSelective THE_REQUEST "scp "
SecFilterSelective THE_REQUEST "ftp "
SecFilterSelective THE_REQUEST "cvs "
SecFilterSelective THE_REQUEST "rcp "
SecFilterSelective THE_REQUEST "curl "
SecFilterSelective THE_REQUEST "telnet "
SecFilterSelective THE_REQUEST "ssh "
SecFilterSelective THE_REQUEST "echo "
SecFilterSelective THE_REQUEST "links -dump "
SecFilterSelective THE_REQUEST "links -dump-charset "
SecFilterSelective THE_REQUEST "links -dump-width "
SecFilterSelective THE_REQUEST "links http:// "
SecFilterSelective THE_REQUEST "links ftp:// "
SecFilterSelective THE_REQUEST "links -source "
SecFilterSelective THE_REQUEST "mkdir "
SecFilterSelective THE_REQUEST "cd /tmp "
SecFilterSelective THE_REQUEST "cd /var/tmp "
SecFilterSelective THE_REQUEST "cd /etc/httpd/proxy "
SecFilterSelective THE_REQUEST "/config.php?v=1&DIR "
SecFilterSelective THE_REQUEST "&highlight=%2527%252E "
SecFilterSelective THE_REQUEST "changedir=%2Ftmp%2F.php "
SecFilterSelective THE_REQUEST "arta\.zip "
SecFilterSelective THE_REQUEST "cmd=cd\x20/var "
SecFilterSelective THE_REQUEST "HCL_path=http "
SecFilterSelective THE_REQUEST "clamav-partial "
SecFilterSelective THE_REQUEST "vi\.recover "
SecFilterSelective THE_REQUEST "netenberg "
SecFilterSelective THE_REQUEST "psybnc "
SecFilterSelective THE_REQUEST "fantastico_de_luxe "

SecFilter "bcc:"
SecFilter "bcc\x3a"
SecFilter "cc:"
SecFilter "cc\x3a"
SecFilter "bcc:|Bcc:|BCC:" chain
SecFilter "[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}\,\x20[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}"
SecFilterSelective POST_PAYLOAD "Bcc:"
SecFilterSelective POST_PAYLOAD "Bcc:\x20"
SecFilterSelective POST_PAYLOAD "cc:"
SecFilterSelective POST_PAYLOAD "cc:\x20"
SecFilterSelective POST_PAYLOAD "bcc:"
SecFilterSelective POST_PAYLOAD "bcc:\x20"
SecFilterSelective POST_PAYLOAD "bcc: "
SecFilterSelective THE_REQUEST "Bcc:"
SecFilterSelective THE_REQUEST "Bcc:\x20"
SecFilterSelective THE_REQUEST "cc:"
SecFilterSelective THE_REQUEST "cc:\x20"
SecFilterSelective THE_REQUEST "bcc:"
SecFilterSelective THE_REQUEST "bcc:\x20"
SecFilterSelective THE_REQUEST "bcc: "
# WEB-PHP phpbb quick-reply.php arbitrary command attempt
SecFilterSelective THE_REQUEST "/quick-reply\.php" chain
SecFilter "phpbb_root_path="

#Regel om mail header injection tegen te gaan
SecFilterSelective ARGS_VALUES "\n[[:space:]]*(to|bcc|cc)[[:space:]]*:.*@"

</IfModule>


Als ik deze regel door een post request haal:
sender@anonymous.www%0ACc:recipient@someothersite. xxx%0ABcc:somebloke@grrrr.xxx,someotherbloke@oooop s.xxx

Dan pakt die hem wel maar met deze regel:
SecFilterSelective POST_PAYLOAD "Bcc:"

Alleen hij doet bijvoorbeeld met deze regel weer niks:
test@example.org>\nTo: test@test.nl\n\nen dit is een ander bericht\n

Iemand een idee wat ik nu nog mis in me configuratie?

Ook nog iets anders, ik heb geprobeerd alle rules van gotroot.com te gebruiken alleen de server wordt er enorm langzaam van.

Dus wil ik misschien maar een paar rules bestanden gebruiken.
Welke bestanden voorkomen de meeste script exploits?
Wil vooral ook de phpbb en mambo dingen er uit kunnen filteren..

lifeforms
28/03/06, 17:36
De regexp (to|bcc|cc) slaat alleen op lowercase letters, maar in je testcase gebruik je "Cc" dus dit matcht niet?

Ik weet niet of dit voor mod_security ook geldt hoor, mod_security is tijdje geleden voor me, maar ik wacht op een compile en ik dacht ach ja.

nielsvroegin
28/03/06, 17:53
Hmm heb nu ook de uppercase dingen er bij gezet:
SecFilterSelective ARGS_VALUES "\n[[:space:]]*(To|Bcc|Cc|to|bcc|cc)[[:space:]]*:.*@"

Alleen dan pakt die hem ook niet, Komt het niet omdat die nog niet scant op ARGS_VALUES en hoe zou ik dat aan kunnen zetten?

joriz
28/03/06, 18:56
Kijk is op gotroot.com
Daar staan al diverse security rools.

Echter maakt het gebruik van heel veel regels wel je server slomer. Dus je moet een balans vinden tussen veiligheid en snelheid.

nielsvroegin
28/03/06, 20:16
Jeps, had onderin me topic ook al gezet dat ik bezig was met de gotroot.com rules.

Zitten wel handige rules tussen, helaas wordt de server te langzaam als ik ze allemaal er in zet.

Heb nu de volgende er op staan:

rules.conf
ritp.conf

Ik heb daar eens in gekeken en volgens mij voorkomen ze aardig wat exploits in de bekende scripts. Iemand nog tips welke nog meer verstandig zijn om er in te zetten?

Alleen nu zou ik eigenlijk willen weten wat ik nu het beste kan doen om zo veel mogelijk het mail header injection probleem te voorkomen(hier had ik het eigenlijk voor geinstalleerd)?

®on
28/03/06, 22:19
# BCC formmail attack
SecFilter "bcc:"
SecFilterSelective THE_REQUEST "bcc:|bcc%3A"

Vangt hier de rotzooi af.

Komt overigens van gotroo.com af.