- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Модуль для апача - это история про свой сервер. Там есть решения по защите и без извращений с анализом лог-файла.
Я же говорю про обычный виртуальный хостинг, где кроме .htaccess ничего и нет.
А строк, мне кажется, можно даже меньше брать. :)
У меня по 30.000 просмотров за сутки, но даже в час пик под атакой, из 100 строк, 50 будут POST'ом...
Ааа… ну тогда да, только самостоятельный анализ скриптиком.
Только как он будет банить ip? Добавлять в .htaccess?
;11997372']Только как он будет банить ip? Добавлять в .htaccess?
Не вижу другого варианта.
Вот в данный момент у меня получилась вот такая унылая картина:
$ tail -n 100 access.log | grep "POST" | cut -d" " -f2 |sort|uniq -c|sort -n
93 85.236.8.194
Из 100 строк - 93 паразитные.
Ну и дальше добавляйте
|awk '{if($1>3){printf("Deny from %s",$2);}}' >> /path/to/.htaccess
И удалять их оттуда тоже не забывайте… как-то :)
---------- Добавлено 29.07.2013 в 21:16 ----------
И ещё тут будет такая проблема, что если в лог в минуту пишется меньше 100 записей, то "плохие" айпишники будут повторно добавляться в .htaccess
Удалять можно хоть руками, хоть вторым скриптом раз в сутки.
Но все не так просто :)
<Limit GET POST HEAD>
Order Allow,Deny
Deny from 141.101.98.157
Deny from 85.236.8.194
Allow from All
</Limit>
Просто в конец файла дописывать нельзя... :)
Удалять можно хоть руками, хоть вторым скриптом раз в сутки.
Просто в конец файла дописывать нельзя... :)
Так уберите "<Limit></Limit>" (И "Order" и "Allow from all"). Я не думаю, что вам принципиально важно оставить некоторые изощрённые http-методы :)
;11997402']И ещё тут будет такая проблема, что если в лог в минуту пишется меньше 100 записей, то "плохие" айпишники будут повторно добавляться в .htaccess
С количеством записей каждый может играться на свое усмотрение.
Раз в минуту, я тоже, наверное, погорячился. Можно и 3. :)
---------- Добавлено 29.07.2013 в 21:22 ----------
;11997421']Так уберите "<Limit></Limit>" (И "Order" и "Allow from all"). Я не думаю, что вам принципиально важно оставить некоторые изощрённые http-методы :)
Перед закрывающим Limit все равно должна быть:
Allow from All
Allow from All
Оно и так по-умолчанию allow from all при дефолтном order-e.
Спасибо! Работает.
Только надо еще grep " 200 " добавить, чтобы он реально каждую минуту заново в .htaccess не дописывал один и тот же адрес :)
$ tail -n 100 access.log | grep "POST" | grep " 200 " | cut -d" " -f2 |sort|uniq -c |awk '{if($1>3){printf("Deny from %s\n",$2);}}' >> /path/to/.htaccess
Хостер еще посоветовал: "Можно попробовать средствами .htaccess запретить POST запросы, если у пользователя нет cookie. Этот способ должен определить роботов"
Спасибо! Работает.
Только надо еще grep " 200 " добавить, чтобы он реально каждую минуту заново в .htaccess не дописывал один и тот же адрес :)
И как это поможет? :)
Хостер еще посоветовал: "Можно попробовать средствами .htaccess запретить POST запросы, если у пользователя нет cookie. Этот способ должен определить роботов"
Тоже хороший вариант. Особенно, если разнообразить его ява-скриптом.
;11997602']И как это поможет? :)
Очень просто. POST идет постоянно, пока он не заблокирован, имеем код сервера 200, когда заблокирован - 403.
Т.е. если 200 находится - надо блокировать, если не находится - не надо.