LINUX.ORG.RU

POSTFIX - отправка сообщений через авторизованного пользователя

 


0

1

Нубский вопрос, просьба не пинать.

Postfix - отправка настроена через авторизованного пользователя (почтовый аккаунт), не является открытым релеем.

Приведу два примера:

1.Почтовый-сервер и Веб-сервер крутятся на одной машине, если взламывают один из сайтов и начинают слать спам, то какая разница через авторизованного локального пользователя Postfix это делается (почтовый аккаунт) или нет? Так или иначе спам то будет в конечном итоге отсылаться и уж тем более, если sendmail посылает сообщения через авторизованного пользователя.

2.Почтовый-сервер отдельная машина, Веб-сервер отдельная машина. На машине где крутится Веб-сервер настроена отправка через релей машину, где стоит почтовый-сервер через авторизованного пользователя (почтовый аккаунт). Так-же, если взламывают сайт и начинают через него слать спам, то так как сообщения посылаются от авторизованного пользователя (почтовый аккаунт), то эти сообщения без проблем будут отправлены почтовиком.

Объясните пожалуйста, в чем смысл борьбы с пересылкой спама через почтовик, при отправке сообщений через авторизованного пользователя (почтовый аккаунт) в обеих примерах?

Спасибо.



Последнее исправление: cetjs2 (всего исправлений: 3)

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

1. Почтовый-сервер и Веб-сервер на одной машине;
2. Почтовый-сервер отдельная машина, Веб-сервер отдельная машина;
?

Спасибо.

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Я не совсем понял вашу ситуацию, но, если отправка через авторизированного пользователя, значит вся почта идёт на какой-то один почтовый сервер, который её и рассылает куда надо. И здесь:

Почтовый-сервер отдельная машина, Веб-сервер отдельная машина;

не понятно про какой почтовый сервер идёт речь. То есть как без postfix будет уходит почта с web-сервера? ssmtp поставите что-ли?

Имеет смысл отделять от web-сервера настоящий почтовый сервер, где есть почтовые ящики и почта других пользователей.

mky ★★★★★
()
Ответ на: комментарий от mky

Я не совсем понял вашу ситуацию, но, если отправка через авторизированного пользователя, значит вся почта идёт на какой-то один почтовый сервер, который её и рассылает куда надо.

Ситуация следующая - есть в интернете статьи, где рассказывается как уменьшить пересылку спама через почтовый сервер с использованием отправки почты только через авторизованного пользователя (почтовый аккаунт), вот например: http://habrahabr.ru/post/259937/ . Это именно на тот случай, когда веб-сервер и почтовый-сервер крутятся на одной машине и если взламывают один из сайтов, то начинают делать спам-пересылку через почтовый сервер. Вот и вопрос, каким образом уменьшается спам-рассылка, если хоть через авторизованного пользователя (почтовый аккаунт), хоть не через него спам все равно будет отправляться Postfix-ом, в чем спасение от спам-пересылки при отправке почты через авторизованного пользователя (почтовый аккаунт)?

И тоже самое, если есть одна машина, на которой крутится только почтовый сервер (Postfix+Dovecot+т.д.) с почтовым аккаунтом (my@example.com) и есть вторая машина, на которой крутится только веб-сервер (Apache+Nginx+т.д+почтовый агент Postfix) и настроена отправка почты через машину, где стоит почтовый-сервер через авторизованного пользователя (my@example.com) - то каким образом уменьшается спам-пересылка через машину с почтовым-сервером в случае взлома одного из сайтов, если вся отправка идет через авторизованного пользователя (почтовый аккаунт) на вторую машину с почтовым-сервером?

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Как я понял, в статье подразумевается случай, когда сервер сломали не полностью и до выполнения произвольного кода не дошло, а просто нашли уязвимость, позволяющую средствами сайта отправить письмо заданного содержания на заданный адрес. Тогда отправка будет идти через скрипт-«заглушку» (/usr/local/bin/private/sendmail.pl) и будут срабатывать органичения по числу писем в день на пользователя/сайт. А 50 писем в день — это как бы не спам.

ИМХО, ограничение можно было бы реализовать и в этом /usr/local/bin/private/sendmail.pl, был бы навык программирования.

В случае с двумя серверми всё аналогично, машине с web-сервером можно на маршрутизаторе разрешить отправлять почту только на один почтовый сервер, и там ограничить число писем в день.

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо за ответ.

А 50 писем в день — это как бы не спам.

а если 50 спам-писем за день уйдет с почтового-сервера - то разве не забанят за спам-рассылку?

