О сайте | Карта сайта | Календарь сайта | Содержание
www.shtogrin.com  
Главная  //  Библиотека  //  Веб  //  Модуль mod_rewrite  //  Примеры использование mod_rewrite  //  Блокировка IP адресов.

Блокировка IP адресов.

Mod_rewrite можно использовать для блокировки IP адресов. Отметим, что существуют более эффективные средства борьбы с надоедливыми IP адресами: фаерволы, директивы Deny и специальные модули. Рассмотрим как можно решить эту проблему с помощью  mod_rewrite. Создаем тектовый файл /path/blacklist.txt, следующего вида:

1.1.1.1 b
2.2.2.2 b

Пример отправки кода 403 для указанного списка IP адресов:

Rewritemap ip txt:/path/blacklist.txt 
RewriteCond ${ip:%{REMOTE_ADDR}} =b
RewriteRule .* - [F]

Примечание к примеру:

  • Rewritemap ip txt:/path/blacklist.txt
    Указание массива IP адресов
  • RewriteCond ${ipmap:%{REMOTE_ADDR}}=b
    Проверка наличия адреса в списке запрещенных
  • RewriteRule .* - [F]
    Послать код 403 (forbidden) для всех запросов

Пример редиректа на страницу /error.html для указанного списка IP адресов:

Rewritemap ip txt:/path/blacklist.txt 
RewriteCond ${ip:%{REMOTE_ADDR}} =b
RewriteCond %{request_uri} !=/error.html
RewriteRule .* /error.html [R,L]

Примечание к примеру:

  • Rewritemap ip txt:/path/blacklist.txt
    Указание массива IP адресов
  • RewriteCond ${ipmap:%{REMOTE_ADDR}}=b
    Проверка наличия адреса в списке запрещенных
  • RewriteCond %{request_uri} !=/error.html
    Если запрошенный адрес не /error.html
  • RewriteRule .* /error.html [R,L]
    Перенаправить на /error.html. [R,L] - редирект, последнее правило

Для текстового файла  и DBM файлов ключи поиска кэшируются ядром до тех пор пока не изменится mtime файла с массивом или пока не произойдет рестарт сервера. Таким образом, вы можете использовать достаточно большие ассоциативные массивы, потому что внешний поиск происходит только один раз.


08.01.2007


2006-2019, Roman Shtogrin