Как заблокировать нежелательные хосты в .htaccess?

Эти правила работают:

      <RequireAll>
Require all granted
Require not ip 1.22.333.444
.
.
.
</RequireAll>

Эти правила не работают:

      <RequireAll>
Require all granted
.
.
.
Require not host bad_host
</RequireAll>

Эти правила также не работают:

      <IfModule mod_rewrite.c>
RewriteCond %{REMOTE_HOST} (163data|amazonaws|colocrossing|poneytel) [NC]
RewriteRule .* - [F,L]
</IfModule>

Я написал в файле вверху:

      HostnameLookups On

Результатом было сообщение об ошибке, потому что эта команда не разрешена в .htaccess. Поэтому я удалил это заявление.

В Apache есть «удаленный_хост», соответствующий определенному IP. Я хочу предотвратить посещение моего сайта нежелательными хостами, такими как спамеры и т. д., которые генерируют много бесполезного трафика на моем сайте.

Что не так в приведенном выше примере кода?

1 ответ

должен быть установлен в конфигурации сервера для REMOTE_HOSTсерверная переменная, которую нужно установить. Это не может быть установлено в .htaccess(как вы нашли). Это Offпо умолчанию и часто навсегда отключен на общих хостах по соображениям производительности.

Однако, Require [not] host bad_hostне зависит от HostnameLookupsустановлен, поэтому все еще должен работать (при условии, что хост не отключил это каким-либо образом). Обратите внимание, что bad_hostдопускает частичное совпадение, сопоставление с конца и сопоставление только полных сегментов хоста. например. ample.comа также foo.bar.exampleне будет соответствовать foo.bar.example.com, но example.comа также bar.example.comбудут.

Обратите внимание, что Require [not] hostзаставляет Apache выполнять «двойной обратный поиск DNS». Сначала выполняется поиск имени хоста (обратный поиск DNS) по IP-адресу клиента, а затем выполняется прямой поиск имени хоста для проверки соответствия IP-адреса. Если это не соответствует, проверка завершается неудачно.

Может быть forward-dnsдостаточно только проверки (требуется Apache 2.4.19)? Это выполняет только обратный поиск DNS для получения имени хоста. Имя хоста не проверено.

Например:

      Require not forward-dns example.com
Другие вопросы по тегам