Имеет смысл отделять от web-сервера настоящий почтовый сервер, где есть почтовые ящики и почта других пользователей.

А в каких целях (из каких соображений) есть смысл их разводить на разные машины?

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Это до жути дёшево (контейнеры) и Ъ именно для минимизации вреда от взлома одного из этих сервисов.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Это до жути дёшево (контейнеры) и Ъ именно для минимизации вреда от взлома одного из этих сервисов.

А какое решение правильное?

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

то разве не забанят за спам-рассылку?

Он же сервер, кто его забанит :-) Могут занести в black-list'ы, но во вменяемые листы за такое не заносят. Про всякие шизанутые BL, в которые заносят за 1 письмо, а потом просят $10 за удаление лучше не думать.

Провайдер может заблокировать сервер, но, это, либо когда с сервера идёт непрерывный поток спама в много мегабит и провадеру это заметно, либо когда идёт поток спама, провайдер получил абузу, связался с владельцем сервера... Это всё масштабы сотен тысяч спам-писем, 50 совсем не то. И пока в мире достаточно ботнутых компов, спамерам, ИМХО, будет лень менять код, чтобы использовать в рассылке сайты с подобными ограничениями.

смысл их разводить на разные машины

По соображениям безопасности, чтобы взлом web-сервера не приводил к чтению почты пользователей, хешей их паролей и т.д. Да и админы могут быть разные. А уж отдельные машины, или виртуалки, или контейнеры — это по соображениям производительности и внутреней политики фирмы.

mky ★★★★★
()
Ответ на: комментарий от mky

либо когда с сервера идёт непрерывный поток спама в много мегабит и провадеру это заметно, либо когда идёт поток спама, провайдер получил абузу, связался с владельцем сервера... Это всё масштабы сотен тысяч спам-писем, 50 совсем не то.

Вот у меня как раз эта ситуация, каждую неделю приходит абуза от хостера сервера, где мне предоставляют письмо от одного и того-же spamcop.net (самое интересное что только от него всегда), где жалоба на 2-5 писем в неделю с подробный описанием писем спам-рассылки: http://pastebin.com/iiD0hmeR http://pastebin.com/vNQkwW7y http://pastebin.com/V4XPfUPC http://pastebin.com/xD5YFNe9 http://pastebin.com/vhvvsDVk http://pastebin.com/0KfU9Yus Далее выбираю из них всю возможную информацию о почтовом домене, ящиками и т.д, ищу информацию по ним в логах - ничего не нахожу! И так уже 2 месяца по кругу, каждую неделю абуза (2-3 письма спам пересланых через мой почтовик), смотрю логи postfix на предмет обнаружения хоть какой-то информации по этим пересылкам, ничего нет, очень все это странно.

По соображениям безопасности, чтобы взлом web-сервера не приводил к чтению почты пользователей, хешей их паролей и т.д. Да и админы могут быть разные. А уж отдельные машины, или виртуалки, или контейнеры — это по соображениям производительности и внутреней политики фирмы.

Понятно, большое спасибо.

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Если в заголовках этого письма (в поле Received) нет вашего ip-адреса, то это письма не от вашего сервера. Если ip-адрес ваш, но в логах postfix'а нет записей про это письмо, значит письмо отправляется с сайта напрямую (вызвается код, устанавливающий соединение на 25 порт), а не через postfix. Косвенно, подтверждением последнего служит отсутствие в письме первого Received, о том, что postfix получил письмо от локального процесса с указанием его pid'а.

