Лучшие практики обеспечения безопасности веб-сервера Apache

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

Apache

Поддерживайте 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"

Без наличия 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

Добавить комментарий