Почтовый спам с сервера

12
antono
На сайте с 12.07.2004
Offline
297
1934

Недавно пришла абуза на спам с заголовками моего сервера. Посмотрел - у меня exim с ума сошел. Забил весь раздел var письмами в очереди и чуть ли не вешает сервер. После перезагрузки спам возобновляется. Пришлось отключить exim. Специалисты с агавы не смогли определить причину и написали что через мои скрипты спамят. Этого не может быть, так как с отключенным exim функция mail() в php работает.

Не подскажите в какую сторону копать?

M
На сайте с 16.09.2009
Offline
278
#1

"так как с отключенным exim функция mail() в php работает."

_НЕ_ работает, вы хотели сказать? Ибо если работает (письма доходят) - что-то

Вы отключили определенно не то.

Так заголовки-то могут датироваться

старой датой. До отключния почтовика. Вы это проверили?

Либо есть другие уязвимости в скриптах - может вам веб-шелл закачали

и используют скрипт, напрямую соединяющийся с принимающим сервером.

Я вот могу телнетом спамить, без всяких mail().

Идти смотреть заголовки писем спама, логи апача за соответствующую дату

- в большинстве случаев "дырку", через которую рассылают - видно сразу.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
zexis
На сайте с 09.08.2005
Offline
388
#2

Проверьте утилитой nmap, какие внешние порты открыты у вашего сервера.

S
На сайте с 16.03.2007
Offline
66
#3

функция mail(), просто помещает письмо в очередь, если mail сервер отключен, то оно просто не будет отправлено, ошибку финкция при этом не возвращает. Если в очереде на отправку много сообщений, значит спамят через функцию mail(). Посмотрите какие письма лежат в очереди, в заголовках обычно пишется пользователь от имени которого был отправлен скрипт, также посмотрите логи почтового сервера, там тоже можно узнать пользователя. Также командой top в консоли, часто можно обнаружить скрипт по нагрузке и частоте появления.

M
На сайте с 16.09.2009
Offline
278
#4
Shirase:
функция mail(), просто помещает письмо в очередь, если mail сервер отключен

Совершенно верно, после чего возвращает TRUE, если поставить в очередь удалось. Т.е.

по статусу того, что оно возвращает - судить о работе почты рано ;)

Shirase:

в заголовках обычно пишется пользователь от имени которого был отправлен скрипт, также посмотрите логи почтового сервера, там тоже можно узнать пользователя. Также командой top в консоли, часто можно обнаружить скрипт по нагрузке и частоте появления.

Как правило, пользователь там - apache. Мало кто догадывается (помимо хостеров)

хоть выставлять sendmail_path уникальные для виртуалхостов апача, с отдельным

адресом в аргументе -f.

Так что логи веб-сервера... Или top, если _в данный момент_ - спамят через скрипт.

antono
На сайте с 12.07.2004
Offline
297
#5
myhand:
"так как с отключенным exim функция mail() в php работает."

_НЕ_ работает, вы хотели сказать? Ибо если работает (письма доходят) - что-то
Вы отключили определенно не то.

Вот скрин из директадмин:

Точно говорю что работает mail() в таком состоянии. У меня на почту приходят письма когда комментарии оставляют с помощью этой функции, да и я ее просто запускал чтобы проверить еще раз.

Shirase:
функция mail(), просто помещает письмо в очередь, если mail сервер отключен, то оно просто не будет отправлено, ошибку финкция при этом не возвращает. Если в очереде на отправку много сообщений, значит спамят через функцию mail(). Посмотрите какие письма лежат в очереди, в заголовках обычно пишется пользователь от имени которого был отправлен скрипт, также посмотрите логи почтового сервера, там тоже можно узнать пользователя. Также командой top в консоли, часто можно обнаружить скрипт по нагрузке и частоте появления.

А какие логи смотреть?

здесь

/var/spool/exim/msglog

или здесь?

/var/spool/exim/input

Если включить exim то top показывает что он забирает от 10% мощности и эти папки очень быстро наполняются пока не забивают раздел var на 100%, тогда сервер виснет.

S
На сайте с 16.03.2007
Offline
66
#6
antono:

Точно говорю что работает mail() в таком состоянии. У меня на почту приходят письма когда комментарии оставляют с помощью этой функции, да и я ее просто запускал чтобы проверить еще раз.

Если у вас почта на томже сервере то используется локальная доставка, которая работает даже с отключеным mail сервером, попробуйте отправить через mail(), чтонибудь на другой сервер.

Shirase добавил 09.02.2010 в 17:52

А какие логи смотреть?

/var/log/maillog

Shirase добавил 09.02.2010 в 17:59

Также можно попробовать заменить стандартный sendmail на собственный shell скрипт, который сохраняет рабочую директорию в файл, на практике я такой вариант не пробовал.

Путь к sendmail которая используется в настоящий момент можно посмотреть здесь /etc/mail/mailer.conf

Также можно временно удалить sendmail, чтобы прекратить спам, а затем смотреть логи apache на наличие ошибок, из-за отсутствия sendmail.

M
На сайте с 16.09.2009
Offline
278
#7
antono:

Если включить exim то top показывает что он забирает от 10% мощности и эти папки очень быстро наполняются пока не забивают раздел var на 100%, тогда сервер виснет.

Конечно, у вас очередь спамом забита (даже если скрипт

прекратил уже рассылку). Нужно почистить почтовую очередь.

Смотрим почтовую очередь: exim -bpu

Очищаем ненужное, по списку msg-id: exim -Mrm id1 id2 ..

antono
На сайте с 12.07.2004
Offline
297
#8
Shirase:
Если у вас почта на томже сервере то используется локальная доставка, которая работает даже с отключеным mail сервером, попробуйте отправить через mail(), чтонибудь на другой сервер.

Да, почта там-же. На gmail тоже доходит, вот сейчас попробовал.

Там в заголовке:

Received: from apache by server with local (Exim 4.62)

(envelope-from <admin@*****.org>)

id 1Nes1V-000Afp-98

for *******@gmail.com; Tue, 09 Feb 2010 18:29:09 +0300

То есть видно что там exim поработал, который отключен.

antono добавил 09.02.2010 в 19:18

myhand:
Конечно, у вас очередь спамом забита (даже если скрипт
прекратил уже рассылку). Нужно почистить почтовую очередь.

Смотрим почтовую очередь: exim -bpu

Очищаем ненужное, по списку msg-id: exim -Mrm id1 id2 ..

Когда exim запущен наверное не успевает очищать. Я делал так

killall exim

и удалял все файлы из msglog и input вручную.

AS
На сайте с 21.09.2007
Offline
167
#9

тоже было такое )

пару админов выковыривали ботов ( бестолку ( пару недель затишья, потом опять спам ..... (

лекарство одно - переустанавливай операционистку на серваке

да и DA можешь выкинуть ....

M
На сайте с 16.09.2009
Offline
278
#10
antono:

Когда exim запущен наверное не успевает очищать. Я делал так
killall exim
и удалял все файлы из msglog и input вручную.

Кстати, если останавливаете exim _не_ через панельку (а в консоли - service stop,

killall/kill, etc...) - будьте готовы, что она может перезапустить их.

AchilleSS:
тоже было такое )
пару админов выковыривали ботов ( бестолку ( пару недель затишья, потом опять спам ..... (

На массовом виртуальном хостинге - такое достаточно частое явление, хотя

локализовать спамера (до виртуалхоста, конкретного пользователя etc) -

обычно достаточно просто. А если проекты свои - нужно ковырять до конца.

AchilleSS:

лекарство одно - переустанавливай операционистку на серваке
да и DA можешь выкинуть ....

Одними переустановками это не решить, конечно. Уязвимые скрипты останутся.

Но DA выкинуть - поддерживаю. А если на сервере меньше десятка отдельных

проектов - выкинуть панельки типа DA как класс.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий