Скрипт, который вызвал ф-цию mail

alexhemp

Новичок
Скрипт, который вызвал ф-цию mail

У моих знакомых на хостинге обнаружилась проблема, кто-то из их клиентов рассылает спам.

Хостинг маленькой студии, сайтов клиентов штук 10...
Попросили посмотреть...
Есть подозрение что просто в одном из скриптов дырка...

Сходу удалось обнаружить что шлют через ф-цию mail в php (ее запрет прекратил поток спама), а не через perl-скрипт (ну тогда бы в логах был бы ctladdr=имя юзера)

Есть ли какой-нибудь простой способ добавлять скажем путь к скрпту в maillog при отправке через mail?

Пока мне приходит в голову только враппер в sendmail_path и передавать ему через php_admin_value имя юзера и писать его в отдельный лог.

Есть ли какие-то готовые проверенные решения?

-~{}~ 30.08.05 14:07:

Нашел злоумышленника...

Один из клиентов изменил свой пароль на имя учетной записи, учетную запись сломали, влили по ftp скрипт рассылки и POST-ом на него кидали письма...

Все методы вызова исполнимых файлов запрещены в php.ini, рассылать можно только через mail

Вопрос остается актуальным... админы - поделитесь наработками :)
 

ys

отодвинутый новичок
1. Не пускай к сайту чайников.
2. Отстраивай Accounting и не пускай на все сервисы, кроме http кого не надо.
3. Сервисы ftp, ssh, etc.. вешай на другие нестандартные порты.
4. При задании/смене пароля сделай проверку по более жестким условиям (не менее 8 символов, должны быть маленькие/большие буквы и цифры), иначе он не проходит.
5. Все изменения в логинах/паролях клиентов - себе на почту.
 

alexhemp

Новичок
ys

Это все понятно - но хостинг - не мой.
Меня просто попросили посмотреть что там твориться...

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

Просто хочется записывать с какого аккаунта отправляется почта... Так что прошу - по теме. Все эти меры - не уберегут от злонамеренного клиента, хочется его вычислить все-таки...
 

ys

отодвинутый новичок
alexhemp

Ну вычислили Вы, что это dialup на 1000 номеров у провайдера, который торгует карточками доступа в интернет или это адрес анонимной прокси. Дальше то что?

Это не решает задачи.
 

alexhemp

Новичок
ys

Ты не понял! По сути требуется узнать виртуальный хост, на котором работает скрипт, рассылающий почту через mail().

Нужно настроить PHP так, чтобы была возможность узнать это.

ip адрес - будет потом в логах, когда станет понятно в каком скрипте дыра - и конечно же он не нужен (ибо это скорее всего такая-же сломанная машина).

Пока я нашел вариант изменить sendmail_path для каждого хоста используя php_admin_value

типа так

php_admin_value sendmail_path /usr/local/sbin/phpsendmail аккаунт

в скрипте phpsendmail читать STDIN, запускать sendmail.
argv[1] писать в лог (возможно с частью распарсенного STDIN).

Писать что-либо не хочется ибо наверняка такие врапперы есть уже готовые.
 

Forrest

Guest
Postfix например пишет в хэдерах uid того юзера, кто отсылает почту, на хостинге где suexec это помогает сразу, кроме того видел различные фильтры для МТА, которые вписывают в хэдэры путь к скрипту, который отправлял почту, но сами подумайте как это сказывается на безопасности.

Однако есть решение, например добавлять в хэдеры путь к скрипту, но в шифрованном виде, и если придет абуза, письмо с хэдэрами обязательно приложат, там вы возьмете и расшифрутет путь к скрипту.
 

ys

отодвинутый новичок
Вообще в гугле есть решение этой задачи.
Причем деревянное как танк.
 
Сверху