The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

09.06.2009 07:00  Утилита для блокировки спамеров на шлюзе с пакетным фильтром ipfw

Утилита SpamBlock слушает заданный интерфейс через tcpdump и заносит в ipfw-таблицу клиентов, слишком часто пытающихся открывать сессии на TCP-порт 25. Разрешённая частота обращений к 25 порту задаётся через файл конфигурации. Файрволл ipfw должен содержать правило блокировки 25 порта для IP-адресов, находящихся в указанной таблице. При необходимости spamblock может быть легко приспособлен к любому файрволлу, например, к pf или iptables.

  1. Главная ссылка к новости (http://sources.homelink.ru/spa...)
Автор новости: Ilya Evseev
Тип: Программы
Ключевые слова: mail, spam
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Жирный ублюдок DBA (?), 12:52, 09/06/2009 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    А какой смысл если спамят все равно с ботнетов? :)
     
     
  • 2.4, Ilya Evseev (?), 13:30, 09/06/2009 [^] [ответить]    [к модератору]
  • +/
    > А какой смысл если спамят все равно с ботнетов? :)

    Мне нужно блокировать зараженные компьютеры в собственной сети
    (домашняя сеть на несколько тысяч клиентов).
    Предыдущий вариант реагировал недостаточно оперативно:
    http://www.google.ru/search?q=Ilya+Evseev+newsyslog+ipfw+count

     
     
  • 3.6, mitiok (??), 13:38, 09/06/2009 [^] [ответить]    [к модератору]
  • +/
    pf:

    # block local spambots
    block drop in quick on $int_if proto tcp from <spambots> to port 25
    pass in quick on $int_if proto tcp from any to port 25 flags S/SA keep state (max-src-conn-rate 5/60, overload <spambots> flush )


     
     
  • 4.10, Ilya Evseev (?), 13:52, 09/06/2009 [^] [ответить]    [к модератору]
  • +/
    Во-первых, у меня не pf :)

    Во-вторых, кроме блокировки, делаются уведомления и ведётся статистика,
    чтобы можно было объяснить клиенту, когда конкретно и за что именно его закрыли.

    Понятно, что решение с pf будет работать быстрее,
    но обертка вряд ли получится намного компактнее.

     
     
  • 5.13, PereresusNeVlezaetBuggy (ok), 14:06, 09/06/2009 [^] [ответить]    [к модератору]
  • +/
    >Во-первых, у меня не pf :)
    >
    >Во-вторых, кроме блокировки, делаются уведомления и ведётся статистика,
    >чтобы можно было объяснить клиенту, когда конкретно и за что именно его
    >закрыли.
    >
    >Понятно, что решение с pf будет работать быстрее,
    >но обертка вряд ли получится намного компактнее.

    Достаточно мониторить таблицу: либо из крона (тут хоть шелл-скриптом), либо демоном (лучше на C сваять тогда, pf(4) всё вполне подробно описывает). Каждая система предусматривает свои решения… В случае с ipfw логичнее ваше способ, конечно.

     
  • 1.3, netc (ok), 13:15, 09/06/2009 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    pf - вот это законченное решение

    жалко только, что когда ставишь synproxy  на правило с ssh слущающем к тому, же на tun интерфейсе ssh не работает ;(

    все остальное устраивает

    а в целом удобно, понятно и просто в отличии ИМХО от iptables

    но это моё мнение!

     
     
  • 2.7, Vaso Petrovich (?), 13:39, 09/06/2009 [^] [ответить]    [к модератору]  
  • +/
    >а в целом удобно, понятно и просто в отличии ИМХО от iptables

    не осилил, не пались...

     
     
  • 3.9, netc (ok), 13:46, 09/06/2009 [^] [ответить]    [к модератору]  
  • +/
    1. а что есть решение моей наболевшей проблемы с synproxy и ssh?

    2. или ты имел в виду iptables
    почему же не осилил, осилил понравилось: есть свои плюсы

    но pf понравился куда больше

     
  • 3.14, PereresusNeVlezaetBuggy (ok), 14:08, 09/06/2009 [^] [ответить]    [к модератору]  
  • +/
    >>а в целом удобно, понятно и просто в отличии ИМХО от iptables
    >
    >не осилил, не пались...

    Ну я вот осилил, и что? Всё равно бегу от него как чёрт от ладана. iptables, конечно, предоставляет больше абстрактных возможностей — зато pf делает то, что требуется, с минимальными потерями. Конечно, можно пользоваться fwbuilder'ом…

     
  • 2.12, PereresusNeVlezaetBuggy (ok), 14:04, 09/06/2009 [^] [ответить]    [к модератору]  
  • +/
    synproxy нужен только для правил, управляющим проходящими потоками, для TCP-соединений, инициированых самой машиной, либо к самой машине, оно просто неактуально. Почитайте внимательно ещё раз его описание. :) Или я вас неправильно понял?
     
  • 1.5, mitiok (??), 13:34, 09/06/2009 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    имхо маразматично. лучшеб добавили возможность как в pf: max-src-conn-rate N/M, overload table. можно былоб и спам резать и перебор паролей на ссш/фтп. непонятный инструмент...
     
     
  • 2.11, Ilya Evseev (?), 13:57, 09/06/2009 [^] [ответить]    [к модератору]  
  • +/
    > лучшеб добавили возможность как в pf: max-src-conn-rate N/M, overload table.

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

    > можно былоб и спам резать и перебор паролей на ссш/фтп.

    При желании можно дописать spamblock, чтобы он работал с несколькими портами,
    но для меня актуален только smtp.

     
     
  • 3.15, XoRe (ok), 17:21, 09/06/2009 [^] [ответить]     [к модератору]  
  • +/
    В свое время, частично решил проблему с помощью ipfw allow tcp from any to not ... весь текст скрыт [показать]
     
  • 1.16, Arti (??), 17:37, 09/06/2009 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    На самом деле подобных программ много.
    Вообще использование tcpdump выглядит мягко говоря экзотически.

    Как тут писалось задачу можно решить используя только пакетный фильтр.

    Если нужно больше возможностей по логированию и оповещению, можно воспользоваться внешней программой например http://smtp-proxy.klolik.org/

    Тут уже можно фильтровать по типу аутентификации, частоте и т.п. правда гоняет много данных через юзерспайс ... Защитить программу от доса можно на уровне пакетного фильтра. Кстати при желании можно прикрутить туда антивирус, хотя такая возможность, на мой взгляд, является скорее опасной чем полезной...

     
  • 1.17, XoRe (ok), 17:53, 09/06/2009 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Прошу воспринимать все предложения не в контексте "это не нужно, ибо уже есть вот".
    А в контексте "это можно заюзать для улучшения скрипта".
    =)
     
  • 1.18, Arti (??), 18:10, 09/06/2009 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Не... не ДО или ПОСЛЕ а взамен ;)
     
     
  • 2.19, Anton Kvashin (?), 15:03, 10/06/2009 [^] [ответить]    [к модератору]  
  • +/
    Подобное делали на openbsd (с pf'ом конечно).

    Как вариант (для Linux, например), поставить MTA (exim, который умеет ratelimit, smtp auth-форвардинг), на который заводить весь smtp-трафик и анализировать логи, делая блокировку/перенаправление с помощью fail2ban (умеет дружить с iptables, tcp wripper, ipfw).

    Тем самым, можно выделить не только агрессивные подключения, но и любые неугодные вашей smtp-политике. Плюс проверка на вирусы, etc.

    fail2ban добавит/удалит автоматически (bantime) нужные цепочки (можно определять свои), ну а веб-сервер выдаст предупреждение-заглушку юзеру на обращение по любой ссылке.

     
  • 1.20, medj (?), 12:00, 11/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Кто знает что в логи выводит данная утилита? Конечно, использование tcpdump Тож смущает..
     
     
  • 2.22, Ilya Evseev (?), 03:37, 29/04/2010 [^] [ответить]    [к модератору]  
  • +/
    > что в логи выводит данная утилита?

    Кусок из реальной жизни:
    ...
    [2009.06.01 11:34:41]    192.168.1.21    457:36430
    [2009.06.01 11:34:42]    10.11.22.25     1798:36431
    [2009.06.01 11:34:42]    10.11.22.25     1799:36431
    [2009.06.01 11:34:42]    10.11.22.25     1800:36431    5:11 10:18 15:30 20:39 60:105 300:525
    [2009.06.01 11:34:42]  Block 10.11.22.25: trap by rule 300:600 ticks:seconds, actually 525 seconds
    [2009.06.01 11:34:44]    192.168.1.21    458:36433
    [2009.06.01 11:34:46]    192.168.1.21    459:36435
    [2009.06.01 11:34:48]    192.168.1.21    460:36437    5:13 10:25 20:50
    ...
    "457:36430" означает "за 36430 секунд с начала работы Спамблока данный клиент стучался на 25 порт 457 раз".

    "5:13 10:25 20:50" означает - "5 последних обращений на 25 порт произошли в течение 13 секунд, 10 последних обращений - в течение 25 секунд, 20 обращений - за 50 секунд".

    Эта статистика выводится каждый раз, когда фактическое количество становится кратным количеству в соответствующих правилах, т.е. надо принимать решение - блокировать или нет?

    Клиент 10.11.22.25 был заблокирован, т.к. 300 обращений у него произошли менее чем за 600 секунд.

     
  • 1.21, Ilya Evseev (?), 03:23, 29/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Теперь поддерживаются: pf, ipfw2, iptables, iptables+ipset.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor