Как искать спамера - рассказали. Теперь один из вариантов как сработать на опережение - предотвратить спам в результате взлома.
В iptables запрещаем исходящее TCP соединение на любой внешний 25 порт с эккаунтов кроме postfix, root, mail.
В результате этого web сервер не может отправить почту напрямую.
Всех нарушителей перед reject-ом пишем в лог. За логом непрерывно следим. Появление массы записей свидетельствует о попытке установить внешние соединения на порт 25.
-A OUTPUT -o br0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o br0 -m state --state NEW -p tcp -m tcp --dport 25 -j SMTPOUT
-A SMTPOUT -d 127.0.0.1 -j ACCEPT
-A SMTPOUT -m owner --gid-owner mail -j ACCEPT
-A SMTPOUT -m owner --uid-owner root -j ACCEPT
-A SMTPOUT -m owner --uid-owner smfs -j ACCEPT
-A SMTPOUT -j LOG --log-uid --log-prefix "Reject outgoing SMTP " # Houston, we have a problem
-A SMTPOUT -j REJECT --reject-with icmp-admin-prohibited
А в почтовике разрешаем отправку почты
только с аутентификацией.
Большинство взломов не смогут разослать спам.
Более продвинутые взломы вынуждены будут найти аутентификацию и отправлять с ней.
В постфиксе включаем
smtpd_sasl_authenticated_header = yes (Postfix версии 2.3 и выше)
В результате в чего в заголовке каждого отправленного письма появится имя аутентифицировавшегося пользователя.
По этому имени получив абузу от спамхауса вы тутже видите кто провинился.
Мониторим очередь отправки. Бурный рост очереди - чаще всего - результат взлома и попытки рассылки спама.
Мониторим dnsbl листы.
Ну и напоследок, что сделать чтобы минимизировать риск взлома?
Блокировать модификацию и создание файлов из php. Да, автообновление вордпресс провалится. Но если мы запрещаем бесконтрольную модификацию сайта, то запрещаем всем. Можно даже руту запретить.
chattr +i -R * /var/www/hosts/site.domain/public_html/
У каталогов куда необходимо разрешить запись файлов (например upload) отключите хендлер обработки php файлов интерпретатором php. Пусть веб сервер его отобразит но не выполнит. Файл .htaccess который это блокирует также защищаем от записи. Основное правило - запретить произвольную бесконтрольную модификацию кода оставив возможность записывать данные но при этом запретить возможожность выполнения данных. :)
Понятно что не каждая CMS сможет нормально работать в таком режиме.
В таком режиме много лет у нас работает сайт одного клиента на joomla 1.5 :) Дыра - дырой. И если снять ридонди и его взламывают в течении пары дней.
И заключительный совет: Не размещайте сайты на хосте который является также и почтовым сервером. Или как минимум разнесите IP адреса с которого отправляется почта от адреса с которого работает вебсервер. Чтобы это хоть снаружи выглядело как разные хосты. Тогда взлом сайта и рассылка спама не приведёт к блокировке IP почтовика в разных dnsbl от которого порой отмыться очень сложно и/или долго.