FastNetMon

Показаны сообщения с ярлыком Антиспам. Показать все сообщения
Показаны сообщения с ярлыком Антиспам. Показать все сообщения

четверг, 15 декабря 2011 г.

Яндекс Спамооборона - RIP

Все, коммерческая версия данного продукта более не продается: http://so.yandex.ru/news/2011/index.xml#2011-07-04, всем клиентам рекомендуют переход на SaaS решение "Яндекс Почта для домена".

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

среда, 3 марта 2010 г.

И снова о дебилах!

telnet mx2.hc.ru 25
Trying 79.174.72.97...
Connected to mx2.hc.ru.
Escape character is '^]'.
550 I don't like your hostname for IP address (xx.xx.xx.xx)
Connection closed by foreign host.


Причина? В том, что у сервера нету бэк резолва (PTR). Господа, Вы вообще себе представляете то, что у огромной части Рунета нету бэк резолва, а? Вы вообще в каком измерении живете, куку, РБК?

А что думают клиенты об этом и прочих отжигах ХЦ? А вот что: http://1stat.ru/?ns=hc.ru (для тех, кто не ходит по ссылкам - уход = приходу, рост = нулю).

А на дворе 2013й год, 22октября:
telnet mx2.hc.ru 25
Trying 89.111.177.159...
Connected to mx2.hc.ru.
Escape character is '^]'.
550-There's no corresponding PTR for your IP address (xx.xx.yy.zz), which is
550-required. See http://help.hc.ru/entry/593 or visit
550 http://wl.cm.hc.ru/whitelist/?key=2e3bcd0fca67a2647f560a10bbeb8020dfde618a&token=1382406482&ip=xx.yy.zz.yy
Connection closed by foreign host.

вторник, 12 января 2010 г.

Greylisting защита от спама в Postfix

Встречайте, Postgrey!

А на практике это работает примерно так:

telnet xx.xx.xx.xx 587
Trying xx.xx.xx.xx...
Connected to xx.xx.xx.xx.
Escape character is '^]'.
220 xx.xx.xx.xx ESMTP Postfix (Debian/GNU)
HELO 1
250 xx.xx.xx.xx
MAIL FROM:suxx@usd.eu
250 2.1.0 Ok
RCPT TO:test@suxx.us
450 4.2.0 : Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/suxx.us.html


А просматривать логи от него так:
cat /var/log/mail.log | postgreyreport


А вот как узнать, какие IP Postgrey сделал довременными после нескольких "нормальных" писем - вопрос сложный, так что всех интересующихся милости прошу в: /var/lib/postgrey/

Очень интересный способ защиты от СПАМа

http://www.rhyolite.com/dcc/

Очень интересный способ защиты от СПАМа

http://www.rhyolite.com/dcc/

среда, 6 января 2010 г.

Защита от исходящего СПАМа на Debian Lenny 5 + Postfix

