I cheated and used my modsecurity config from an OpenBSD
apache server. I wanted to check to see if this implementation is OK
and/or any improvements I could make. The additions to my httpd.conf file
are listed below. Thanks in advance!
Edward Ray
NetSec Consulting
From /etc/httpd/conf/httpd.conf:
# modsecurity files and modules
#
LoadFile /usr/lib64/libxml2.so
# LoadFile /usr/lib/liblua5.1.so
LoadModule security2_module modules/mod_security2.so
<IfModule mod_security2.so>
# mod_security configuration directives
# Turn ModSecurity On
SecFilterEngine On
# SecFilterEngine DynamicOnly
# SecFilterEngine Off
# 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"
SecUploadDir /tmp
SecUploadKeepFiles Off
# Only record the interesting stuff
SecAuditEngine RelevantOnly
SecAuditLog logs/audit_log
# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog logs/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 "!^$"
Include /etc/modsecurity/modsecurity_crs_10_config.conf
Include /etc/modsecurity/modsecurity_crs_20_protocol_violations.conf
Include
/etc/modsecurity/modsecurity_crs_21_protocol_anomalies.conf
Include
/etc/modsecurity/modsecurity_crs_23_request_limits.conf
Include /etc/modsecurity/modsecurity_crs_30_http_policy.conf
Include /etc/modsecurity/modsecurity_crs_35_bad_robots.conf
Include
/etc/modsecurity/modsecurity_crs_40_generic_attacks.conf
Include /etc/modsecurity/modsecurity_crs_45_trojans.conf
Include /etc/modsecurity/modsecurity_crs_50_outbound.conf
</IfModule>