Запрет в htaccess на доступ к POST /edit

[umka]
На сайте с 25.05.2008
Offline
456
#121
BrimStone:
Модуль для апача - это история про свой сервер. Там есть решения по защите и без извращений с анализом лог-файла.
Я же говорю про обычный виртуальный хостинг, где кроме .htaccess ничего и нет.
А строк, мне кажется, можно даже меньше брать. :)

У меня по 30.000 просмотров за сутки, но даже в час пик под атакой, из 100 строк, 50 будут POST'ом...

Ааа… ну тогда да, только самостоятельный анализ скриптиком.

Только как он будет банить ip? Добавлять в .htaccess?

Лог в помощь!
[Удален]
#122
'[umka:
;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 паразитные.

[umka]
На сайте с 25.05.2008
Offline
456
#123

Ну и дальше добавляйте

|awk '{if($1>3){printf("Deny from %s",$2);}}' >> /path/to/.htaccess

И удалять их оттуда тоже не забывайте… как-то :)

---------- Добавлено 29.07.2013 в 21:16 ----------

И ещё тут будет такая проблема, что если в лог в минуту пишется меньше 100 записей, то "плохие" айпишники будут повторно добавляться в .htaccess

[Удален]
#124

Удалять можно хоть руками, хоть вторым скриптом раз в сутки.

Но все не так просто :)

<Limit GET POST HEAD>

Order Allow,Deny

Deny from 141.101.98.157

Deny from 85.236.8.194

Allow from All

</Limit>

Просто в конец файла дописывать нельзя... :)

[umka]
На сайте с 25.05.2008
Offline
456
#125
BrimStone:
Удалять можно хоть руками, хоть вторым скриптом раз в сутки.

Просто в конец файла дописывать нельзя... :)

Так уберите "<Limit></Limit>" (И "Order" и "Allow from all"). Я не думаю, что вам принципиально важно оставить некоторые изощрённые http-методы :)

[Удален]
#126
'[umka:
;11997402']И ещё тут будет такая проблема, что если в лог в минуту пишется меньше 100 записей, то "плохие" айпишники будут повторно добавляться в .htaccess

С количеством записей каждый может играться на свое усмотрение.

Раз в минуту, я тоже, наверное, погорячился. Можно и 3. :)

---------- Добавлено 29.07.2013 в 21:22 ----------

'[umka:
;11997421']Так уберите "<Limit></Limit>" (И "Order" и "Allow from all"). Я не думаю, что вам принципиально важно оставить некоторые изощрённые http-методы :)

Перед закрывающим Limit все равно должна быть:

Allow from All

[umka]
На сайте с 25.05.2008
Offline
456
#127
BrimStone:

Allow from All

Оно и так по-умолчанию allow from all при дефолтном order-e.

[Удален]
#128

Спасибо! Работает.

Только надо еще 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. Этот способ должен определить роботов"

[umka]
На сайте с 25.05.2008
Offline
456
#129
BrimStone:
Спасибо! Работает.
Только надо еще grep " 200 " добавить, чтобы он реально каждую минуту заново в .htaccess не дописывал один и тот же адрес :)

И как это поможет? :)

BrimStone:
Хостер еще посоветовал: "Можно попробовать средствами .htaccess запретить POST запросы, если у пользователя нет cookie. Этот способ должен определить роботов"

Тоже хороший вариант. Особенно, если разнообразить его ява-скриптом.

[Удален]
#130
'[umka:
;11997602']И как это поможет? :)

Очень просто. POST идет постоянно, пока он не заблокирован, имеем код сервера 200, когда заблокирован - 403.

Т.е. если 200 находится - надо блокировать, если не находится - не надо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий