Назад | Перейти на главную страницу

запретить использование .htaccess с заблокированным списком IP-адресов на сайте stopforumspam.com не работает?

поэтому я пытаюсь использовать .htaccess, чтобы заблокировать большой список (50 000) IP-адресов подозрительного спама, которые я получил от этот сайт.

список имеет размер почти 1M, когда я добавляю директиву deny from для каждого адреса в списке ... но когда я применяю загруженный файл .htaccess к серверу, он блокируется, и страницы не загружаются с ошибкой 403.

мои вопросы...

  1. есть ли ограничение на размер файла .htaccess?
  2. есть лимит на количество deny from IP адреса, которые могут содержаться в файле?
  3. есть ли лучший способ сделать то, что я пытаюсь сделать на уровне сервера (я понимаю, что могу проверить список в веб-приложении во время отправки, но я пытаюсь изучить материал)

есть ли лучший способ сделать то, что я пытаюсь сделать на уровне сервера

Не знаю, лучше ли, но я предпочитаю это:

  1. создать для каждого IP-адреса новый файл со структурой типа deny/198/198.51.100.201
  2. используйте следующий код в вашем .htaccess, чтобы заблокировать IP:

    RewriteCond %{REMOTE_ADDR} ^([0-9]{1,3})\.
    RewriteCond /usr/www/{your_path}/deny/%1/%{REMOTE_ADDR} -f
    RewriteRule . - [F]
    

Я никогда не тестировал его, но я отказываюсь верить, что быстрее сравнивать каждый запрос с 50000 IP-адресами, чем пользоваться кешем inode файловой системы. Или строит Apache индекс перечисленных IP ?!

В конце концов, мне было неинтересно это знать, потому что Я использую эту технику предлагать моим посетителям капчу, чтобы разблокировать себя, если они были заблокированы случайно. Другие методы (allow, deny, iptables, ...) не предлагали такой функции.

Примечание: я использовал подпапку для первого блока ip, чтобы избежать более чем 32000 файлов в папке.

Нет никаких ограничений на размер файла .htaccess, кроме ограничений на размер файла ОС (обычно 2 ГБ или больше). Однако использование файлов .htaccess влечет за собой серьезные последствия для производительности из-за того, как Apache обрабатывает их рекурсивно (просматривая дерево каталогов) на загрузка каждой страницы. По факту, Apache не рекомендует использовать .htaccess за исключением случаев крайней необходимости, например нет доступа к конфигурации более высокого уровня.

Стандартный способ обработки блокировки IP - iptables, встроенный брандмауэр Linux. Вы можете использовать другие приложения для управления iptables, например Fail2ban. Видеть это сообщение в блоге чтобы сделать это с помощью Fail2ban на постоянной основе. Вы также можете заблокировать их, добавив маршрут: route add -host 192.168.0.123 reject. Помните, что вы можете использовать целые классы IP-адресов со всеми из них, поэтому вместо перечисления 192.168.0.1, 192.168.0.2, ... 192.168.0.254 вы можете указать сеть: 192.168.0.0/24.

Какой бы метод вы ни использовали, не забудьте будьте очень осторожны, чтобы не заблокировать себя, особенно из таких сервисов, как SSH.