Руководство по усилению защиты и безопасности веб-сервера Apache

Опубликовано: 2015-02-14

Практическое руководство по обеспечению безопасности и усилению защиты HTTP-сервера Apache.

Веб-сервер является важной частью веб-приложений. Веб-сервер Apache часто размещают на краю сети, поэтому он становится одним из наиболее уязвимых сервисов для атак.

Конфигурация по умолчанию предоставляет много конфиденциальной информации, которая может помочь хакеру подготовить приложения к атаке. Большинство атак на веб-приложения осуществляются через атаки XSS, утечки информации, управления сеансами и внедрения SQL, которые связаны со слабым программным кодом и неспособностью очистить инфраструктуру веб-приложений.

Интересное исследование Positive Technologies показывает, что 52% просканированных приложений имели высокую степень уязвимости.

отчет об уязвимости

В этой статье я расскажу о некоторых передовых методах защиты HTTP-сервера Apache на платформе Linux.

Следующее проверено на версии Apache 2.4.x.

  • Это предполагает, что вы установили Apache на платформе UNIX. Если нет, вы можете просмотреть руководство по установке.
  • В этом руководстве я буду называть каталог установки Apache /opt/apache как $Web_Server.
  • Перед любыми изменениями рекомендуется сделать резервную копию существующего файла конфигурации.

Аудитория

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

Хорошее знание веб-сервера Apache и команд UNIX обязательно.

Заметки

Вам нужен какой-то инструмент для проверки заголовков HTTP для проверки реализации. Есть два способа сделать это.

  1. Используйте встроенные в браузер инструменты разработчика для проверки заголовков HTTP. Обычно он находится на вкладке «Сеть».
  2. Используйте онлайн-инструмент проверки заголовков ответов HTTP

Удалить баннер версии сервера

Я бы сказал, что это одна из первых вещей, которые следует учитывать, поскольку вы не хотите раскрывать, какую версию веб-сервера вы используете. Раскрытие версии означает, что вы помогаете хакеру ускорить процесс разведки.

Конфигурация по умолчанию будет отображать версию Apache и тип ОС, как показано ниже.

Apache-сервер-баннер

  • Перейдите в папку $Web_Server/conf
  • Измените httpd.conf с помощью редактора vi.
  • Добавьте следующую директиву и сохраните httpd.conf
 ServerTokens Prod ServerSignature Off
  • Перезапустите апач

ServerSignature удалит информацию о версии со страницы, созданной Apache.

ServerTokens изменит заголовок только на производство, т.е. Apache

Как вы можете видеть ниже, информация о версии и ОС исчезла.

apache-сервер-баннер-маскируется

Отключить список браузера каталогов

Отключите список каталогов в браузере, чтобы посетитель не видел, какие файлы и папки у вас есть в корне или подкаталоге.

Давайте проверим, как это выглядит в настройках по умолчанию.

  • Перейдите в каталог $Web_Server/htdocs.
  • Создайте папку и несколько файлов внутри нее
 # mkdir test # touch hi # touch hello

Теперь попробуем получить доступ к Apache по адресу http://localhost/test.

apache-каталог-список

Как вы могли видеть, он показывает, какие у вас есть все файлы/папки, и я уверен, что вы не хотите их раскрывать.

  • Перейдите в каталог $Web_Server/conf
  • Откройте httpd.conf с помощью vi
  • Найдите каталог и измените директиву Options на None или –Indexes
 <Directory /opt/apache/htdocs> Options -Indexes </Directory>

(или же)

 <Directory /opt/apache/htdocs> Options None </Directory>
  • Перезапустите Апач

Примечание . Если в вашей среде есть несколько директив Directory, вам следует сделать то же самое для всех.

Теперь попробуем получить доступ к Apache по адресу http://localhost/test.

отключенный список каталогов

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

Этаг

Это позволяет удаленным злоумышленникам получать конфиденциальную информацию, такую ​​​​как номер инода, составную границу MIME и дочерний процесс через заголовок Etag.

Чтобы предотвратить эту уязвимость, давайте реализуем ее, как показано ниже. Это необходимо для исправления соответствия PCI.

  • Перейдите в каталог $Web_Server/conf
  • Добавьте следующую директиву и сохраните httpd.conf
 FileETag None
  • Перезапустите апач

