Эта проблема
Мой клиент попросил меня взглянуть на его веб-сервер с общим хостингом на предмет следующей проблемы, но я не могу понять, что случилось. Его сервер занесен в черный список во многих основных списках блокировки, таких как CBL, Spamhaus и список блокировки от Outlook.com.
Что я уже пробовал
Я начал с просмотра пользователей в его среде DirectAdmin, но не нашел ни одного пользователя, который отправляет более пары писем в день. Я загрузил его журнал exim, взглянул в очередь почты, но не нашел ничего необычного. Следующее, что я подумал, было бегом findbot.pl
от CBL, но это было только с ложными срабатываниями.
Еще я попробовал изменить sendmail_path
в php.ini
для регистрации каждого электронного письма, отправляемого через sendmail. Однако каждый раз, когда я менял sendmail_path, все процессы PHP начинали зависать. Пробовал разные способы (MailCatcher, мои собственные сценарии), но каждое изменение приводило к зависанию процессов. Действительно странно, но после нескольких попыток я перешел к следующему шагу.
Следующий шаг: установка lsof
и создайте сценарий bash, который будет печатать вывод lsof -i | grep smtp
в файл журнала, каждую секунду при печати вывода ps auxw
в другой файл журнала каждую секунду. Это дало мне некоторую ценную информацию, но я пока не могу отследить проблему.
Где я застрял
Итак, позволив ему поработать пару часов, я открыл оба файла журнала и увидел большую часть этих правил:
lsof - файл журнала
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
exim 10921 mail 9u IPv4 2260427 0t0 TCP hostname-from-server.com:smtp->208.93.4.208:49711 (ESTABLISHED)
exim 10921 mail 10u IPv4 2260427 0t0 TCP hostname-from-server.com:smtp->208.93.4.208:49711 (ESTABLISHED)
Когда я смотрю файл журнала и ищу PID, упомянутый в файле журнала lsof, я вижу следующие строки:
ps auxw - файл журнала
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root 10909 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail
mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root 10917 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail
mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
mail 10921 0.0 0.0 61112 1792 ? S 17:44 0:00 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root 10923 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail
mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root 10931 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail
mail 1750 0.0 0.0 59032 1320 ? Ss Nov28 0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root 10939 0.0 0.0 103388 896 pts/2 S+ 17:44 0:00 grep mail
Проблема: в этой строке нет ничего необычного, и я не вижу, какой скрипт, программа пользователя называется exim. Когда я смотрю exim mainlog и rejectlog, я не могу найти ip 208.93.4.208
я не могу найти ни одной строчки около 17:44 (время согласно журналу ps auxw).
Когда я следую строкам из файлов журналов из электронных писем, которые я отправляю сам, я могу найти их в основном журнале из exim точно в то время, которое указано в журнале ps auxw. Похоже, что каким-то образом спам-сообщения не регистрируются в exim или удаляются сразу после отправки.
Мои вопросы
Дополнительная информация
Через провайдерский портал Outlook.com нам удалось получить один из заголовков электронного письма:
X-HmXmrOriginalRecipient: someone-who-received-our-spam@hotmail.com
X-Reporter-IP: [IP-from-some-who-flagged-as-spam]
X-Message-Guid: a2236172-9474-11e5-9c3a-00215ad6eec8
x-store-info:4r51+eLowCe79NzwdU2kR3P+ctWZsO+J
Authentication-Results: hotmail.com; spf=none (sender IP is [OUR-IP-ADDRESS]) smtp.mailfrom=minvituccia@blackberrysa.com; dkim=none header.d=blackberrysa.com; x-hmca=none header.id=minvituccia@blackberrysa.com
X-SID-PRA: minvituccia@blackberrysa.com
X-AUTH-Result: NONE
X-SID-Result: NONE
X-Message-Status: n:n
X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0wO0Q9MjtHRD0yO1NDTD02
X-Message-Info: 11chDOWqoTmjqhOzvWWho/vK8oL2x1FIoEm0Tn+r3D4Vy8IHo2wUnqS07yp2Fxclyw07ONZgeH1xFUrogbJOZz8Pfl5FrUXTGgolDal8+UhiPOrwCAKsLtRr0R42oH/Du2inmiSwuWc/pY9oiWRqLA5If7jw818pUulf3QP7m+wKn2HEVHAg2VBr+OqDk1w/hWWO68tIy1BSoE8QFSPMNXh31MYdKh4mif3jAqDU+0qWqWSAxPdE/A==
Received: from [our-hostname] ([our-ip-address) by COL004-MC2F4.hotmail.com with Microsoft SMTPSVC(7.5.7601.23143);
Thu, 26 Nov 2015 11:34:05 -0800
Return-path: <minvituccia@blackberrysa.com>
Received: (qmail 18660 invoked by uid 61081); 26 Nov 2015 20:52:03 -0000
Date: 26 Nov 2015 20:52:03 -0000
Message-ID: <20151126205203.18660.qmail@our-hostname.com>
From: "Meghann Gasparo" <minvituccia@blackberrysa.com>
To: "someone-who-received-spam-from-our-server" <someone-who-received-spam-from-our-server@hotmail.com>
Subject: You could strike all your limpid seed right into my love tunnel text me 1.970.572.00.14
Mime-Version: 1.0
Content-Type: text/html
Content-Transfer-Encoding: 8bit
Mime-Version: 1.0
Content-Type: text/html
Content-Transfer-Encoding: 8bit
X-OriginalArrivalTime: 26 Nov 2015 19:34:06.0061 (UTC) FILETIME=[69C119D0:01D12881]
<html><body>Throw some of your hot cum on my face, deep into my door<br>
or <a href="http://holidayextravaganza.org/wp-content/themes/">run my humps rubbed</a> once again.<br>
<a href="http://holidayextravaganza.org/wp-content/themes/">Watch my profile</a> to receive much more spicy fun or just sms right now 1-970-572-00-73</body></html>
--70969AA2-2F73-4465-8DF3-26DC57EA3967--
Мы не используем qmail в качестве MTA. Что и говорить, но домен blackberrysa.com не является нашим.
Вы можете попробовать посмотреть netstat, чтобы получить исходящие соединения и отфильтровать порт 25.
netstat -nptw | grep :25
Вы можете использовать iptables для регистрации исходящих подключений к порту 25.
iptables -I OUTPUT -p tcp -m tcp --dport 25 -j LOG --log-prefix 'Outbound SMTP connection'
Это создает запись журнала, например
29 ноября 18:15:56 имя хоста ядро: исходящее соединение IN = OUT = eth0 SRC = 192.168.254.16 DST = 192.0.2.1 LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 64 ID = 36829 DF PROTO = TCP SPT = 39355 DPT = 25 WINDOW = 14600 RES = 0x00 SYN URGP = 0
Обратите внимание SPT=39355
вы можете использовать это для поиска вывода netstat
netstat -anp | grep 39355
tcp 0 1 192.168.254.16:39355 192.0.2.1:25 SYN_SENT 13992/someprogram
Я рекомендую проверить установку веб-сервера (ов), где вы, вероятно, обнаружите множество вредоносных PHP. Эти PHP-коды, вероятно, прибыли на ваш веб-сервер кем-то / каким-то ботом, злоупотребившим одной или несколькими уязвимостями вашего сервера или его файлов PHP. Помните, что эти коды PHP могут быть найдены во многих местах и форматах: внутри комментария изображения GIF или JPEG, суммированного md5, инвертированного и т. Д. Найдите эти функции PHP и зло eval
и ищите их там, где вы знаете, что их там может не быть.
Ваш заголовок указывает, что почта не прошла через exim. Заголовок qmail "Received" является сфабрикованным спамером. Если у вас есть веб-сервер на этом сервере, скорее всего, это какой-то скомпрометированный скрипт. Если вы выполняете NAT для других хостов, проблема может быть на других хостах. В противном случае у вас, вероятно, есть взломанный сервер.
Если вы сомневаетесь, попробуйте
iptables -I OUTPUT -m state --state NEW -p tcp --dport 25 -j LOG --log-uid --log-prefix 'New SMTP Outbound'
Это будет регистрировать идентификатор пользователя процесса, отправляющего письма.