Apache - самый популярный веб-сервер, используемый в Интернете. Он идеально подходит для большинства ситуаций и обеспечивает гибкость для общих сред. В этом руководстве мы рассмотрим, как защитить веб-сервер Apache.
- Поддерживайте Apache в актуальном состоянии
- Скрыть информацию о версии Apache и Server os.
- Отключить индексирование каталогов
- Отключите ETag
- Отключите CGI и SSI
- Ограничение доступа к каталогам
- Защита Apache с помощью Mod_Security
- Определение методов HTTP-запросов
- Включить защитный заголовок XSS
- Отключите TRACE HTTP Request
- Предотвращение атак Clickjacking
- Безопасный файл cookie с флагом HTTPOnly
- Ограничение размера запроса
Поддерживайте Apache в актуальном состоянии
Войдите в систему, используя учетную запись привилегированного пользователя root или sudo. Проверьте версию Apache, выполнив следующую команду.
httpd -v
Скрыть информацию о версии Apache и Server os.
Первое, что нам нужно учесть, так как мы не хотим раскрывать информацию о версии веб-сервера, который мы используем в нашей системе. Раскрытие информации о версии и операционной системе означает, что мы помогаем хакерам ускорить процесс атаки.
Чтобы предотвратить раскрытие Apache информации о своей версии и операционной системе, нам необходимо изменить основной конфигурационный файл Apache. откройте конфигурационный файл, выполнив следующую команду
nano /etc/httpd/conf/httpd.conf
nano /etc/apache2/apache.conf (Ubuntu / Debian)
Теперь добавьте две следующие директивы в основной конфигурационный файл и сохраните его.
ServerTokens Prod
ServerSignature Off
И перезапустите сервер Apache, выполнив следующую команду
systemctl restart httpd.service
Как видно из приведенного ниже изображения, версия Apache не отображается, операционная информация также не видна.
Отключить индексирование каталогов
По умолчанию Apache показывает все содержимое каталога Webroot в отсутствие индексного файла.
Чтобы предотвратить индексацию каталогов в браузере, нам нужно изменить директиву options в конфигурационном файле Apache. Откройте конфигурацию и измените запись, как показано ниже.
<Directory /var/www/html>
Options -Indexes
</Directory>
Отключите ETag
Etag используется в заголовках HTTP для управления поведением веб-кэширования. Однако Etag может вызывать проблемы с безопасностью. Он позволяет удаленным злоумышленникам получить конфиденциальную информацию, такую как номер inode, тип mime и процесс через заголовок ETag. Чтобы предотвратить атаки и утечку информации, добавьте в конфигурацию Apache следующую директиву.
Для этого просто добавьте следующую строку в конфигурационный файл Apache и перезапустите Apache.
FileEtag None
Отключите CGI и SSI
SSI (server-side includes) - это директивы, используемые для написания HTML-страниц с динамическим содержимым, а CGI - для внедрения вредоносных скриптов в ваш веб-код. Запретите CGI и SSI, добавив следующие директивы опций в конфигурацию Apache:
Options -Includes -ExecCGI
Ограничение доступа к каталогам
Хорошей практикой безопасности является ограничение доступа к каталогу webroot с помощью синтаксиса "Разрешить и запретить". Чтобы добиться этого, внесите следующие изменения в конфигурационный файл apache. Откройте конфигурационный файл и сервер для блока Directory и пропишите директиву директории следующим образом и сохраните ее. теперь перезапустите Apache, чтобы изменить эффект
<Directory />
Options None
Order deny,allow
Deny from all
</Directory>
Приведенный выше параметр запретит запросы от всех к корневому каталогу. Никто не сможет получить доступ к корневому каталогу.
Защита Apache с помощью Mod_Security
Mod_security - это инструмент безопасности, работающий как брандмауэр для веб-сайтов или приложений. Он помогает защитить веб-сайты или приложения от несанкционированного доступа, а также от атак грубой силы. Установите mod_security, выполнив следующую команду, и перезапустите Apache для работы с mod_security.
Определение методов HTTP-запросов
В текущем протоколе HTTP многие запросы не являются необходимыми, а некоторые представляют угрозу безопасности. Однако для веб-приложения достаточно разрешить методы запросов GET, HEAD и POST. Мы можем настроить этот параметр, добавив соответствующую директиву Directory. Для этого откройте конфигурационный файл Apache, найдите Directory и добавьте следующую директиву внутрь, после чего перезапустите Apache
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
Включить защитный заголовок XSS
Межсайтовый скриптинг известен как (XSS), и это распространенная уязвимость, встречающаяся в веб-приложениях. Защита от межсайтового скриптинга (XSS) может отсутствовать во многих браузерах. Однако мы можем предотвратить некоторые XSS-атаки, добавив следующую запись в конфигурационный файл Apache и сохранив его. И перезапустите сервер Apache.
Header set X-XSS-Protection "1; mode=block"
Отключите TRACE HTTP Request
По умолчанию в Apache открыта опция Trace HTTP Request, позволяющая осуществлять межсайтовую трассировку. Эта опция позволяет хакеру легко украсть информацию о cookie. Чтобы предотвратить это, добавьте следующие параметры в конфигурационный файл Apache. И перезапустите Apache.
TraceEnable off
Предотвращение атак Clickjacking
Clickjacking, также известная как "атака на восстановление пользовательского интерфейса", - это вредоносная техника сбора кликов зараженного пользователя. Clickjacking обманом заставляет жертву (посетителя) перейти на зараженный сайт. Чтобы предотвратить это, нам необходимо использовать "X-FRAME-OPTION" в конфигурационном файле Apache. Для этого добавьте следующую строку в конфигурационный файл.
Header set X-FRAME-OPTIONS "SAMEORIGIN"
Безопасный файл cookie с флагом HTTPOnly
Без наличия HttpOnly и Secure можно украсть или манипулировать сессиями и cookies веб-приложений, и это опасно. Чтобы смягчить эту проблему, нам нужно убедиться, что модуль mod_header запущен на стороне сервера.
apachectl -M | grep header
Теперь добавьте следующую строку в основной конфигурационный файл Apache и перезапустите сервер Apache.
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Ограничение размера запроса
По умолчанию HTTP-запрос в Apache неограничен, поэтому веб-сервер подвержен DoS-атакам, так как он остается открытым для большого количества запросов. В таком случае важно установить ограничение для файлового запроса. Это можно сделать, добавив директиву LimitRequestBody в конфигурационный файл Apache.
Например, unixcop - это каталог, содержащий файлы, загруженные пользователями. Теперь мы ограничиваем размер загружаемого файла до 2K, чтобы пользователь не мог загрузить файл больше этого.
<Directory "/var/www/html">
LimitRequestBody 20000
</Directory