суббота, 11 июня 2016 г.

OpenSSL для Apache под Windows Server

 

При генерации сертификата вылетала вот такая ошибка:

WARNING: can't open config file: c:/openssl-1.0.2g-win64/ssl/openssl.cnf

Решение в моем случае было таким:

set OPENSSL_CONF=D:\iServer\Apache\conf\openssl.cnf

надо было прописать в переменную окружения путь к файлу конфига

найдено тут http://impradeep.com/warning-cant-open-config-file-copenssl-1-0-1esslopenssl-cnf/

WARNING: can’t open config file: c:/openssl-1.0.1e/ssl/openssl.cnf
Unable to load config info from c:/openssl-1.0.1e/ssl/openssl.cnf

This error occurs mainly on windows when you are using openssl package, The reason is that openssl failed to locate the openssl.cnf file.

There is an environment variable called OPENSSL_CONF that can be set.

I will recommend that you do the following (one windows only)

In my case I set the environment variable like this –
set OPENSSL_CONF=E:\ApacheSoftwareFoundation\Apache2.2\conf\openssl.cnf

A tricky part of getting it to work is with the openssl.cnf file itself. Windows shows it as a file type “SpeedDial” and hides the extension so the filename looks like it is just “openssl”. I tried renaming it to “openssl.cnf”. That looks correct in windows explorer but if you look at the filename in a dos window the actual filename became “openssl.cnf.cnf”. So even though Windows shows the name without the .cnf extension it is there. That was confusing because I have my explorer set to not hide file extensions.

Remember that every-time you open a command prompt you have to run the above command unless you set this as your environment variable.

 

И кроме того после настройки сертификатов так Apache не запускался по ошибке:

Invalid command 'SSLMutex', perhaps misspelled or defined by a module not included in the server configuration

Ошибка была тут SSLMutex default

Эта команда не поддерживается после Apache 2.2 вместо нее надо использовать

Mutex default

Решение найдено тут http://stackoverflow.com/questions/13969272/apache-sslmutex-issue

вторник, 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