Для многих хостеров стоит очень актуальная проблема - проблема защиты от исходящих спам рассылок. Какой смысл от них защищаться? Пусть себе спамят. Но причин защищаться тут две - abus`ы в адрес Вашего сервера в Датацентр (которые при их игнорировании могут легко привести к блокировке) и высокая вероятность отказа исходящей почты для остальных клиентов на сервере, т.к. после спам рассылки Ваш IP с большой (если спам рассылка будет произведена автоматическим скриптом, то вероятность этого просто огромна) вероятностью попадет в какой-либо из популярных черных списков спам-серверов. Убедил, что защищаться стоит? Думаю, да :)

Сразу оговорюсь, что для моего случая задача облегчена, т.к. PHP подключен как FastCGI и работает от имени конкретного пользователя, что очень сильно упрощает задачу борьбы со СПАМ.

Итак, рассмотрим основные пути произведения спам рассылок - это sendmail, локальное не авторизированное соединение с localhost на 25й порт (при этом логин/пароль не требуются) и удаленное/локальное авторизированное соединение (т.е. клиент со своей машины подключается и начинает сваливать нам тонны СПАМА). Также есть очень экзотический вариант, когда спам-скрипт сам соединяется с удаленными серверами, выполняя роль MTA и рассылает СПАМ самостоятельно, но этот вариант уж очень сомнителен. Давайте рассмотрим все подробно и по пунктам.

Поставим необходимый диагностический софт:
apt-get install -y --force-yes strace


Создадим необходимых юзеров
useradd spammer


 Входим под предполагаемым спамером:
su spammer


Sendmail

Через /usr/sbin/sendmail почту отправляют такие популярные программы как PHP и /usr/bin/mail.

echo "some spam" | mail -s testspam testspammail@domain.ru


В итоге выливается в:

[pid 17520] execve("/usr/sbin/sendmail", ["send-mail", "-i", "--", "testspammail@domain.ru"], [/* 16 vars */]) = 0


И при получении в строке хидеров будет следующая строчка однозначно идентифицирующая спамера:

Received: by domain.ru (Postfix, from userid 1001)


Теперь попробуем послать спам от PHP.

php -r "mail('testspammail@domain.ru', 'spamsubj','spambody');"


И получаем аналогичную картину:

[pid 17553] execve("/bin/sh", ["sh", "-c", "/usr/sbin/sendmail -t -i"], [/* 16 vars */]


Это происходит по той причине, что Linux/UNIX версии PHP отправляют почту только через sendmail, windows же версия использует SMTP на локал хост. Следовательно, письмо также будет промаркировано UID пользователя, что позволит его найти и наказать :)

Кстати, обе выше указанные записи в логе /var/log/maillog выльются в следующее (так что можно легко посредством парсинга логов вычислять нарушителей лимитов):


Jan 6 14:12:08 vrt1 postfix/qmgr[13940]: 7B112D52001: removed
Jan 6 14:14:49 vrt1 postfix/pickup[17379]: 54CF3D52001: uid=1001 from=
Jan 6 14:14:49 vrt1 postfix/cleanup[17546]: 54CF3D52001: message-id=<20100106131449.54CF3D52001@vrt1.domain.ru>



Локальное не авторизированное соединение с localhost на 25й порт

Теперь давайте с самого сервера попробуем выполнить следующие команды:

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 vrt1.domain.ru ESMTP Postfix (Debian/GNU)
HELO 11
250 vrt1.domain.ru
MAIL FROM:spammer@spammer.ru
250 2.1.0 Ok
RCPT TO:testspammer@domain.ru
250 2.1.5 Ok
DATA
354 End data with .
spam

.
250 2.0.0 Ok: queued as 009C768180



В итоге такое письмо приедет получателю только с хидером, который никаким образом не позволяет вычислить источник:

Received: from 11 (localhost [127.0.0.1])


Логи также молчат:

Jan 6 14:32:26 vrt1 postfix/smtpd[17703]: connect from localhost[127.0.0.1]
Jan 6 14:32:52 vrt1 postfix/smtpd[17703]: 009C768180: client=localhost[127.0.0.1]
Jan 6 14:33:02 vrt1 postfix/cleanup[17705]: 009C768180: message-id=<20100106133252.009C768180@vrt1.domain.ru>
Jan 6 14:33:02 vrt1 postfix/qmgr[13940]: 009C768180: from=, size=333, nrcpt=1 (queue


В итоге необходимо запретить неавторизованный прием почты с локалхоста. Есть у Постфикса такой параметр mynetworks, который в документации описывается так:

By default, Postfix will relay mail for clients in authorized networks.

Authorized client networks are defined by the mynetworks parameter. The default is to authorize all clients in the IP subnetworks that the local machine is attached to.


Так что открываем:
vi /etc/postfix/main.cf


Видим там на строке mynetworks следующее:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128


Заменяем на:

mynetworks =


Перезапускаем постфикс:

/etc/init.d/postfix restart


Ну и все, теперь при попытке послать спам без авторизации будет следующее:

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 vrt1.domain.ru ESMTP Postfix (Debian/GNU)
HELO 1
250 vrt1.domain.ru
MAIL FROM:spammer@domain.ru
250 2.1.0 Ok
RCPT TO:odintsov@domain.ru
554 5.7.1 : Relay access denied


Теперь попробуем авторизироваться и послать почту.

Для начала нам понадобятся преобразованные в base64 логин и пароль:

# echo "test@suxx.us" | base64
dGVzdEBzdXh4LnVzCg==
# echo "qwerty" | base64
cXdlcnR5Cg==


Теперь отсекаем "Cg==" у закодированных значений и используем.


telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 vrt1.domain.ru ESMTP Postfix (Debian/GNU)
HELO 1
250 vrt1.domain.ru
AUTH LOGIN
334 VXNlcm5hbWU6
dGVzdEBzdXh4LnVz
334 UGFzc3dvcmQ6
cXdlcnR5
235 2.7.0 Authentication successful
MAIL FROM:test@test.ru
250 2.1.0 Ok
RCPT TO:test@domain.ru
250 2.1.5 Ok
DATA
354 End data with .

spam

.
250 2.0.0 Ok: queued as 737C6680C6


А в логах в это время:

Jan 6 15:32:31 vrt1 postfix/smtpd[18540]: connect from localhost[127.0.0.1]
Jan 6 15:33:08 vrt1 postfix/smtpd[18540]: 737C6680C6: client=localhost[127.0.0.1], sasl_method=LOGIN, sasl_username=test@suxx.us
Jan 6 15:33:13 vrt1 postfix/cleanup[18544]: 737C6680C6: message-id=<20100106143308.737C6680C6@vrt1.domain.ru>
Jan 6 15:33:13 vrt1 postfix/qmgr[18428]: 737C6680C6: from=, size=326, nrcpt=1 (queue active)
Jan 6 15:33:13 vrt1 postfix/smtp[18545]: 737C6680C6: to=, relay=ASPMX.L.GOOGLE.COM[2


Удаленное/локальное авторизированное соединение

А тут нам помогут логи из предыдущего примера :) Но в письме опять же отправитель явно никак не идентифицирован. И фишка тут в том, что поле FROM никак не контролируется.

Спам скрипт-MTA

Тут нам поможет только правило фаерволла, запрещающее соединение до 25го порта удаленных серверов всем, кроме нашего родного MTA Postfix.

пятница, 13 ноября 2009 г.

Об антиспамах

Наткнулся на хорошую статью про сравнение платных и бесплатных антиспамов, все весьма радужно. Дам несколько цитат оттуда:


Ну, и напоследок, я решил свести в таблицу варианты событий в том случае, если бы контекстные анализаторы работали в паре с DNSBL-листами. Как и ожидалось, я получил 100% эффективность фильтрации спама даже при использовании зарубежного продукта Apache SpamAssassin.


После этих слов в статье рекомендую обратить внимание на табличку со строкой: "FastBL+sa", которая показывает, что эффективность решения FastBL + SpamAssassin находится на уровне коммерческих продуктов Яндекс Спамооборона и Касперский Антиспам. Что как бэ доставляет.