вторник, 7 июня 2016 г.

Установка и настройка mod_security на Apache по Windows

 

1) Скачиваем mod_security тут http://www.apachelounge.com/download/

MS0001

Качаем нужной вам разрядности.

2) Разархивируем файл на сервере

MS0002

3) Переписываем файлы libcurl.dll и yajl.dll в каталог apache\bin

4) Переписываем файл mod_security2.so в каталог apache\modules

5) Добавляем в файл httpd.conf слудующую строку:

LoadModule security2_module modules/mod_security2.so

6) Раскомментируем строку

LoadModule unique_id_module modules/mod_unique_id.so

MS0003

7) Далее в том же файле httpd.conf добавляем три строки

SecRuleEngine On
SecDefaultAction "deny,phase:2,status:403"
SecRule ARGS "\.\./" "t:normalizePathWin,id:50904,severity:4,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,msg:'Drive Access'"

MS0004

8) Рестартуем Apache

9) Проверяем работу модуля через запрос к сайту например: http://localhost/?abc=../../

Должны получить сообщение:

Forbidden

You don't have permission to access / on this server.

10) До этого мы сделали самую простую настройку модуля. Теперь к нему надо прикрутить правила, которые можно скачать тут:

https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master

11) Создаем каталог crs в каталоге Apache

MS0005

12) Разархивируем в каталог crs скачанный файл (в моем случае назывался SpiderLabs-owasp-modsecurity-crs-2.2.9-28-g37edea0.tar.gz).

Но разархивируем следующим образом. Внутри этого файла есть каталог:

MS0006

Заходим в него и уже его содержимое разархивируем в каталог crs.

MS0007

MS0008

13) Создаем копию файла modsecurity_crs_10_setup.conf.example и называем его modsecurity_crs_10_setup.conf

MS0009

14) Чтобы сказать Apache использовать этот файл для модуля mod_security module, вставьте следующие строки в файл httpd.conf

<IfModule security2_module>
Include crs/modsecurity_crs_10_setup.conf
Include crs/base_rules/*.conf
</IfModule>

MS0010

У вас пути могут быть другие…

15) В файл httpd.conf так же можно добавить еще три строки:

SecRequestBodyAccess On
SecResponseBodyAccess On
SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream

MS0011

16) Рестартуем Apache. Все должно работать. Радуемся если так :)

17) Настраиваем логи mod_security. Копируем файл mlogc.exe каталог Apache/bin.

18) Далее в каталоге с логами я создал подкаталог data.

MS0012

В каталоге Apache/conf создал файл mlogc.conf со следующим содержанием:

CollectorRoot       "E:/iLogs"
ConsoleURI          "https://localhost/rpc/auditLogReceiver"
SensorUsername      "username"
SensorPassword      "userpass"
LogStorageDir       "data"
TransactionLog      "mlogc-transaction.log"
QueuePath           "mlogc-queue.log"
ErrorLog            "mlogc-error.log"
LockFile            "mlogc.lck"
KeepEntries         0
ErrorLogLevel       2
MaxConnections      10
MaxWorkerRequests   1000
TransactionDelay    50
StartupDelay        5000
CheckpointInterval  15
ServerErrorTimeout  60

А настройки в httpd.conf для mod_security и mlogc привел к следующему виду:

SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus "^(?:5|4\d[^4])"
SecAuditLogType Concurrent
SecAuditLogParts ABCDEFGHZ
SecAuditLogStorageDir "E:/iLogs/data/"
SecAuditLog "E:/iLogs/audit.log"
#SecAuditLog "|bin/mlogc.exe"
SecDataDir "E:/iLogs"
SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream
SecDefaultAction "deny,phase:2,status:403"
SecRule ARGS "\.\./" "t:normalizePathWin,id:50904,severity:4,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,msg:'Drive Access'"

<IfModule security2_module>
Include crs/modsecurity_crs_10_setup.conf
Include crs/base_rules/*.conf
Include crs/slr_rules/modsecurity_crs_46_slr_et_joomla_attacks.conf
</IfModule>

одна строка там закомментирована, так как она выдавала кучу ошибок в лог файле

чтобы проверить работу что при попытке неправильных запросов пишутся логи можно зайти по следующему адресу на свой хост

http://localhost/?abc=../../

в файле audit.log должны появиться записи о попытке использования не правильных URL

так же записи должны появится в файлах в подкаталогах в каталоге data