Klichko_Vladimir

Рейтинг
68
Регистрация
21.12.2011
Должность
Мордобойщик 1 категории.
Интересы
Бить морды, добиваться справедливости и творить людям добро.
Ищу друзей по обсуждению Тизерной рекламы

Получит отчет.

Спасибо!

Не совсем по теме, но похожее.

С определенного айпи идет такое:

GET /favicon.ico HTTP/1.0" 200 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36 OPR/16.0.1196.80

Переодичность 1раз в 6 секунд. Что это может быть? Забанить сложно так как айпи разные от одного провайдера, динамические.

Это типо Ддос такой или что-то другое? И как с этим бороться?

Может кто-то уже сталкивался.

siv1987:
Klichko_Vladimir, должно работать. Если не работает значит может быть только один вариант - урл obratnaya-svyaz является результатом реврайта, и в ваш блок попадает преобразованный адрес. Отсюда следует что блок надо добавлять перед остальными реврайтами.

Делал так:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.2
RewriteCond %{REQUEST_URI} !/obratnaya-svyaz
RewriteRule ^ - [F,L]

# 403 for flooders
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*/)?edit$ - [L,F]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Это весь код. Что тут не так?

Милованов Ю.С:
http://htaccess.net.ru/doc/mod_rewrite/RewriteCond.php читать в самом низу после "Дополнительно вы можете устанавливать специальные флаги для Условие добавляя". Пункт Б [OR]

Испробовал. [OR] не помогает.

Если просто так указать:

RewriteCond %{REMOTE_ADDR} !=127.0.0.1

RewriteCond %{REMOTE_ADDR} !=127.0.0.2

То работает и без [OR]. Получается [OR] не нужен.

Добавил и

RewriteCond %{REQUEST_URI} !/obratnaya-svyaz

и ставил после IP [OR] - НЕ помогает.

siv1987:

Не должно, ведь условие должно сработать когда все правила будут true. А вообще поиграйтесь с логикой.

Так не прошло,

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.2
RewriteCond %{REQUEST_URI} !/obratnaya-svyaz
RewriteRule ^ - [F,L]

из 2 IP моего не было и на странице site.ru/obratnaya-svyaz мне показало 403 ошибку.

Также пробовал


...
RewriteCond %{REQUEST_URI} !^/obratnaya-svyaz
...

^ - тоже ничего не дал

Хелп ми плиз.

siv1987:
подсети нету, там регулярное выражение проверяется (если regexp то без знака "=", иначе сравнивается как простая строка).

...
RewriteCond %{REQUEST_URI} !/uri1
RewriteCond %{REQUEST_URI} !/uri2
RewriteRule .? - [F]

Не работает, делал так:


RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.2
RewriteCond %{REQUEST_URI} !/obratnaya-svyaz
RewriteRule ^ - [F,L]

Блокирует всех кроме 2х IP, страницу тоже блокирует для всех остальных.

Также так пробовал:


RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.2
RewriteRule ^ - [F,L]

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} !/obratnaya-svyaz
RewriteRule .? - [F]

Тоже страница site.ru/obratnaya-svyaz - тоже всем недоступна в методе POST кроме 2х IP.

Милованов Ю.С:
Я не разбираюсь, но напишу:)

Для www.site.ru/contacts и для www.site.ru/main.html

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.2
RewriteRule ^contacts|main\.html$ - [F,L]

Я тоже не силен, но вроде как это правило вышло такое:

НЕ пропускать всех с методом POST на страницы www.site.ru/contacts и www.site.ru/main.html

Кроме этих IP 127.0.0.1 и 127.0.0.2

А нужно: не пропускать всех кто с методом POST и не на страницы www.site.ru/contacts и для www.site.ru/main.html (тоесть если не на эти 2 страницы, то не пропускать всех), кроме 2 IP которым разрешено всё IP 127.0.0.1 и 127.0.0.2 и на любые страницы с POST

И еще заметил что подсеть не работает тут, например:

RewriteCond %{REMOTE_ADDR} !=127.0.0.1/18

работать не будет. Как это осуществить?

siv1987:
Под 127.0.0.1 и 127.0.0.2 имелось ввиду "определенные IP", не конкретные адреса. Можно 1, можно десять подобным образом перечислить.

Думаю что неправильные. POST используется повсеместно, для авторизации, загрузке файлов, публикации новостей и тд.

siv1987 ivan-lev или кто разбирается. Подскажите пожалуйста, как исключить еще определенные страницы, кроме определенных IP.

------------------------------------------------------

PS1 Метод подходит, так как работает над сайтом 1 человек и 1 Cron потому это лучший способ. Сейчас /edit, /undefined - потом еще может что-то добавиться. Этим способом просто будет блокировка для всех возможных с методом POST.

------------------------------------------------

PS2 Сейчас в логах уже нашел с POST-ом пытаются заходить на .php страницы служебные сайта.

awasome все работает, ставьте правило вначале, смотрите на 4-5 страницах этой темы куда именно. Тест фаил может на так создали, тоже проверьте.

Спасибо за ответ.

siv1987:
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.2
RewriteRule ^ - [F,L]

1) Почему именно 127.0.0.1 и 127.0.0.2 ? У меня по логам Cron работает на другом айпи. Или это у вас для примера? И вместо них можно 1 IP определенный указать?

2) Как думаете, правильные ли мои рассуждения насчет того, что POST только Cron использует?

У меня например форма обратной связи есть, ее наверно тоже будет блокировать.

Как исключить ещё и отдельные страницы от блокировки?

Например такую: мойСайт/обратнаяСвязь

----------------------------------------

Еще есть такого вида запросы:

GET /function%20()%7Bvar%20d=[];for(var%.....много_символов...;}return%20d;} HTTP/1.0" 404 1024 "http://НАШсайт/ОпределеннаяСтраница.html" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36

Как такие запросы блокировать?

Приходит в голову 2 метода:

1) это блокировать по слову function

2) по длине запроса

Можете подсказать, добрые люди, как осуществить эти 2 метода?

Ребята, большое спасибо тем, кто тут писал.

RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*/)?edit$ - [L,F]

Вот этот метод пригодился.

http://networker.by/blokirovka-post-zaprosov-v-htaccess/ - эту ссылку уже давали здесь. Последний пример, тот что процитировал. Сразу защите когда EDIT и с главной идет и с внутренних страниц тоже.

----------------------------------------------

----------------------------------

Я вот смотрю по логам и иногда просто есть запросы POST без /edit

Например:

POST / HTTP/1.0" 200 126356 "http://НашСайт/МсамаСтраница.html" "Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.12

Такие запросы тоже жрут много ресурсов хостинга, наверняка они тоже у вас есть.

У меня предложение заблокировать полностью POST кроме IP вашего сервера на котором хостинг у вас, потому как работает Cron как раз с методом POST.

Пользователи, вы сами и боты, все работают на методе GET.

---------------------------------------

Подскажите, кто разбирается, как осуществить Блокировку всех запросов POST кроме определенных IP?

Так чтобы блокировать запросы, пример которого привел выше.

Всего: 175