Проблема
Мой клиент попросил меня взглянуть на его веб-сервер с общим хостингом на предмет следующей проблемы, но я не могу понять, что неправильно. Его сервер занесен в черный список во многих основных списках блокировки, таких как 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 - logfile
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 - logfile
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
Ваш заголовок указывает, что почта не прошла через exim. Заголовок qmail "Received" является сфабрикованным спамером. Если у вас есть веб-сервер на этом сервере, скорее всего, это какой-то скомпрометированный скрипт. Если вы выполняете NAT для других хостов, проблема может быть на других хостах. В противном случае у вас, вероятно, есть взломанный сервер.
Если вы сомневаетесь, попробуйте
iptables -I OUTPUT -m state --state NEW -p tcp --dport 25 -j LOG --log-uid --log-prefix 'New SMTP Outbound'
Это будет регистрировать идентификатор пользователя процесса, отправляющего письма.
Я рекомендую проверить установку веб-сервера (ов), где вы, вероятно, найдете множество вредоносных PHP. Эти PHP-коды, вероятно, прибыли на ваш веб-сервер кем-то / каким-то ботом, злоупотребившим одной или несколькими уязвимостями вашего сервера или его файлов PHP. Помните, что эти PHP-коды могут быть найдены во многих местах и форматах: внутри комментария изображения GIF или JPEG, с суммированием md5, инвертированием и т. Д. Найдите эти функции PHP и зло eval
и grep для них в местах, где, как вы знаете, их может не быть.