Запустите Apache из непривилегированной учетной записи

Установка по умолчанию запускается как никто или демон. Использование отдельного непривилегированного пользователя для Apache — это хорошо.

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

  • Создайте пользователя и группу с именем apache
 # groupadd apache # useradd –G apache apache
  • Измените владельца каталога установки apache на вновь созданного непривилегированного пользователя
 # chown –R apache:apache /opt/apache
  • Перейдите в $Web_Server/conf
  • Измените httpd.conf с помощью vi
  • Найдите директиву пользователя и группы и измените ее как непривилегированную учетную запись apache.
 User apache Group apache
  • Сохраните httpd.conf
  • Перезапустите Апач

grep для запуска процесса http и убедитесь, что он работает с пользователем apache

 # ps –ef |grep http

Вы должны увидеть, что один процесс запущен с правами root. Это потому, что Apache прослушивает порт 80, и его нужно запускать с правами root.

Защитить права доступа к двоичному файлу и каталогу конфигурации

По умолчанию разрешение для двоичного файла и конфигурации равно 755, что означает, что любой пользователь на сервере может просматривать конфигурацию. Вы можете запретить другому пользователю доступ в папку conf и bin.

  • Перейдите в каталог $Web_Server
  • Изменить разрешение папки bin и conf
 # chmod –R 750 bin conf

Защита системных настроек

При установке по умолчанию пользователи могут переопределить конфигурацию Apache с помощью .htaccess. Если вы хотите запретить пользователям изменять настройки вашего сервера Apache, вы можете добавить AllowOverride в None , как показано ниже.

Это должно быть сделано на корневом уровне.

  • Перейдите в каталог $Web_Server/conf
  • Откройте httpd.conf с помощью vi
  • Поиск каталога на корневом уровне
 <Directory /> Options -Indexes AllowOverride None </Directory>
  • Сохраните httpd.conf
  • Перезапустите Апач

Методы HTTP-запроса

Протокол HTTP 1.1 поддерживает множество методов запроса, которые могут не потребоваться, а некоторые из них несут в себе потенциальный риск.

Обычно вам могут понадобиться методы запроса GET, HEAD, POST в веб-приложении, которые можно настроить в соответствующей директиве каталога.

Конфигурация по умолчанию поддерживает методы OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT в протоколе HTTP 1.1.

  • Перейдите в каталог $Web_Server/conf
  • Откройте httpd.conf с помощью vi
  • Найдите каталог и добавьте следующее
 <LimitExcept GET POST HEAD> deny from all </LimitExcept>
  • Перезапустите Апач

Отключить трассировку HTTP-запроса

По умолчанию метод трассировки включен на веб-сервере Apache.

Если эта функция включена, это может привести к атаке с помощью межсайтовой трассировки и потенциально дать хакеру возможность украсть информацию о файлах cookie. Давайте посмотрим, как это выглядит в конфигурации по умолчанию.

  • Сделайте IP-адрес веб-сервера telnet с портом прослушивания
  • Сделайте запрос TRACE, как показано ниже.
 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Sat, 31 Aug 2013 02:13:24 GMT Server: Apache Transfer-Encoding: chunked Content-Type: message/http 20 TRACE / HTTP/1.1 Host: test 0 Connection closed by foreign host. #

Как вы могли видеть в приведенном выше запросе TRACE, он ответил на мой запрос. Давайте отключим его и протестируем.

  • Перейдите в каталог $Web_Server/conf
  • Добавьте следующую директиву и сохраните httpd.conf
 TraceEnable off
  • Перезапустите апач

Сделайте IP-адрес веб-сервера telnet с прослушиваемым портом и сделайте запрос TRACE , как показано ниже.

 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 405 Method Not Allowed Date: Sat, 31 Aug 2013 02:18:27 GMT Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method TRACE is not allowed for the URL /.</p> </body></html> Connection closed by foreign host. #

Как вы могли видеть в приведенном выше запросе TRACE, он заблокировал мой запрос с помощью метода HTTP 405 Not Allowed.

Теперь этот веб-сервер не разрешает запрос TRACE и помогает блокировать атаку Cross Site Tracing.

Установите cookie с флагом HttpOnly и Secure