В этом случае могу рекомендовать на уровне iptables запретить исходящие соединения на 25 порт (кроме localhost) всем, кроме пользователя postfix (или того, от чьего имени работает процес smtp в postfix'е).

Думаю, что сейчас от вас идёт много спама, значительно больше, чем 2-5 писем в неделю, ради интереса можете через ″conntrack″ или ″tcpdump″ посмотреть все исходящие, уснавливаемые на 25 порт соединения и просто сопоставить их кол-во с тем, что есть в логах postfix'а.

mky ★★★★★
()
Ответ на: комментарий от mky

Огромное спасибо за такой развернутый ответ. Всей этой информации, о которой Вы сейчас рассказали, знать не знал, даже и не ожидал что так все может быть. Сейчас буду разбираться. Спасибо.

Nezhnayka28
() автор топика
Ответ на: комментарий от mky

Я извиняюсь, хочу продолжить беседу, потому что хочу разобрать эту тему с Вами до конца, потому что просто ужаснулся по результатам. Очень прошу Вас ответить по моим вопросам.

Если в заголовках этого письма (в поле Received) нет вашего ip-адреса, то это письма не от вашего сервера.

А где я могу эти заголовки посмотреть, ведь postfix кроме как в логах нигде не оставляет отправленные сообщения, а в абузах насколько понимаю информация почтового-сервера получателя, т.е того сервера кто получил этот спам (и там можно только почтовый домен куда было отправлено сообщение посмотреть и ящики)? Или нужно всю отправляемую почту postfix-ом при таких проблемах принудительно сохранят через sender_bcc_maps или always_bcc, и в случае таких проблем потом ее перебирать?

Если ip-адрес ваш, но в логах postfix'а нет записей про это письмо, значит письмо отправляется с сайта напрямую (вызвается код, устанавливающий соединение на 25 порт), а не через postfix.

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

Думаю, что сейчас от вас идёт много спама, значительно больше, чем 2-5 писем в неделю, ради интереса можете через ″conntrack″ или ″tcpdump″ посмотреть все исходящие, устанавливаемые на 25 порт соединения и просто сопоставить их кол-во с тем, что есть в логах postfix'а.

Вот здесь прямо в точку и просто вообще кошмар что творится:

tcpdump src port 25
Результат по 20-30 подобных записей в секунду:
....
17:21:12.408586 IP bay0-mc5-f.bay0.hotmail.com.smtp > sale.biz-company.ru.37796: Flags [F.], seq 565, ack 75, win 259, options [nop,nop,TS val 234941656 ecr 2053551735], length 0
17:21:12.408608 IP bay0-mc5-f.bay0.hotmail.com.smtp > sale.biz-company.ru.37839: Flags [S.], seq 3380592015, ack 1579535329, win 8192, options [mss 1460,nop,wscale 8,sackOK,TS val 155602099 ecr 2053551735], length 0
17:21:12.409271 IP bay0-mc5-f.bay0.hotmail.com.smtp > sale.biz-company.ru.37781: Flags [.], ack 76, win 259, options [nop,nop,TS val 237640459 ecr 2053551736], length 0
17:21:12.410957 IP bay0-mc5-f.bay0.hotmail.com.smtp > sale.biz-company.ru.37782: Flags [.], ack 61, win 259, options [nop,nop,TS val 237914067 ecr 2053551736], length 0
17:21:12.411439 IP bay0-mc5-f.bay0.hotmail.com.smtp > sale.biz-company.ru.37811: Flags [P.], seq 240:306, ack 27, win 260, options [nop,nop,TS val 60584080 ecr 2053551735], length 66
17:21:12.418362 IP bay0-mc5-f.bay0.hotmail.com.smtp > sale.biz-company.ru.37783: Flags [.], ack 61, win 259, options [nop,nop,TS val 235969763 ecr 2053551748], length 0
17:21:12.420180 IP bay0-mc5-f.bay0.hotmail.com.smtp > sale.biz-company.ru.37840: Flags [S.], seq 3550050363, ack 1197014306, win 8192, options [mss 1460,nop,wscale 8,sackOK,TS val 234707459 ecr 2053551747], length 0
..
.....
............

Далее:

tcpdump dst port 25

Результат так-же по 20-30 записей в секунду:

....
17:29:07.328163 IP sale.biz-company.ru.58135 > mta-v6.mail.vip.ne1.yahoo.com.smtp: Flags [.], ack 45, win 115, options [nop,nop,TS val 2054026813 ecr 1081977707], length 0
17:29:07.328812 IP sale.biz-company.ru.56280 > imta-ch2.sys.comcast.net.smtp: Flags [.], ack 157, win 123, options [nop,nop,TS val 2054026814 ecr 2322291834], length 0
17:29:07.330029 IP sale.biz-company.ru.56286 > imta-ch2.sys.comcast.net.smtp: Flags [.], ack 158, win 123, options [nop,nop,TS val 2054026815 ecr 2322292894], length 0
17:29:07.331218 IP sale.biz-company.ru.58162 > mta-v6.mail.vip.ne1.yahoo.com.smtp: Flags [.], ack 2069112449, win 115, options [nop,nop,TS val 2054026816 ecr 3242406266], length 0
17:29:07.331381 IP sale.biz-company.ru.58158 > mta-v6.mail.vip.ne1.yahoo.com.smtp: Flags [.], ack 1540347809, win 115, options [nop,nop,TS val 2054026816 ecr 488342045], length 0
17:29:07.333162 IP sale.biz-company.ru.51344 > mta-v1.mail.vip.ir2.yahoo.com.smtp: Flags [P.], seq 0:26, ack 45, win 115, options [nop,nop,TS val 2054026818 ecr 249536958], length 26
17:29:07.333813 IP sale.biz-company.ru.51334 > mta-v1.mail.vip.ir2.yahoo.com.smtp: Flags [F.], seq 62, ack 232, win 123, options [nop,nop,TS val 2054026819 ecr 1459407992], length 0
...
.....
............
где sale.biz-company.ru - один из сайтов, которые крутятся на этой машине. Причем когда я увидел этот поддомен в логах, то решил ради проверки сразу удалить все файлы этого сайта, думая что спам-скрипт где-то в нем, но это результата не дало, все те-же логи, все в том-же количестве. Можно ли как вычислить файл который это делает, либо это идет снаружи, не пойму?

mky - очень прошу Вас ответить.

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Настоятельно рекомендую что-нибудь почитать про tcpdump или wireshark. Я писал, что нужно дампить просто первый пакет соединения, чтобы на одно соединение был один пакет, а все пакеты особого смысла дампить нет. В общем, я ожидал, что у вас будет примерно такая строка:

tcpdump -i eth0 -n -nn 'tcp[tcpflags] & (tcp-syn)!=0' and src host 93.184.192.152 and dst port 25

Это если на сервере один ip-адрес.

Далее, sale.biz-company.ru это не сайт. Это обратная DNS-запись для ip-адреса, с которого идёт соединение. Пользы от этого, как правило не много, зато на каждый перехваченный пакет tcpdump отправляет DNS-запрос, поэтому я обычно указываю опции ″-n″ и ″-nn″ (так как мне порты в цифровом виде привычнее).

Какой именно сайт был сломан я не знаю, и как это ловить тоже не подскажу. Так нужно смотреть логи апача, может на каждое спам-письмо там будет какая-нибудь необычная запись, а может, у вас уже давно висит отдельный php-процесс, который слушает отдельный сокет и там принимает команды что и куда отправлять... Для начала можно добавить в iptables правило:

iptables -I INPUT -p tcp --sport 25 -j DROP
подождать секунд 10 и выполнить команды ″netstat -t -n -p″ и ″ps axfuwww″ с перенаправлением их вывода в файл. После чего убрать это правило из iptables, чтобы не мешать почте и смотреть содержимое файлов. В netstat будет видно кто подключается к 25 порту, в ps можно будет посмотреть от какого пользователя работает и кем порождён подключающийся процесс.

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

Return-path: <georgetteoc@jhbaxter.com>
Received: from st11p00mm-smtpin010.mac.com ([17.172.87.210])
 by ms03522.mac.com (Oracle Communications Messaging Server 7u4-27.08
 (7.0.4.27.7) 64bit (built Aug 22 2013))
 with ESMTP id <0NPH00HLH5MI0WG0@ms03522.mac.com> for x; Fri,
 05 Jun 2015 14:01:31 +0000 (GMT)
Original-recipient: rfc822;x
Received: from mail.biz-company.ru ([93.184.192.152])
 by st11p00mm-smtpin010.mac.com
 (Oracle Communications Messaging Server 7.0.5.35.0 64bit (built Mar 31 2015))
 with SMTP id <0NPH00JK95M4RPC0@st11p00mm-smtpin010.mac.com> for x
 (ORCPT x); Fri, 05 Jun 2015 14:01:30 +0000 (GMT)
Received-SPF: none (...
Вот здесь видно, что st11p00mm-smtpin010.mac.com получил письмо от вашего сервера, больше там ″Received:″ полей нет.

Вот здесь вопрос - вызывается код, устанавливающий соединение на 25 порт...Т.е. хочется понять как этот механизм работает.

В обычной конфигурации ничто не мешает php самому выполнять функции MTA — устанавливать соедиенение с сервером на 25 порт и передавать письмо. Поэтому, если сайты «дырявые», то нужно с помощью iptables это запрещать. Ну или выносить web-сервер отдельно и запрещать ему 25 порт на маршрутизаторе.

mky ★★★★★
()
Ответ на: комментарий от mky

В общем, я ожидал, что у вас будет примерно такая строка:
tcpdump -i eth0 -n -nn 'tcp[tcpflags] & (tcp-syn)!=0' and src host 93.184.192.152 and dst port 25

Да, вы правы, я не знаком с этими утилитами, нашел первое описание как исходящие пакеты на 25 порт посмотреть, ее и применил. Сейчас произвел именно эту команду, которую вы показали. более 100 строк в секунду, подобных этим:

11:36:28.527134 IP 93.184.192.152.50855 > 66.196.118.34.25: Flags , seq 1475398317, win 14600, options [mss 1460,sackOK,TS val 2119268012 ecr 0,nop,wscale 7], length 0
11:36:28.539696 IP 93.184.192.152.50856 > 66.196.118.34.25: Flags , seq 3629481243, win 14600, options [mss 1460,sackOK,TS val 2119268025 ecr 0,nop,wscale 7], length 0
11:36:28.552132 IP 93.184.192.152.50857 > 66.196.118.34.25: Flags , seq 2030910301, win 14600, options [mss 1460,sackOK,TS val 2119268037 ecr 0,nop,wscale 7], length 0
11:36:28.564619 IP 93.184.192.152.50858 > 66.196.118.34.25: Flags , seq 3331243744, win 14600, options [mss 1460,sackOK,TS val 2119268050 ecr 0,nop,wscale 7], length 0
11:36:28.576975 IP 93.184.192.152.50859 > 66.196.118.34.25: Flags , seq 988459251, win 14600, options [mss 1460,sackOK,TS val 2119268062 ecr 0,nop,wscale 7], length 0
11:36:28.728289 IP 93.184.192.152.56028 > 66.196.118.33.25: Flags , seq 3739326809, win 14600, options [mss 1460,sackOK,TS val 2119268213 ecr 0,nop,wscale 7], length 0
11:36:28.805023 IP 93.184.192.152.45618 > 188.125.69.79.25: Flags , seq 1410180815, win 14600, options [mss 1460,sackOK,TS val 2119268290 ecr 0,nop,wscale 7], length 0
11:36:28.817800 IP 93.184.192.152.45619 > 188.125.69.79.25: Flags , seq 2196028912, win 14600, options [mss 1460,sackOK,TS val 2119268303 ecr 0,nop,wscale 7], length 0
11:36:28.830180 IP 93.184.192.152.45620 > 188.125.69.79.25: Flags , seq 564137235, win 14600, options [mss 1460,sackOK,TS val 2119268315 ecr 0,nop,wscale 7], length 0
11:36:28.841859 IP 93.184.192.152.45621 > 188.125.69.79.25: Flags , seq 2136968780, win 14600, options [mss 1460,sackOK,TS val 2119268327 ecr 0,nop,wscale 7], length 0
11:36:28.854510 IP 93.184.192.152.45622 > 188.125.69.79.25: Flags , seq 1843457097, win 14600, options [mss 1460,sackOK,TS val 2119268339 ecr 0,nop,wscale 7], length 0
11:36:28.866236 IP 93.184.192.152.45623 > 188.125.69.79.25: Flags , seq 1711225188, win 14600, options [mss 1460,sackOK,TS val 2119268351 ecr 0,nop,wscale 7], length 0
11:36:28.878516 IP 93.184.192.152.45624 > 188.125.69.79.25: Flags , seq 3748413741, win 14600, options [mss 1460,sackOK,TS val 2119268363 ecr 0,nop,wscale 7], length 0
11:36:28.890914 IP 93.184.192.152.45625 > 188.125.69.79.25: Flags , seq 2789174837, win 14600, options [mss 1460,sackOK,TS val 2119268376 ecr 0,nop,wscale 7], length 0

Далее, sale.biz-company.ru это не сайт. Это обратная DNS-запись для ip-адреса, с которого идёт соединение.

Вчера немного еще посидев с tcpdump утилитой понял, что никакого отношения к поддомену (сайту) эти записи не имеют ))), а именно как вы сказали, это обратная DNS-запись.

Вот здесь видно, что st11p00mm-smtpin010.mac.com получил письмо от вашего сервера, больше там ″Received:″ полей нет.

Т.е. видно, что письмо отправлено не через Postfix, а напрямую?

В обычной конфигурации ничто не мешает php самому выполнять функции MTA — устанавливать соедиенение с сервером на 25 порт и передавать письмо.

Я раньше не знал и вчера неправильно понял этот механизм - я почему- то подумал, что эти спам-скрипты конектятся к моему серверу на 25 порт напрямую и через опять же с моей машины отправляют спам, поэтому и спросил как-то же должно сообщение доставляться на другой почтовик )). А вчера посмотрел, вау, да есть же скрипты, которые вообще конектятся к другим почтовикам и напрямую отправляют им письмо (вроде того имитируют smtp), вообще не знал про такие, на perl оказывается это все очень просто делается, на php не нашел.

mky, Большое спасибо Вам, что Вы мне так все объясняете, я бы еще месяц наверное разбирался со своей проблемой без этой информации.

Nezhnayka28
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.