LINUX.ORG.RU
ФорумAdmin

Как найти и обезвредить рассылку спама?

 


0

5

Ребят, помогите разобраться с гадостью (за $, если у кого есть время).

OS: Debian 7.8 | iRedMail

Есть шлюз: 192.168.1.100 с apache2 на котором висел lightsquid на 80 порту и 443 редиректился на web-интерфейс почтовика RoundCube.

В логах apache2 видно, что кто-то ломал веб-сервер:

[Thu Apr 09 09:53:16 2015] [error] [client 104.243.47.26] File does not exist: /var/www/muieblackcat
[Thu Apr 09 09:53:16 2015] [error] [client 104.243.47.26] File does not exist: /var/www/phpMyAdmin
[Fri Apr 10 01:58:15 2015] [error] [client 59.108.91.237] File does not exist: /var/www/img
Хотя взломали и сам почтовик, т.к. после переустановки шлюза без web-сервера повторилось всё тоже самое.

Теперь с почтового сервера iRedMail 192.168.1.5 идёт отправка спама.

Судя по логам, отправка идёт от шлюза [192.168.1.100], от чужих IP [63.20.194.21] и самого почтовика 127.0.0.1

Apr 10 17:04:56 mail postfix/smtp[11064]: 3E89424A007E: to=<irene025@yahoo.com.tw>, relay=127.0.0.1[127.0.0.1]:10024, delay=16, delays=13/0.02/0.01/3.5, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 3C39424A0086)
Apr 10 17:04:58 mail postfix/smtpd[11075]: connect from mail.mydomain[127.0.0.1]
Apr 10 17:04:58 mail postfix/smtpd[11075]: 1B18024A0088: client=mail.mydomain[127.0.0.1]
Apr 10 17:04:58 mail postfix/cleanup[11039]: 1B18024A0088: message-id=<XCJEPIYOIJQWCWQPNTGSVF@163.com>
Apr 10 17:04:58 mail postfix/smtpd[11075]: disconnect from mail.mydomain[127.0.0.1]
Apr 10 17:04:58 mail postfix/qmgr[11021]: 1B18024A0088: from=<sqldqh@163.com>, size=7382, nrcpt=1 (queue active)
Apr 10 17:04:58 mail amavis[8783]: (08783-01) Passed SPAM {RelayedTaggedInternal}, MYNETS/MYUSERS LOCAL [192.168.1.100]:3719 [63.20.194.21] <sqldqh@163.com> -> <janeisq@yahoo.com.tw>, Queue-ID: 3E89424A007E, Message-ID: <XCJEPIYOIJQWCWQPNTGSVF@163.com>, mail_id: RZ2ZpksUjUzT, Hits: 16.795, size: 5950, queued_as: 1B18024A0088, 5356 ms
Apr 10 17:04:58 mail postfix/smtp[11065]: 3E89424A007E: to=<janeisq@yahoo.com.tw>, relay=127.0.0.1[127.0.0.1]:10024, delay=18, delays=13/0.03/0.01/5.4, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 1B18024A0088)

Почтавил логирование php5 в /etc/php5/apache2/php.ini

mail.add_x_header = On
mail.log = /var/log/php.mail.log
Но в логах пусто...

В очереди было более 6000 писем... Удалил их. Как это обезвредить?



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

Ответ на: комментарий от Alpha789

Это просто праздник какой-то. man netstat. Есть даже на русском языке.

Откуда я или анонимус можем знать, какой у тебя IP?

С удалённых адресов 218.65.30.107 и 192.168.1.10 установлено подключение на 22 порт ( ssh ). Это должно о чём-то говорить лично тебе.

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

ну и банальное who и lastlog должно показать левые сессии, если конечно руткит не воткнули, тогда стоит хотя бы прогнать chkrootkit или rkhunter

JB ★★★★★
()
Последнее исправление: JB (всего исправлений: 1)
Ответ на: комментарий от JB

С ними есть засада - они не покажут сессии без shell ( ssh -T ), хотя через такие сессии всё равно можно сделать всё. Логи и netstat надёжнее

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

Да, в суете выложил тут свой ip. Вот я и думаю, как могли подключиться по ssh... с одного компа я, а удалённо-то как.

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

да, who и lastlog ничего не показывают.

сейчас осенило... у меня samba на 192.168.1.2 крутится. Ранее там был шлюз 192.168.1.1. Посмотрел старые логи вебсервера на 192.168.1.2 - его пытались взломать... видимо, оттуда лезет какая-то пакость, которая пароли перехватывает.

PS: да, устроил вам праздник - в суете в коментах забыл убрать IP

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

у тебя по ssh рут из китая сидит

