el_misho Posted April 4, 2011 Posted April 4, 2011 Здравствуйте, Есть Ubuntu server + iptables + squid. Пользователи нахватали вирусни и постоянно флудят по 25 порту: 00:00:14.132027 IP 10.10.5.65.1195 > 65.55.92.168.25: Flags [s], seq 229799778, win 65535, options [mss 1460,nop,nop,sackOK], length 0 00:00:02.296851 IP 10.10.5.65.1230 > 65.55.37.88.25: Flags [s], seq 611220249, win 65535, options [mss 1460,nop,nop,sackOK], length 0 00:00:00.670760 IP 10.10.5.65.1195 > 65.55.92.168.25: Flags [s], seq 229799778, win 65535, options [mss 1460,nop,nop,sackOK], length 0 00:00:02.313485 IP 10.10.5.65.1230 > 65.55.37.88.25: Flags [s], seq 611220249, win 65535, options [mss 1460,nop,nop,sackOK], length 0 00:00:02.260997 IP 10.10.5.65.1315 > 65.55.92.168.25: Flags [s], seq 1877130857, win 65535, options [mss 1460,nop,nop,sackOK], length 0 00:00:01.460691 IP 10.10.5.65.1195 > 65.55.92.168.25: Flags [s], seq 229799778, win 65535, options [mss 1460,nop,nop,sackOK], length 0 В качестве временного решения для флудящего ip закрываем на файерволе 25 порт, связываемся с ним по телефону и просим сделать полную проверку компа на вирусы: iptables -I FORWARD 1 -p tcp -s 10.10.5.65 --dport 25 -j REJECT --reject-with tcp-reset Конечно, это не есть правильное решение - так как с каждым днем их становиться все больше (ожидается эпидемия) и всех не зарежешь и не обзвонишь. Кто-нибудь может посоветовать как правильно и грамотно бороться с SMTP флудом ??? Какие нибудь интеллектуальные методы дропать пользователя. Я знаю что в iptables можно выставить ограничение на скорость передачи пакетов (например не больше N пакетов в минуту). Кто как с этим борется? Вставить ник Quote
fedusia Posted April 4, 2011 Posted April 4, 2011 iptables -A FORWARD -s 192.168.0.0/16 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --set --name SMTP --rsource iptables -A FORWARD -s 192.168.0.0/16 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name SMTP --rsource -j REJECT --reject-with icmp-port-unreachable 5 соединений в минуту с 1 ip затем следует блокировка. Вставить ник Quote
el_misho Posted April 4, 2011 Author Posted April 4, 2011 а если он вылечился как автоматически разбанивать? Вставить ник Quote
marikoda Posted April 4, 2011 Posted April 4, 2011 а если он вылечился как автоматически разбанивать? А зачем "разбанивать" ? Нормальному юзеру достаточно 5 коннектов по порту 25 наружу, он и не заметит ничего. Вставить ник Quote
gavru Posted April 4, 2011 Posted April 4, 2011 А зачем "разбанивать" ? Нормальному юзеру достаточно 5 коннектов по порту 25 наружу, он и не заметит ничего. Собственно хочу небольшую правку внести, для пользователя 5 коннектов обычно маловато, рабочая станция в офисах где разрешены icq и доступ на прочие ресурсы например берут от 1 до 50 коннектов в разные периоды времени, но больше 50ти обычно уже говорит о проблемах, собственно если завёлся вирус то видел и 30000 коннектов :) это уже натуральный жёсткий флуд :) Вставить ник Quote
Ivan Rostovikov Posted April 4, 2011 Posted April 4, 2011 Я ipset-ом создаю 3 класса адресов/подсетей для которых фильтрация не делается адресов/подсетей для которых фильтрация делается для маштабов предприятия. адресов/подсетей для которых фильтрация делается для 1-го пользователя (5 соединений в минуту) Вставить ник Quote
st_re Posted April 4, 2011 Posted April 4, 2011 50 коннектов на 25 порт ? Офисам можно поставить по 10. По письменной заявке ограничение снять. Всем остальным по 5. Вставить ник Quote
el_misho Posted April 4, 2011 Author Posted April 4, 2011 Нашел скриптик spamblock http://sources.homelink.ru/spamblock/. Под описание вроде то что нужно. Попробую с ним разобраться. Кто-нибудь пробовал с ним работать? Вставить ник Quote
fedusia Posted April 4, 2011 Posted April 4, 2011 а если он вылечился как автоматически разбанивать? В данном примере мы разрешаем 5 соединений в минуту по 25 порту, все остальное мы блокируем. И так каждую минуту. Действует давно и классно. Вставить ник Quote
el_misho Posted April 4, 2011 Author Posted April 4, 2011 а если он вылечился как автоматически разбанивать? В данном примере мы разрешаем 5 соединений в минуту по 25 порту, все остальное мы блокируем. И так каждую минуту. Действует давно и классно. А при таком раскладе, разве клиент (точнее злобный вирус) не сможет рассылать спам рассылку? Даже имея в своём распоряжении 5 коннекшенов? Вставить ник Quote
NiTr0 Posted April 4, 2011 Posted April 4, 2011 А при таком раскладе, разве клиент (точнее злобный вирус) не сможет рассылать спам рассылку? Даже имея в своём распоряжении 5 коннекшенов? Нет, т.к. регистрация коннекта в списке идет до его реджекта. Т.е. - бот отправил 5 писем, и дальше безуспешно долбится до посинения через файрвол. Можно кол-во писем и время конечно увеличить, к примеру, 20-30 писем за 15 минут... Вставить ник Quote
el_misho Posted April 4, 2011 Author Posted April 4, 2011 А при таком раскладе, разве клиент (точнее злобный вирус) не сможет рассылать спам рассылку? Даже имея в своём распоряжении 5 коннекшенов? Нет, т.к. регистрация коннекта в списке идет до его реджекта. Т.е. - бот отправил 5 писем, и дальше безуспешно долбится до посинения через файрвол. Можно кол-во писем и время конечно увеличить, к примеру, 20-30 писем за 15 минут... Что-то отпало желание делать через spamblock (не вызывает доверие постоянное сканирование tcpdump). Разобрал модуль recent. Т.е как я понимаю происходит такая ситуация: 1) Приходит от вирусни с хоста #1 новый запрос на 25 порт. И сразу попадает в первое правило с -m recent --set --name SMTP. В этом правеле, IP хоста #1 записывается в таблицу 'SMTP' и появляется запись о времени последнего его появления. 2) Приходит через 5 секунд следующий пакет от хоста #1 также идет сначала в первое правило потом во второе. Обновляется временная метка и счетчик. Во втором правиле проверяется не является ли этот пакет по счету >= --hitcount (5 из примера) за последние N секунд (60 сек из примера). Если является, то пакет отбрасывается, если нет то временная запись просто обновляется и пакет проходит дальше. Т.е как я понимаю допустим если скорость 'рассылки' сообщений спам ботом (это я например могу оценить с помощью tcpdump) постоянна и больше чем позволено отсылать за единицу времени (например за 60 секунд) то он (бот) отошлет hitcount сообщений и после этого всё вновь сгенерированные пакеты просто будут отбрасываться. Так как временная метка в recent будет постоянно обновлятся и в счетчике пакетов будет постоянно держаться это значение. Я правильно понял? P.S. при этом как я понимаю обычный http трафик ведь будет проходить? он же только пакеты на 25 режектить будет. Вставить ник Quote
Yaten Posted April 4, 2011 Posted April 4, 2011 у меня админ в 20-22 смотрит НАС 1-2 раза в неделю и банит IP замеченный в рассылке спама. И жалоб от ТТК вроде нету. За 2 месяца накопилось около 40 банов. Бан как говорится до востребованния. Пожалуется на почту - пролечим пользователя и/или ПК и снимаем Бан. Вставить ник Quote
el_misho Posted April 4, 2011 Author Posted April 4, 2011 Никак не пойму, что он ругается. Правила даже прописываются, но выдается каждый раз ошибка: root@ubuntu:~# iptables -m recent --help /usr/local/libexec/xtables/libxt_recent.so: /usr/local/libexec/xtables/libxt_recent.so: undefined symbol: xt_params iptables v1.4.1.1 Usage: iptables -[AD] chain rule-specification [options] iptables -[RI] chain rulenum rule-specification [options] iptables -D chain rulenum [options] iptables -[LS] [chain [rulenum]] [options] iptables -[FZ] [chain] [options] iptables -[NX] chain iptables -E old-chain-name new-chain-name iptables -P chain target [options] iptables -h (print this help information) Commands: Either long or short options are allowed. --append -A chain Append to chain --delete -D chain Delete matching rule from chain --delete -D chain rulenum Delete rule rulenum (1 = first) from chain --insert -I chain [rulenum] Insert in chain as rulenum (default 1=first) --replace -R chain rulenum Replace rule rulenum (1 = first) in chain --list -L [chain [rulenum]] List the rules in a chain or all chains --list-rules -S [chain [rulenum]] Print the rules in a chain or all chains --flush -F [chain] Delete all rules in chain or all chains ...... и т.д. Вставить ник Quote
NiTr0 Posted April 4, 2011 Posted April 4, 2011 Никак не пойму, что он ругается. Что-то у вас криво собралось. Да и зачем было иптейблс пересобирать из исходников... Вставить ник Quote
el_misho Posted April 4, 2011 Author Posted April 4, 2011 Никак не пойму, что он ругается. Что-то у вас криво собралось. Да и зачем было иптейблс пересобирать из исходников... ну это тестовая у меня система, перекомпилял для модуля ipp2p (или может ещё для чего, не помню). запустил данные правила на рабочей машине, никаких ошибок он не выдал. Спам запросы начали дропаться после превышения лимита для определенного хоста. Всё работает ГУД! Всем спасибо! Вставить ник Quote
Ilya Evseev Posted April 6, 2011 Posted April 6, 2011 Нашел скриптик spamblock http://sources.homelink.ru/spamblock/. Под описание вроде то что нужно. Попробую с ним разобраться. Кто-нибудь пробовал с ним работать? Я пробовал. Вопросы задавайте здесь: http://forum.nag.ru/forum/index.php?showtopic=54539 Вставить ник Quote
fozz Posted April 6, 2011 Posted April 6, 2011 (edited) А почему бы не избавиться от спама вовсе? Не претендую на идеал, но всеже послушайте: Закрываете 25/tcp наружу совсем, а разрешаете только на локальный релей с принудительной аутентификацией (SASL). Если кому-то надо все-таки очень отправить почту наружу не через ваш релей, то почти все современные публичные сервисы принимают почту на 587/tcp, специальный порт для получения мыла от клиентов, если что.. Если и этого недостаточно, то особо умным разрешаем слать почту напрямую (отдельная пипка в биллинге). При такой схеме за год у меня было два письма на abuse@, в одном случае хидеры показывали, что у абонента увели пароль на SASL и от его имени слали спам, во-втором случае какой-то редкий вирус отправил письмо через 465/tcp (over SSL). p.s. http://rfc2.ru/3013.rfc пункт 5.4 Edited April 6, 2011 by fozz Вставить ник Quote
Ivan_83 Posted April 6, 2011 Posted April 6, 2011 И куча матерящихся клиентов, у которых почта на ноуте работает везде, кроме как у вас. А потом выясняется что у них ещё и почта корпоративная, а у админа руки не от туда и он кроме как 25 порта ничего осилить не может/админу пофик, он не подчиняется местным, у себя менять ничего не будет, "меняйте провайдера" его рекомендация. Вставить ник Quote
fozz Posted April 6, 2011 Posted April 6, 2011 (edited) И куча матерящихся клиентов, у которых почта на ноуте работает везде, кроме как у вас. А потом выясняется что у них ещё и почта корпоративная, а у админа руки не от туда и он кроме как 25 порта ничего осилить не может/админу пофик, он не подчиняется местным, у себя менять ничего не будет, "меняйте провайдера" его рекомендация. таких 1-2 процента и если стандартными средствами им помочь не получается, то опять же, повторюсь - кнопочка в биллинге "разрешить 25-й порт". p.s. вот глянул. Висят 3080 онлайн, из них всего 13 с открытым 25-м (значит им менеджеры по заявлению открыли). Люди, которые понимают, что почта ходит через 25-й, обычно и знают, к чему это может приводить, так что с ними неопасно. Все остальные делятся на две категории: не пользуются почтой вовсе, пользуются веб-мордами на том-же mail.ru. Edited April 6, 2011 by fozz Вставить ник Quote
fedusia Posted April 6, 2011 Posted April 6, 2011 (edited) А при таком раскладе, разве клиент (точнее злобный вирус) не сможет рассылать спам рассылку? Даже имея в своём распоряжении 5 коннекшенов? Нет, т.к. регистрация коннекта в списке идет до его реджекта. Т.е. - бот отправил 5 писем, и дальше безуспешно долбится до посинения через файрвол. Можно кол-во писем и время конечно увеличить, к примеру, 20-30 писем за 15 минут... Я бы сказал не 5 писем. А 5 tcp соединений. Это довольно много для одного человека. Т.е. в таблицу попадает человек, который послал 5 tcp SYN пакетов на порт 25. За одно соединение можно отправить гораздо больше писем чем 1. Edited April 6, 2011 by fedusia Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.