В моей конфигурации Apache я хочу позволить только заголовку Хоста базирующийся vhosts. Таким образом, я хотел бы заблокировать любой трафик IP-адресом только. У меня есть установленный mod_security2, но я только использую набор правила по умолчанию. Действительно ли mod_security2 является лучшим местом для конфигурирования этого, и если так, как?
Apache 2.4.7, Ubuntu 14.04, PHP 5.5.9
Добавьте это к Вашему <Directories>
главы в Вашем httpd.conf везде, где Вы хотите, чтобы он применялся (например,/var/www и/var/www/html главы по конфигурации по умолчанию)
<RequireAll>
Require expr ( -n %{HTTP_HOST} && %{HTTP_HOST} != "1.2.3.4" )
</RequireAll>
соответствия-n, "не пустые", и остальное соответствует Хосту: заголовок, не равный IP Вашего сервера. Вы, возможно, должны были бы повторить вторую половину со своим общедоступным и внутренним IP, в зависимости от Вашей веб-установки маршрутизации.
Я предложил бы, чтобы Вы прочитали мой ответ вопроса, мне нужны правила отбросить некоторый злонамеренный Apache, где объяснен, как загрузить и настроить OWASP ModSecurity Core Rule Set 3.x
. Однако вот простой пример правила, что Вы просите:
# Deny requests without a host header
#
SecRule &REQUEST_HEADERS:Host "@eq 0" \
"id:160, phase:2, log, drop, deny, status:403, \
tag:'requests-without-host-header'"
Самой важной вещью в вышеупомянутом правиле является параметр phase:2
, таким образом доступ будет запрещен перед ответом, но Вы сможете добавить правило в белый список при определенных обстоятельствах (при необходимости в этом) на phase:1
. Можно использовать nolog
, также конечный результат drop
, deny
и status:403
почти идентично, и можно решить оставить только один из этих трех аргументов.
Правило контроля id:160
в моем репозитории pa4080/www-security-assistant
для более сложного примера. Также можно хотеть считать раздел Missing/Empty Host Header
в REQUEST-920-PROTOCOL-ENFORCEMENT
от SpiderLabs/owasp-modsecurity-crs 3.x
.