Вы можете смягчить большинство распространенных атак межсайтового скриптинга, используя HttpOnly и флаг Secure в файле cookie. Без HttpOnly и Secure можно украсть или манипулировать сеансом веб-приложения и файлами cookie, и это опасно.

  • Убедитесь, что mod_headers.so включен в вашем httpd.conf
  • Перейдите в каталог $Web_Server/conf
  • Добавьте следующую директиву и сохраните httpd.conf
 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  • Перезапустите апач

Атака кликджекинга

Clickjacking — известная уязвимость веб-приложений.

  • Убедитесь, что mod_headers.so включен в вашем httpd.conf
  • Перейдите в каталог $Web_Server/conf
  • Добавьте следующую директиву и сохраните httpd.conf
 Header always append X-Frame-Options SAMEORIGIN
  • Перезапустите апач

параметры apache-x-frame

X-Frame-Options также поддерживает еще две опции, которые я объяснил здесь.

Серверная сторона включает

Включение на стороне сервера (SSI) может увеличить нагрузку на сервер. Если вы совместно используете среду и веб-приложения с интенсивным трафиком, вам следует рассмотреть возможность отключения SSI, добавив директиву «Включает в параметры».

Атака SSI позволяет использовать веб-приложение путем внедрения скриптов в HTML-страницы или удаленного выполнения кода.

  • Перейдите в каталог $Web_Server/conf
  • Откройте httpd.conf с помощью vi
  • Найдите каталог и добавьте директиву «Включает в параметры».
 <Directory /opt/apache/htdocs> Options –Indexes -Includes Order allow,denyAllow from all </Directory>
  • Перезапустите Апач

Примечание: если в вашей среде есть несколько директив Directory, вам следует подумать о том, чтобы сделать то же самое для всех.

Защита X-XSS

Защиту от межсайтового скриптинга (XSS) можно обойти во многих браузерах. Вы можете применить эту защиту для веб-приложения, если она была отключена пользователем. Это используется большинством гигантских веб-компаний, таких как Facebook, Twitter, Google и т. д.

  • Перейдите в каталог $Web_Server/conf
  • Откройте httpd.conf с помощью vi и добавьте следующую директиву заголовка
 Header set X-XSS-Protection "1; mode=block"
  • Перезапустите Апач

Как видите, XSS-защита внедряется в заголовок ответа.

апач-xss

Отключить протокол HTTP 1.0

Когда мы говорим о безопасности, мы должны защищать как можно больше. Так почему же мы используем более старые версии протокола HTTP, давайте отключим и их?

HTTP 1.0 имеет уязвимость в системе безопасности, связанную с перехватом сеанса. Мы можем отключить это с помощью модуля mod_rewrite.

  • Обязательно загрузите модуль mod_rewrite в файл httpd.conf.
  • Включите директиву RewriteEngine, как показано ниже, и добавьте условие перезаписи, чтобы разрешить только HTTP 1.1.
 RewriteEngine On RewriteCond %{THE_REQUEST} !HTTP/1.1$ RewriteRule .* - [F]

Конфигурация значения тайм-аута

По умолчанию значение тайм-аута Apache составляет 300 секунд, что может стать жертвой атаки Slow Loris и DoS. Чтобы смягчить это, вы можете уменьшить значение времени ожидания до 60 секунд.

  • Перейдите в каталог $Web_Server/conf
  • Откройте httpd.conf с помощью vi
  • Добавьте следующее в httpd.conf
 Timeout 60

SSL

Наличие SSL — это дополнительный уровень безопасности, который вы добавляете в веб-приложение. Однако конфигурация SSL по умолчанию приводит к определенным уязвимостям, и вам следует подумать об изменении этих конфигураций.

SSL-ключ

Взломать SSL-ключ сложно, но возможно. Это просто вопрос вычислительной мощности и времени.

Как вы, возможно, знаете, взламывая ПК 2009 года в течение примерно 73 дней, вы можете реконструировать 512-битный ключ.

Таким образом, чем выше длина вашего ключа, тем сложнее взломать ключ SSL. Большинство гигантских веб-компаний используют 2048-битный ключ, как показано ниже, так почему бы и нам?

  • Outlook.com
  • Microsoft.com
  • Live.com
  • Skype.com
  • Apple.com
  • Yahoo.com
  • Bing.com
  • Hotmail.com
  • Twitter.com

