Apache HTTP Server, в просторечии называемый Apache, – одна из самых популярных и широко используемых в мире программных систем для веб-серверов.
Он обладает множеством возможностей, в том числе возможностью ограничения доступа к ресурсам на основе методов HTTP.
Это может быть особенно важно в тех случаях, когда по соображениям безопасности или логики работы приложения необходимо разрешить только определенные типы HTTP-запросов, например GET и POST.
В этой статье мы рассмотрим, как настроить веб-сервер Apache на разрешение только методов GET и POST.
Для этого необходимо отредактировать конфигурационный файл Apache, который может быть либо httpd.conf, либо apache2.conf, либо файл .htaccess, расположенный в каталоге с веб-ресурсами, которые необходимо защитить.
Примечание: Приведенные в данной статье инструкции предполагают, что у вас уже есть работающий сервер Apache.
Если это не так, то сначала необходимо установить и настроить Apache.
Шаги по ограничению методов GET и POST на Apache:
- Найдите конфигурационный файл
Расположение конфигурационного файла Apache зависит от операционной системы и способа установки.
Обычно он находится в каталоге /etc/apache2/ для систем Ubuntu/Debian и в каталоге /etc/httpd/ для систем CentOS/RHEL.
Например:
/etc/apache2/apache2.conf # Ubuntu/Debian /etc/httpd/conf/httpd.conf # CentOS/RHEL
Кроме того, для контроля доступа к определенным каталогам можно использовать файл .htaccess.
Если его нет, то можно создать его в каталоге ресурсов, которые необходимо защитить.
- Редактирование файла конфигурации
С помощью текстового редактора (например, nano, vi, emacs) откройте и отредактируйте файл конфигурации.
- Настройка контроля доступа
Чтобы разрешить только методы GET и POST, добавьте в файл следующий блок конфигурации.
Этот блок может быть размещен внутри тега для контроля, специфичного для каталога, или внутри тега для контроля, специфичного для местоположения.
<Directory "/var/www/html"> <LimitExcept GET POST> Deny from all </LimitExcept> </Directory>
В этом блоке вместо /var/www/html должен быть указан путь к директории, которую вы хотите ограничить.
Директива <LimitExcept> разрешает перечисленные методы (GET, POST) и запрещает все остальные.
- Сохранить изменения и выйти
После добавления необходимых настроек сохраните изменения и выйдите из текстового редактора.
Если вы используете nano, то это можно сделать, нажав Ctrl+X, затем Y для подтверждения сохранения изменений и, наконец, Enter для подтверждения имени файла для записи.
- Перезапустить Apache
Последний шаг – перезапуск Apache для применения изменений.
В зависимости от системы можно воспользоваться одной из следующих команд:
Теперь ваш сервер Apache должен разрешать только HTTP-запросы GET и POST к указанной директории.
Любые другие HTTP-методы, такие как PUT, DELETE, OPTIONS и т.д., будут запрещены.
Обратите внимание: методы, описанные в этой статье, предназначены для серверов с полным контролем и доступом к конфигурационным файлам.
Если вы используете тарифный план виртуального хостинга, то, возможно, у вас нет такого уровня доступа.
Обратитесь за помощью к своему хостинг-провайдеру или системному администратору.
см. также:
- 🔐 Как настроить файл htaccess в Apache на CentOS/RHEL
- 🔎 Парсинг полезной информации из логов сервера Apache с помощью awk
- 🌐 Как отключить ETags на сервере Apache
- 🌐 Исключение URL-адресов из ProxyPass на Apache
- 🌐 Настройка заголовков безопасности HTTP на сервере Nginx / Apache
- 🐳 Установка ModSecurity 3 с Apache в контейнере Docker