anonymous
()
Ответ на: комментарий от Alpha789

Ок, давай ещё раз

Установленное подключение на 22 порт _НЕ_ означает, что тебя взломали. Но это _основание_ для более подробной проверки

Примерно как «Перед входной дверью следы и замочная скважина в царапинах. Значит ли это, что меня взломали»

Установить подключение может любой удалённый адрес, раз ты не ограничил доступ. Но чтобы получить доступ к компу, ему нужен пароль или ключ. Дальше нужно смотреть логи ( вот прямо сейчас взять и прочитать /var/log/secure, /var/log/auth )

Но. просто так держать открытой сессию никто не будет. Так что _скорее_всего_ неизвестный китаец ( whois $IP говорит CHINANET-JX ) подбирает пароль, либо ( менее вероятно ) уже подобрал.

  • Ещё раз - прочти логи
  • И заблокируй доступ из интернета к 22 порту. Если тебе нужен доступ из интернета - повесь ssh на нестандартный порт ( 1024 .. 65535 ), в идеале что он ещё был unassigned в IANA
  • вообще любые входящие соединения из интернета должны отбрасываться, кроме тех что тебе явно нужны
router ★★★★★
()
Ответ на: комментарий от router

Да, пытались ломать ssh. Сейчас повесил его на нестандартный порт. Есть так же сессии с моей машинки (Debian-desktop 192.168.1.10) на на какой-то левый порт 38239

cat /var/log/auth.log | grep sshd 
Apr 12 13:16:10 gateway sshd[3078]: Failed password for root from 218.65.30.107 port 34719 ssh2
Apr 12 13:16:12 gateway sshd[3078]: Failed password for root from 218.65.30.107 port 34719 ssh2
Apr 12 13:16:15 gateway sshd[3078]: Failed password for root from 218.65.30.107 port 34719 ssh2
Apr 12 13:16:15 gateway sshd[467]: Received signal 15; terminating.
Apr 12 13:16:43 gateway sshd[474]: Server listening on 0.0.0.0 port 22.
Apr 12 13:16:43 gateway sshd[474]: Server listening on :: port 22.
...
Apr 12 13:47:06 gateway sshd[741]: Accepted password for username from 192.168.1.10 port 38153 ssh2
Apr 12 13:47:06 gateway sshd[741]: pam_unix(sshd:session): session opened for user username by (uid=0)
Apr 12 13:57:42 gateway sshd[743]: Received disconnect from 192.168.1.10: 11: disconnected by user
Apr 12 13:57:42 gateway sshd[741]: pam_unix(sshd:session): session closed for user username
Apr 12 14:00:04 gateway sshd[778]: Accepted password for username from 192.168.1.10 port 38201 ssh2
Apr 12 14:00:04 gateway sshd[778]: pam_unix(sshd:session): session opened for user username by (uid=0)
Apr 12 14:02:38 gateway sshd[780]: Received disconnect from 192.168.1.10: 11: disconnected by user
Apr 12 14:02:38 gateway sshd[778]: pam_unix(sshd:session): session closed for user username
Apr 12 14:15:15 gateway sshd[804]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.10  user=username
Apr 12 14:15:16 gateway sshd[804]: Failed password for username from 192.168.1.10 port 38237 ssh2
Apr 12 14:15:16 gateway sshd[804]: Connection closed by 192.168.1.10 [preauth]
Apr 12 14:15:52 gateway sshd[806]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.10  user=username
Apr 12 14:15:54 gateway sshd[806]: Failed password for username from 192.168.1.10 port 38239 ssh2
Apr 12 14:16:04 gateway sshd[806]: Accepted password for username from 192.168.1.10 port 38239 ssh2
Apr 12 14:16:04 gateway sshd[806]: pam_unix(sshd:session): session opened for user username by (uid=0)
Apr 12 14:27:01 gateway sshd[470]: Received signal 15; terminating.
Apr 12 14:27:01 gateway sshd[876]: Server listening on 192.168.1.1 port 22.
Alpha789
() автор топика
Ответ на: комментарий от Alpha789

Есть так же сессии с моей машинки (Debian-desktop 192.168.1.10) на на какой-то левый порт 38239

Наоборот, с 38239 на 22. При создании tcp сессии с клиентской стороны берётся произвольный свободный порт из диапазона net.ipv4.ip_local_port_range, man sysctl

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

Получается, что взломали или нет, - не ясно пока. Скорее всего, нет. Но раз почтовик режет постоянные обращения, значит, кто-то пытается из отправлять через этот проброс:

-A POSTROUTING -d 192.168.1.5/32 -p tcp -m tcp --dport 25 -j SNAT --to-source 192.168.1.1
-A POSTROUTING -d 192.168.1.5/32 -p tcp -m tcp --dport 110 -j SNAT --to-source 192.168.1.1
убрал. Так вроде бы тихо пока. Но так письма уходят с почтовика, но не приходят. Придётся всё равно открывать порт для приёма почт.

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

Это правило предназначено для внутренней сети, правильно?

И пока главный его недостаток - в логе отсутствует IP адрес отправителя ( из внутренней сети ). Убирать их не нужно. Нужно искать, с какого хоста из внутренней сети идёт рассылка спама.

Как уже говорил, добавь перед ним логирование

-A POSTROUTING -d 192.168.1.5/32 -p tcp -m tcp --dport 25 -m limit --limit=10/s -j LOG

Кстати, правило для 110 порта вообще нет смысла отключать. POP3 позволяет только получать, но не отправлять почту

Перевод iptables howto: http://www.opennet.ru/docs/RUS/iptables/

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

Можешь помошь с настройкой iptables по другим првилам (не за спасибо, конечно)?

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

перенастроить постфикс так, что бы почта отправлялась только если клиент авторизовался? При чем запретить без авторизации слать письма даже с локалхоста.

Можешь подсказать, как это сделать? Это же здесь?

mynetworks = 127.0.0.0/8
...
smtpd_reject_unlisted_sender = yes
...

smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated
Alpha789
() автор топика
Ответ на: комментарий от router

Включил логирование. Выключил все компы windows.

Кто-то ломится на адрес почтовика. Причём eth0 = 192.168.1.1 Получается пакет принимается внешним eth1 и далее направляется почтовику.

Это может быть похоже на то, что спёрли логин\пароль от какого-то ящика и пытаются отправлять или просто ломятся или что?


Apr 12 17:18:27 gateway kernel: [ 2003.596685] IN= OUT=eth0 SRC=114.24.2.13 DST=192.168.1.5 LEN=48 TOS=0x00 PREC=0x00 TTL=114 ID=22871 DF PROTO=TCP SPT=3423 DPT=25 WINDOW=65535 RES=0x00 SYN URGP=0 
Apr 12 17:18:32 gateway kernel: [ 2009.235294] IN= OUT=eth0 SRC=114.43.245.54 DST=192.168.1.5 LEN=48 TOS=0x00 PREC=0x00 TTL=114 ID=20248 DF PROTO=TCP SPT=1346 DPT=25 WINDOW=65535 RES=0x00 SYN URGP=0 
Apr 12 17:18:33 gateway kernel: [ 2009.422196] IN= OUT=eth0 SRC=36.225.24.62 DST=192.168.1.5 LEN=48 TOS=0x00 PREC=0x00 TTL=114 ID=11884 DF PROTO=TCP SPT=1653 DPT=25 WINDOW=65535 RES=0x00 SYN URGP=0 
Apr 12 17:18:47 gateway kernel: [ 2023.863949] IN= OUT=eth0 SRC=118.161.244.29 DST=192.168.1.5 LEN=48 TOS=0x00 PREC=0x00 TTL=114 ID=46929 DF PROTO=TCP SPT=1593 DPT=25 WINDOW=65535 RES=0x00 SYN URGP=0 
Apr 12 17:18:53 gateway kernel: [ 2029.469100] IN= OUT=eth0 SRC=98.138.121.228 DST=192.168.1.5 LEN=60 TOS=0x00 PREC=0x00 TTL=51 ID=24824 DF PROTO=TCP SPT=55543 DPT=25 WINDOW=14600 RES=0x00 SYN URGP=0 
Apr 12 17:19:04 gateway kernel: [ 2040.887686] IN= OUT=eth0 SRC=114.24.2.13 DST=192.168.1.5 LEN=48 TOS=0x00 PREC=0x00 TTL=114 ID=3742 DF PROTO=TCP SPT=1221 DPT=25 WINDOW=65535 RES=0x00 SYN URGP=0
Alpha789
() автор топика
Ответ на: комментарий от Alpha789

Ну например сделай smtpd_sasl_exceptions_networks пустым

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks =
smtpd_sasl_security_options = noanonymous

и убери permit_mynetworks из smtpd_sender_restrictions

По хорошему конечно надо открывать документацию и внимательно читать

JB ★★★★★
()
Последнее исправление: JB (всего исправлений: 2)
Ответ на: комментарий от Alpha789

ты можешь схему примерно набросать, что у тебя к чему подключено и как? А то все эти eth0, eth1 и куча разных адресов что ты тут накопипастил ясности не приносят

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

Тееперь буду спать с мануалами...

Схема такая:

1. Шлюз. eth1 = xx.xx.xx.xx (хотя внешний адрес я уже засветил - порадовал в честь праздника пасхи =))

eth0 = 192.168.1.1

На на шлюзе есть проброс портов 110 и 25 на почтовик 192.168.1.5

А так же на шлюзе squid слушает 80 и 443 порты (но это пока убрал из iptables).

Bind крутиться вместе с самбой на 192.168.1.2 (до этого эта машинка была шлюзом, и там в логах apache2 есть информация, что ее пытались ломать. Но там стоял denyhosts и нестандартный порт ssh).

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

Отключи 192.168.1.2 от сети, я так понимаю что bind у тебя там в качестве рекурсивного днс?

И после всех выполненных рекомендаций еще раз покажи что у тебя в логах почтовика

JB ★★★★★
()
Последнее исправление: JB (всего исправлений: 2)
Ответ на: комментарий от JB

Уже отключал 192.168.1.2 от сети - картина не меняется: на шлюзе теже логи iptables, - кто-то пытается залезть на 192.168.1.5.

Да, там рекурсивный днс.

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

то что пытаются - это ерунда, у меня тоже много кто пытается отослать спам через мой сервер. Поток спама прекратился?

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

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

после переустановки почтовика поток спама прекратился. Но почтовик постоянно занят тем, что режет левые письма. Как только я убираю проброс портов 110 и 25 на шлюзе, - эти левые письма прекращаются. Как только открываю - начинают сыпаться. Из этого я делаю вывод, что кто-то прицепился на шлюз к 25-му порту и долбит попытками отправить левые письма.

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

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

Это - нормально, особенно, если был момент, когда получалось. Желающих послать спам сейчас вагон и маленькая тележка, поиском, через кого послать, занимаются постоянно. Если всё будет хорошо, через некоторое количество времени количество попыток станет поменьше, но окончательно они не пропадут никогда. Дальше изучай методы по ограничению этого безобразия.

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

Фух... ради интереса включил старый почтовик (заражённый) - с него идёт спам. Видимо, это уже пакость внутри какая-то завелась. Если я правильно понял, мои действия:

1. Сделать нормальные правила iptables

2. Защитить ssh (думаю поставить Fail2ban)

3. На постфиксе запретить всему и всем отправку без авторизации.

4. Сделать-таки сплит днс.

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

Видимо, это уже пакость внутри какая-то завелась

Может, очередь всё ещё не пустая ? Заголовки сообщений нашёл ?

(думаю поставить Fail2ban)

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

На постфиксе запретить всему и всем отправку без авторизации.

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

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

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

тут я не согласен. Без авторизации стоит пускать только с localhost, от всех остальных требовать авторизацию. Мало ли какую фигню подцепят на клиентских машинах и которая будет массово слать спам найдя в сети почтовик

JB ★★★★★
()
Последнее исправление: JB (всего исправлений: 2)
Ответ на: комментарий от JB

Мало ли какую фигню подцепят на клиентских машинах и
которая будет массово слать спам найдя в сети почтовик

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

AS ★★★★★
()

Кстати, может кому интересно: как в iRedMail перенести ящики (MySQL) и письма с одного сервера на другой.

1. Делаем бэкап базы vmail. Лучше использовать скрит, который лежит в /var/vmail/backup/backup_mysql.sh. Он всё сложит сюда: /var/vmail/backup/mysql/

2. На новом сервере копируем rsync'ом

rsync --progress -av ip:/var/vmail/backup/mysql /var/vmail/backup
И все письма тоже копируем:
rsync --progress -av ip:/var/vmail/vmail1/ /var/vmail

3. Распаковываем и делаем импорт БД

bzip2 -dv amavisd.sql.bz2
mysql -uroot -p vmail < vmail.sql

Всё, пароли и письма IMAP подхватились, клиенты только ругнуться на новый сертификат SSL.

Для полного переноса один-в-один надо ставить такие же пароли на новом серваке и делать импорт всех4-х баз, как указано здесь.

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

К этим правилам (убрал permit_mynetworks из smtpd_sender_restrictions)

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks =
smtpd_sasl_security_options = noanonymous

добавил ещё до кучи, как научили здесь:

smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_helo_hostname,  reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_helo_access pcre:/etc/postfix/helo_access.pcre
где в /etc/postfix/helo_access.pcre прописал домен, внешний, внутренний и адрес 127.0.0.1
/^mail\.example\.com$/ 550 Don't use my hostname
/^192\.0\.34\.166$/ 550 Don't use my IP address
/^\[192\.0\.34\.166\]$/ 550 Don't use my IP address

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