Вы можете использовать OpenSSL для создания CSR с 2048 битами, как показано ниже.

 openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

Он сгенерирует CSR, который вам нужно будет отправить в центр сертификации, чтобы подписать его. Получив подписанный файл сертификата, вы можете добавить его в файл httpd-ssl.conf.

 SSLCertificateFile #Certificate signed by authority SSLCertificateChainFile #Certificate signer given by authority SSLCertificateKeyFile #Key file which you generated above
  • Перезапустите веб-сервер Apache и попробуйте получить доступ к URL-адресу с помощью https.

SSL-шифр

SSL Cipher — это алгоритм шифрования, который используется в качестве ключа между двумя компьютерами через Интернет. Шифрование данных — это процесс преобразования обычного текста в секретные зашифрованные коды.

В зависимости от конфигурации SSL-шифра вашего веб-сервера будет выполняться шифрование данных. Поэтому важно настроить шифр SSL, который будет более надежным и безопасным.

  • Перейдите в папку $Web_Server/conf/extra
  • Измените директиву SSLCipherSuite в httpd-ssl.conf, как показано ниже, чтобы принимать только более высокие алгоритмы шифрования.
 SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  • Сохраните файл конфигурации и перезапустите сервер Apache.

Примечание: если в вашем отчете об аудите SSL много слабых шифров, вы можете быстро отклонить их, добавив ! с начала.

Отключить SSL v2 и v3

SSL v2 и v3 имеют много недостатков безопасности, и если вы работаете над тестированием на проникновение или соответствием PCI, то вы должны закрыть обнаружение безопасности, чтобы отключить SSL v2/v3.

Любая связь SSL v2/v3 может быть уязвима для атаки «человек посередине», которая может привести к подделке или раскрытию данных.

Давайте реализуем веб-сервер apache, чтобы он принимал только последние версии TLS и отклонял запросы на подключение SSL v2/v3.

  • Перейдите в папку $Web_Server/conf/extra
  • Измените директиву SSLProtocol в httpd-ssl.conf, как показано ниже, чтобы принимать только TLS 1.2+.
 SSLProtocol –ALL +TLSv1.2

После того, как вы закончите настройку SSL, рекомендуется протестировать ваше веб-приложение с помощью онлайн-инструмента сертификатов SSL/TLS, чтобы найти любую ошибку конфигурации.

Мод безопасности

Mod Security — это брандмауэр веб-приложений с открытым исходным кодом, который вы можете использовать с Apache.

Он поставляется в виде модуля, который необходимо скомпилировать и установить. Если вы не можете позволить себе коммерческий брандмауэр для веб-приложений, это будет отличный выбор.

Для обеспечения общей защиты веб-приложений Основные правила используют следующие методы:

  • Защита HTTP — обнаружение нарушений протокола HTTP и локально определенной политики использования.
  • Поиск в черном списке в режиме реального времени — использует репутацию сторонних IP-адресов
  • Обнаружение вредоносных программ в Интернете — идентифицирует вредоносный веб-контент, проверяя Google Safe Browsing API.
  • HTTP Denial of Service Protections — защита от HTTP-флудинга и медленных HTTP-атак DoS.
  • Common Web Attacks Protection — обнаружение распространенных атак на безопасность веб-приложений
  • Автоматическое обнаружение — обнаружение ботов, поисковых роботов, сканеров и другой вредоносной поверхностной активности.
  • Интеграция с антивирусным сканированием для загрузки файлов — идентифицирует вредоносные файлы, загруженные через веб-приложение.
  • Отслеживание конфиденциальных данных — отслеживает использование кредитных карт и блокирует утечки.
  • Защита от троянов — Обнаружение доступа к троянским коням.
  • Идентификация дефектов приложений — оповещения о неправильных конфигурациях приложений.
  • Обнаружение и сокрытие ошибок — маскировка сообщений об ошибках, отправляемых сервером.

Загрузка и установка

