zed.0xff.me

спамеры научились подбирать SASL пароли

Что-то стал почтовик туго работать..
Смотрю – loadavg около 3.8 .. что-то тут неладно..
Смотрю tail -f /var/log/maillog – там жуть полнейшая.. всё скачет и мелькает сотнями строк в секунду..
Причем чаще всего строчки вида:

host mailin-03.mx.aol.com[205.188.109.56] refused to talk to me: 554 IP:y.y.y.y – A problem occurred. (Ask your postmaster for help or to contact tosa@rx.t-online.de to clarify.)

или такие:

host c.mx.mail.yahoo.com[209.191.88.254] refused to talk to me: 421 4.7.1 [TS03] All messages from y.y.y.y will be permanently deferred; Retrying will NOT succeed. See http://postmaster.yahoo.com/421-ts03.html

или такие:

status=bounced (host mxs.mail.ru[94.100.176.20] said: 550 spam message discarded. Please visit http://mail.ru/notspam/ or report details to abuse@corp.mail.ru. Error code: 0F9B7FC84BF25CB6A821A57C9B6112E28F9CA260D04BD65B (in reply to end of DATA command))

в /var/spool/postfix – 180тыс сообщений.. O_o

В итоге оказалось что спамеры подобрали пароль на акк вида test:test (явно кто-то из админов заводил для теста..) и вовсю спамили с него везде куда их черная душа пожелала..

В сухом остатке:

  • сменил пароль юзера на непотребство вида “gbplf[eq” :)
  • жестко забанил спамеров:
1
2
3
4
  ipfw table 10 add 82.127.122.36
  ipfw table 10 add 203.161.99.96
  ipfw table 10 add 165.228.2.249
  ipfw add deny ip from "table(10)" to me 
  • ограничил количество одновременных SMTP-коннектов 5-ю штуками:
1
  ipfw add allow ip from any to me 25 setup limit src-addr 5
  • запустил чистилку на /var/spool/postfix:
1
2
  cd /var/spool/postfix
  grep -rlF "sender: test" . | xargs -L 100 rm

работает небыстро, зато надежно :) уже вычистила около 30K сообщений.
ключик “-L 100” нужен для того чтобы rm вызывался не в самом-самом конце поиска, а на каждые N найденных файлов.

защищаем блог от спама: honeypot

warning! статья не содержит чего-то принципиально нового или доселе неизвестного)

Не люблю всякие капчи.. иногда, конечно, это неизбежное зло, и без них не обойтись..
Но в некоторых случаях – можно.
В частности – если надо защитить от спама комментарии в каком-нибудь маленьком бложике, типа моего :)
И тут на помощь нам приходит волшебный горшочек с мёдом !! т.е. honeypot

Суть технологии в том, что мы специально “мажем мёдом” некоторое место на сайте, и все спамботы дружным строем летят на.. вобщем как раз на намазанное и летят.

Для начала разберем логику действия спамбота: Что бы я сделал, если бы был спамботом?..
Я бы бегал по сайтам, и искал бы места куда бы приткнуть что? Правильно, спамерский текст с кучей ссылок на левитру и прочую гадость. (а последнее время стало модно спамить вообще на не знаю каком языке – “qlqatttxqw, mtwpfuoykqqd и даже ddpledldefkf!”)

Но что-то я отвлекся.. Так вот, суть бота – напихать в чужие бложики кучу ссылок на важный хозяину бота контент. В частности в поля с именем comment или post[text], но не факт что в этих полях ссылки парсятся движком бложика. А особенно вкусными для бота являются поля website, url и т.п. Потому что ясно, что урл всё-таки не просто так поле, а, с достаточной вероятностью, будет оформлено ссылкой..
Ну и бот радостно бросается заполнять эти поля.. :)

А мы:

  • поля эти простым человеческим юзерам не показываем (CSS в помощь)
  • от особо умных ботов слега жонглируем CSS-стилями у себя в server-side
  • особо-преособо умные боты пока не приходили. ждем в гости! :)

Ну и еще одна небольшая хитрость. Если бот не совсем-совсем туп, то он после поста страничку попытается GET-нуть, чтобы посмотреть отложилась там его хм.. вобщем его продукт жизнедеятельности.
Но и тут мы его радостно обманем, запомнив предварительно у себя в обработчике POST-а всё то что он хотел нагадить – запоминаем в для него созданную персональную сессию. И потом на его GET это дело в каком-нибудь укромном месте странички вываливаем. Бот видит что оставил след, и, довольный, идет дальше своей дорогой продолжать делать своё грязное дело..

А сессия с его данными через некоторое время успешно протухает, и, собственно, всё что от визита бота остается – это несколько строчек в access.log.

Подводя итог:

Человек невидимые поля не видит, и заполнять их не будет. Браузерное автозаполнение тоже особо не замечено в попытках в невидимые поля что-то записать. А боты в основном рассчитаны на количество, а не на качество. Но если уж кто-то пишет специального бота именно под ваш бложик – значит ваш бложик уже достаточно вырос, и пора применять более серьезные методы защиты..

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