- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго времени суток!
Имеется сервер с Fedora core 4. Нужно заблокировать через фаерволл доступ для определенного UserAgent, конкретно - для кривого менеджера закачки Download Master, который с регулярностью валит сервер. Подскажите, как это можно сделать?
1. это делают обычно не фаерволом, а самим вебсервером
2. надо настроить сервер, чтобы не падал из-за одного клиента
Варианты:
1 простой: На httpd сервере включить лог, написать малюсенькую програмку в которую скармливать лог через пайп, програмкой парсить лог и как только появляется человек с искомым User Agent'ом, его ip ставить в фаэрвол.
2 сложнее: перед httpd поставить враппер/прокси который бы смотрел что за User Agent, если искомый, то добавлял бы правило в фаэрвол =)
3 извращённый, написать свой httpd который бы ставил в фаэрвол правила на блок
ип с которого пришли с искомым юзер агентом.
#mod_setenvif
SetEnvIf User-Agent MSIE MustDie=1
Order allow,deny
Allow from all
Deny from env=MustDie
1. это делают обычно не фаерволом, а самим вебсервером
2. надо настроить сервер, чтобы не падал из-за одного клиента
Дело в том, что если он до апача добрался, это уже беда - он начинает валить тысячи запросов в секунду, и независмо от ответа апача, ресурсы жрутся. На уровне веб-сервера я пробовал блокировать, совершенно не помогает. А вот блокировка через iptables дает нужный эффект. Что касается настроить сервер - эта кривая софтина фактически досит сервак. Так что настройка в том и заключается, чтоб блокировать его нафиг.
что касательно вашего вопроса - то при необходимости блокировки именно через ФВ обратитесь сюда к пункту фильтрация по строковой маске (конечно отлавливать приход на 80 порту) или любому манулу по вашему ФВ
однако как писалось выше есть более легкие пути решения:
- mod_rewrite - с параметром проверки USER_AGENT (обработка ляжет на сервер)
- средствами любого языка программирования (perl,php) с проверкой пришедшего USER-AGENT (обработка ляжет на язык)
теперь ИМХО: реализуйте как вам хочется но помните следующие вещи:
первый вариант - сложнее править и отслеживать и качалку надо обрубать сразу, чтобы не оставляла открытых соединений (т.е. DROP)
второй и третий - при появлении большого количества нежелательных объектов (их списка) обработка ляжет на сервер и создаст дополнительную нагрузку (в случае apache лучше пользоваться httpd.conf (а не .htaccess, который читается при каждом обращении) т.к. он читается один раз при старте сервера)
#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 и прочие боты сервер не валят.
что касательно вашего вопроса - то при необходимости блокировки именно через ФВ обратитесь сюда к пункту фильтрация по строковой маске (конечно отлавливать приход на 80 порту) или любому манулу по вашему ФВ
Да, вот это наверно было бы идеальным решением проблемы, но к сожалению для этого надо патчить ядро, а на VPS это нереально. Сделаю как переползу на выделенный сервер. А пока видимо действительно придется парсить лог и добавлять правила в iptables. Спасибо за советы!
он начинает валить тысячи запросов в секунду
этот уродский DownloadMaster начинает сыпать запросы тысячами
Как раз количество внешних запросов стоит ограничивать независимо от юзер-агентов и вообще разновидности клиента и протокола.
Об этом много написано.
Как раз количество внешних запросов стоит ограничивать независимо от юзер-агентов и вообще разновидности клиента и протокола.
Об этом много написано.
А если эта качалка полезет с разных ип. Ну скажем через прокси?
Человек ведь пишет как матчить. По User Agent'у :)
P.S. По поводу парсинга лога, ето ещё и удобно тем, что нет необходимости
в каких-либо наворотах. Ну и 1 запрос с таким User Agent'ом пройдёт,
а остальные пойдут в никуда. Тоесть до апача доберётся только 1 запрос. Остальные нагрузки не создадут.
А если эта качалка полезет с разных ип. Ну скажем через прокси?
С любого IP надо ограничивать к-во коннектов. С любого. Там, вроде, первый пример так и делает.
По поводу парсинга лога, ето ещё и удобно тем, что нет необходимости
в каких-либо наворотах. Ну и 1 запрос с таким User Agent'ом пройдёт,
а остальные пойдут в никуда. Тоесть до апача доберётся только 1 запрос. Остальные нагрузки не создадут.
Вообще-то, конечно, справедливо. Повесить что-то вроде "tail -f <logfile> | grep <user-agent> | awk '{print $1}' | xargs ... "
Но, чем огород городить, может лучше snort на его перехват настроить? :)