Следующие предварительные условия должны быть установлены на сервере, где вы хотите использовать Mod Security с Apache. Если какой-либо из них не существует, компиляция Mod Security завершится ошибкой. Вы можете использовать yum install в Linux или Centos для установки этих пакетов.

  • апач 2.х или выше
  • пакет libpcre
  • пакет libxml2
  • пакет библиотеки
  • пакет libcurl
  • пакет libapr и libapr-util
  • Модуль mod_unique_id в комплекте с веб-сервером Apache

Теперь давайте загрузим последнюю стабильную версию Mod Security 2.7.5 отсюда.

  • Перенесите загруженный файл в /opt/apache
  • Извлеките modsecurity-apache_2.7.5.tar.gz
 # gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • Перейдите в извлеченную папку modsecurity-apache_2.7.5.
 # cd modsecurity-apache_2.7.5
  • Запустите скрипт настройки, включая путь apxs к существующему Apache.
 # ./configure –with-apxs=/opt/apache/bin/apxs
  • Скомпилируйте и установите с помощью скрипта make
 # make # make install
  • После завершения установки вы увидите mod_security2.so в папке модулей в /opt/apache.

Итак, вы установили модуль Mod Security на существующий веб-сервер Apache.

Конфигурация

Чтобы использовать функцию безопасности мода с Apache, мы должны загрузить модуль безопасности мода в httpd.conf. Модуль mod_unique_id необходим для Mod Security.

Этот модуль предоставляет переменную среды с уникальным идентификатором для каждого запроса, который отслеживается и используется Mod Security.

  • Добавьте следующую строку для загрузки модуля для Mod Security в httpd.conf и сохраните файл конфигурации.
 LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so
  • Перезапустите веб-сервер apache.

Мод Security теперь установлен!

Следующее, что вам нужно сделать, это установить основное правило Mod Security, чтобы в полной мере воспользоваться его функцией.

Последнюю версию Core Rule можно скачать бесплатно по следующей ссылке. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/мастер

  • Скопируйте загруженный zip-архив основных правил в папку /opt/apache/conf
  • Разархивируйте основной файл правил
  • Вы можете переименовать папку во что-то короткое и легко запоминающееся. В этом примере я переименую в crs.
  • Перейдите в папку crs и переименуйте modsecurity_crs10_setup.conf.example в modsecurity_crs10_setup.conf.

Теперь давайте включим эти правила, чтобы заставить его работать с веб-сервером Apache.

  • Добавьте следующее в httpd.conf
 <IfModule security2_module> Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf </IfModule>

