Блокировка UserAgent через фаерволл

12
VR
На сайте с 09.10.2006
Offline
12
3618

Доброго времени суток!

Имеется сервер с Fedora core 4. Нужно заблокировать через фаерволл доступ для определенного UserAgent, конкретно - для кривого менеджера закачки Download Master, который с регулярностью валит сервер. Подскажите, как это можно сделать?

Roxis
На сайте с 19.11.2006
Offline
40
#1

1. это делают обычно не фаерволом, а самим вебсервером

2. надо настроить сервер, чтобы не падал из-за одного клиента

O
На сайте с 08.01.2002
Offline
157
og
#2

Варианты:

1 простой: На httpd сервере включить лог, написать малюсенькую програмку в которую скармливать лог через пайп, програмкой парсить лог и как только появляется человек с искомым User Agent'ом, его ip ставить в фаэрвол.

2 сложнее: перед httpd поставить враппер/прокси который бы смотрел что за User Agent, если искомый, то добавлял бы правило в фаэрвол =)

3 извращённый, написать свой httpd который бы ставил в фаэрвол правила на блок

ип с которого пришли с искомым юзер агентом.

Пока мы живы, смерти нет. Когда придёт она, не будет нас.
Roxis
На сайте с 19.11.2006
Offline
40
#3

#mod_setenvif

SetEnvIf User-Agent MSIE MustDie=1

Order allow,deny

Allow from all

Deny from env=MustDie

VR
На сайте с 09.10.2006
Offline
12
#4
Roxis:
1. это делают обычно не фаерволом, а самим вебсервером
2. надо настроить сервер, чтобы не падал из-за одного клиента

Дело в том, что если он до апача добрался, это уже беда - он начинает валить тысячи запросов в секунду, и независмо от ответа апача, ресурсы жрутся. На уровне веб-сервера я пробовал блокировать, совершенно не помогает. А вот блокировка через iptables дает нужный эффект. Что касается настроить сервер - эта кривая софтина фактически досит сервак. Так что настройка в том и заключается, чтоб блокировать его нафиг.

bonzaza
На сайте с 10.06.2006
Offline
82
#5

что касательно вашего вопроса - то при необходимости блокировки именно через ФВ обратитесь сюда к пункту фильтрация по строковой маске (конечно отлавливать приход на 80 порту) или любому манулу по вашему ФВ

однако как писалось выше есть более легкие пути решения:

- mod_rewrite - с параметром проверки USER_AGENT (обработка ляжет на сервер)

- средствами любого языка программирования (perl,php) с проверкой пришедшего USER-AGENT (обработка ляжет на язык)

теперь ИМХО: реализуйте как вам хочется но помните следующие вещи:

первый вариант - сложнее править и отслеживать и качалку надо обрубать сразу, чтобы не оставляла открытых соединений (т.е. DROP)

второй и третий - при появлении большого количества нежелательных объектов (их списка) обработка ляжет на сервер и создаст дополнительную нагрузку (в случае apache лучше пользоваться httpd.conf (а не .htaccess, который читается при каждом обращении) т.к. он читается один раз при старте сервера)

Если не мы, то кто?
VR
На сайте с 09.10.2006
Offline
12
#6
Roxis:
#mod_setenvif
SetEnvIf User-Agent MSIE MustDie=1
Order allow,deny
Allow from all
Deny from env=MustDie

Я прошу прощения за возможно идиотские вопросы, просто с юникс-серверами раньше совсем не работал. Я правильно понял, что Вы советуете установить модуль mod_setenvif, а затем прописать соответствующий запрет в httpd.conf? Я боюсь это не сработает, получив отлуп этот уродский DownloadMaster начинает сыпать запросы тысячами, сервак то у меня валится не на том чтоб отдавать что-то этому менеджеру закачки, а именно на множественных отлупах - сейчас у меня стоит просто ограничение на число соединений с одного IP. Да, проблема возникает ТОЛЬКО с DownloadMaster, всякие там WGET, DiscoComander, DA и прочие боты сервер не валят.

VR
На сайте с 09.10.2006
Offline
12
#7
bonzaza:
что касательно вашего вопроса - то при необходимости блокировки именно через ФВ обратитесь сюда к пункту фильтрация по строковой маске (конечно отлавливать приход на 80 порту) или любому манулу по вашему ФВ

Да, вот это наверно было бы идеальным решением проблемы, но к сожалению для этого надо патчить ядро, а на VPS это нереально. Сделаю как переползу на выделенный сервер. А пока видимо действительно придется парсить лог и добавлять правила в iptables. Спасибо за советы!

Lupus
На сайте с 02.11.2002
Offline
241
#8
Velotourism.RU:
он начинает валить тысячи запросов в секунду
Velotourism.RU:
этот уродский DownloadMaster начинает сыпать запросы тысячами

Как раз количество внешних запросов стоит ограничивать независимо от юзер-агентов и вообще разновидности клиента и протокола.

Об этом много написано.

There are two types of people in this world: 1. Those who can extrapolate from incomplete data.
O
На сайте с 08.01.2002
Offline
157
og
#9
Lupus:
Как раз количество внешних запросов стоит ограничивать независимо от юзер-агентов и вообще разновидности клиента и протокола.
Об этом много написано.

А если эта качалка полезет с разных ип. Ну скажем через прокси?

Человек ведь пишет как матчить. По User Agent'у :)

P.S. По поводу парсинга лога, ето ещё и удобно тем, что нет необходимости

в каких-либо наворотах. Ну и 1 запрос с таким User Agent'ом пройдёт,

а остальные пойдут в никуда. Тоесть до апача доберётся только 1 запрос. Остальные нагрузки не создадут.

Lupus
На сайте с 02.11.2002
Offline
241
#10
og:
А если эта качалка полезет с разных ип. Ну скажем через прокси?

С любого IP надо ограничивать к-во коннектов. С любого. Там, вроде, первый пример так и делает.

og:
По поводу парсинга лога, ето ещё и удобно тем, что нет необходимости
в каких-либо наворотах. Ну и 1 запрос с таким User Agent'ом пройдёт,
а остальные пойдут в никуда. Тоесть до апача доберётся только 1 запрос. Остальные нагрузки не создадут.

Вообще-то, конечно, справедливо. Повесить что-то вроде "tail -f <logfile> | grep <user-agent> | awk '{print $1}' | xargs ... "

Но, чем огород городить, может лучше snort на его перехват настроить? :)

12

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