В приведенной выше конфигурации мы загружаем основной файл конфигурации Mod Security modsecurity_crs_10_setup.conf и базовые правила base_rules/*.conf, предоставленные основными правилами Mod Security для защиты веб-приложений.

  • Перезапустите веб-сервер apache.

Вы успешно настроили Mod Security с Apache!

Отличная работа. Теперь веб-сервер Apache защищен брандмауэром веб-приложений Mod Security.

Начиная

Давайте начнем с некоторых критических конфигураций в Mod Security, чтобы укрепить и защитить веб-приложения.

В этом разделе мы внесем все изменения в конфигурацию в файле /opt/apache/conf/crs/modsecurity_crs_10_setup.conf.

Мы будем называть /opt/apache/conf/crs/modsecurity_crs_10_setup.conf как setup.conf в этом разделе для примера.

Важно понимать, что правила OWASP предоставляются бесплатно. Существует два типа правил, предоставляемых OWASP.

Базовые правила — эти правила тщательно протестированы, и, вероятно, вероятность ложных срабатываний меньше.

Экспериментальные правила — эти правила предназначены для экспериментальных целей, и у вас может быть высокая ложная тревога. Важно настроить, протестировать и внедрить в UAT, прежде чем использовать их в производственной среде.

Необязательные правила — эти необязательные правила могут не подходить для всей среды. В зависимости от ваших требований вы можете использовать их.

Если вы ищете защиту от CSRF, отслеживания пользователей, захвата сеанса и т. д., вы можете рассмотреть возможность использования дополнительных правил. У нас есть базовые, необязательные и экспериментальные правила после извлечения загруженного zip-файла crs со страницы загрузки OWASP.

Файл конфигурации этих правил доступен в папках crs/base_rules, crs/Optional_rules и crs/experimental_rules. Давайте познакомимся с некоторыми из основных правил.

  • modsecurity_crs_20_protocol_violations.conf: это правило защищает от уязвимостей протокола, таких как разделение ответов, контрабанда запросов, использование неразрешенного протокола (HTTP 1.0).
  • modsecurity_crs_21_protocol_anomalies.conf: Это для защиты от запроса, который отсутствует с Host, Accept, User-Agent в заголовке.
  • modsecurity_crs_23_request_limits.conf: Это правило зависит от конкретных приложений, таких как размер запроса, размер загрузки, длина параметра и т. д.
  • modsecurity_crs_30_http_policy.conf: это для настройки и защиты разрешенных или запрещенных методов, таких как CONNECT, TRACE, PUT, DELETE и т. д.
  • modsecurity_crs_35_bad_robots.conf: Обнаружение вредоносных роботов
  • modsecurity_crs_40_generic_attacks.conf: это для защиты от внедрения команд ОС, удаленного включения файлов и т. д.
  • modsecurity_crs_41_sql_injection_attacks.conf: Это правило для защиты SQL и слепого SQL-запроса на вставку.
  • modsecurity_crs_41_xss_attacks.conf: Защита от запроса межсайтового скриптинга.
  • modsecurity_crs_42_tight_security.conf: Обнаружение и защита от обхода каталога.
  • modsecurity_crs_45_trojans.conf: это правило для обнаружения общих выходных данных управления файлами, загрузки страницы бэкдора HTTP, известной подписи.
  • modsecurity_crs_47_common_exceptions.conf: используется в качестве механизма исключений для удаления частых ложных срабатываний, которые могут встречаться как отстой, как внутреннее фиктивное соединение Apache, SSL-пингер и т. д.

логирование

Ведение журнала — это одна из первых вещей, которую нужно настроить, чтобы вы могли создавать журналы для того, что делает Mod Security. Доступны два типа ведения журнала; Журнал отладки и аудита.

Журнал отладки: дублирует сообщения об ошибках, предупреждениях и уведомлениях Apache из журнала ошибок.

Журнал аудита: для записи журналов транзакций, отмеченных правилом Mod Security. Mod Security дает вам гибкость для настройки ведения журнала аудита, отладки или обоих.

По умолчанию конфигурация будет записывать оба журнала. Тем не менее, вы можете изменить в зависимости от ваших требований. Журнал управляется директивой SecDefaultAction . Давайте посмотрим на конфигурацию ведения журнала по умолчанию в setup.conf.

 SecDefaultAction “phase:1,deny,log”

Для регистрации журнала отладки и аудита — используйте «log». Для регистрации только журнала аудита — используйте «nolog,auditlog». Для регистрации только журнала отладки — используйте «log, noauditlog». Вы можете указать место хранения журнала аудита, которое контролируется SecAuditLog. директива.

Давайте запишем журнал аудита в /opt/apache/logs/modsec_audit.log, добавив, как показано ниже.

  • Добавьте директиву SecAuditLog в setup.conf и перезапустите веб-сервер Apache.
 SecAuditLog /opt/apache/logs/modsec_audit.log
  • После перезагрузки вы должны увидеть, как создается modsec_audit.log.

Включить обработчик правил

По умолчанию Engine Rule отключен, это означает, что если вы не включите Rule Engine, вы не используете все преимущества Mod Security.

Включение или отключение Rule Engine управляется директивой SecRuleEngine .

  • Добавьте директиву SecRuleEngine в setup.conf и перезапустите веб-сервер Apache.
 SecRuleEngine On

Для SecRuleEngine есть три значения:

  • Вкл. – включить обработчик правил.
  • Off — отключить механизм правил.
  • DetectionOnly — включить обработчик правил, но никогда не выполнять никаких действий, таких как блокировка, отказ, удаление, разрешение, прокси или перенаправление.

Как только Rule Engine включен, Mod Security готов к защите от некоторых распространенных типов атак.

Защита от общих типов атак

Теперь веб-сервер готов к защите с помощью распространенных типов атак, таких как XSS, SQL-инъекция, нарушение протокола и т. д., поскольку мы установили Core Rule и включили Rule Engine. Давайте протестируем несколько из них.

XSS-атака

  • Откройте Firefox и получите доступ к своему приложению и поместите тег <script> в конец или URL-адрес.
  • Отслеживайте modsec_audit.log в папке apache/logs.

Вы заметите, что Mod Security блокирует запрос, поскольку он содержит тег <script>, который является корнем атаки XSS.

Атака с обходом каталога: - Атаки с обходом каталога могут нанести большой ущерб, используя эту уязвимость и доступ к файлу, связанному с системой. Пример — /etc/passwd, .htaccess и т. д.

  • Откройте Firefox и получите доступ к своему приложению с обходом каталога
  • Отслеживайте modsec_audit.log в папке apache/logs.
 http://localhost/?../.../boot
  • Вы заметите, что Mod Security блокирует запрос, поскольку он содержит обход каталога.

Изменить баннер сервера

Ранее в этом руководстве вы узнали, как удалить Apache и тип ОС, справку по версии директивы ServerTokens.

Давайте сделаем еще один шаг вперед, как насчет того, чтобы оставить имя сервера каким угодно? Это возможно с директивой SecServerSignature в Mod Security. Вы видите, что это интересно.

Примечание. Чтобы использовать Mod Security для управления баннером сервера из заголовка, вы должны установить для ServerTokesn значение Full в httpd.conf веб-сервера Apache.

  • Добавьте директиву SecServerSignature с желаемым именем сервера в setup.conf и перезапустите веб-сервер Apache.
 SecServerSignature YourServerName

Бывший:

 [/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf SecServerSignature geekflare.com [/opt/apache/conf/crs] #

Общая конфигурация

Давайте рассмотрим некоторые из общих конфигураций в качестве наилучшей практики.

Настроить прослушивание

Если у вас есть несколько интерфейсов и IP-адресов на одном сервере, рекомендуется настроить директиву Listen с абсолютным IP-адресом и номером порта.

Когда вы оставляете конфигурацию apache для прослушивания всех IP-адресов с некоторым номером порта, это может создать проблему при пересылке HTTP-запроса на какой-либо другой веб-сервер. Это довольно распространено в общей среде.

  • Настройте директиву Listen в httpd.conf с абсолютным IP-адресом и портом, как показано в примере ниже.
 Listen 10.10.10.1:80

Регистрация доступа

Очень важно правильно настроить журнал доступа на вашем веб-сервере. Некоторым важным параметром для регистрации в журнале будет время, затраченное на обслуживание запроса, SESSION ID.

По умолчанию Apache не настроен для захвата этих данных. Вы должны настроить их вручную следующим образом.

  • Зафиксировать время, затраченное на обслуживание запроса, и идентификатор сеанса в журнале доступа.
  • Добавьте %T и %sessionID в httpd.conf в директиве LogFormat.
 LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

Вы можете обратиться к http://httpd.apache.org/docs/2.2/mod/mod_log_config.html для получения полного списка параметров, поддерживаемых в директиве LogFormat на веб-сервере Apache.

Отключить загрузку нежелательных модулей

Если вы скомпилировали и установили все модули, то есть большая вероятность, что в Apache будет загружено много модулей, которые могут не потребоваться.

Лучшей практикой является настройка Apache с необходимыми модулями в ваших веб-приложениях. Следующие модули имеют проблемы с безопасностью, и вам может быть интересно отключить их в httpd.conf веб-сервера Apache.

WebDAV (Распределенное создание и управление версиями через Интернет) Этот модуль позволяет удаленным клиентам манипулировать файлами на сервере и подвергать их различным атакам типа «отказ в обслуживании». Чтобы отключить комментарии в httpd.conf

 #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #Include conf/extra/httpd-dav.conf

Информационный модуль Модуль mod_info может привести к утечке конфиденциальной информации с использованием .htaccess после загрузки этого модуля. Чтобы отключить комментарии в httpd.conf

 #LoadModule info_module modules/mod_info.so

Ссылка: это было бы невозможно без руководства по следующей ссылке:

  • http://httpd.apache.org/docs/2.4/
  • http://www.modsecurity.org/documentation/
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

Так что это были некоторые из лучших практик, которые вы можете использовать для защиты веб-сервера Apache.

Проверьте эту ссылку, если вы хотите реализовать пользовательскую страницу ошибок в Apache.

Если вы новичок в Apache HTTP, я бы порекомендовал пройти курс администрирования Apache HTTP.