The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Завелся спаммер, как вычислить?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Завелся спаммер, как вычислить?" 
Сообщение от deva66 emailИскать по авторуВ закладки(ok) on 26-Июн-05, 03:19  (MSK)
Есть сервер, на котором хостятся различные веб-страницы, и вот от провайдера, на площадке у которого он находится начали приходить уведомления о том, что от нас идет спам.
Но поскольку релей на сервер запрещен для всех, кроме локалхоста, то получается, что спаммер использует скрипт. Можно ли его как-то вычислить?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Завелся спаммер, как вычислить?" 
Сообщение от bass Искать по авторуВ закладки(??) on 27-Июн-05, 08:15  (MSK)
>Есть сервер, на котором хостятся различные веб-страницы, и вот от провайдера, на
>площадке у которого он находится начали приходить уведомления о том, что
>от нас идет спам.
>Но поскольку релей на сервер запрещен для всех, кроме локалхоста, то получается,
>что спаммер использует скрипт. Можно ли его как-то вычислить?

логи

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "Что такое 'использует скрипт'? - мой сосед" 
Сообщение от Банзай emailИскать по авторуВ закладки(??) on 29-Июн-05, 03:21  (MSK)
просверлил дырку в стене и пускает скрозь нее отравляющих газов?

"релей запрещен для всех" - ищи дыру.

"от провайдера уведомления" - так там все есть. В уведомлениях-то. Читай, перезвони провайдеру.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 27-Июн-05, 10:56  (MSK)
>Есть сервер, на котором хостятся различные веб-страницы, и вот от провайдера, на
>площадке у которого он находится начали приходить уведомления о том, что
>от нас идет спам.
>Но поскольку релей на сервер запрещен для всех, кроме локалхоста, то получается,
>что спаммер использует скрипт. Можно ли его как-то вычислить?

а) поиск базы в файлах
б) поиск скрипта в файлах
в) смотря как спамит - если через релей - логи, если напрямую - то прикрыть порт.
г) у меня есть врапер для sendmail и qmail-inject который ведет свой лог

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Завелся спаммер, как вычислить?" 
Сообщение от deva66 emailИскать по авторуВ закладки(ok) on 27-Июн-05, 20:55  (MSK)
>>Есть сервер, на котором хостятся различные веб-страницы, и вот от провайдера, на
>>площадке у которого он находится начали приходить уведомления о том, что
>>от нас идет спам.
>>Но поскольку релей на сервер запрещен для всех, кроме локалхоста, то получается,
>>что спаммер использует скрипт. Можно ли его как-то вычислить?
>
>а) поиск базы в файлах
Пробовал, пока не удалось, делал даже дамп всей мускл базы и искал текст в ней, но результат нулевой.

>б) поиск скрипта в файлах
Пробовал искать файлы, содержащие строку sendmail - не вышло.

>в) смотря как спамит - если через релей - логи, если напрямую
>- то прикрыть порт.
Спамит через скрипт, похоже, релей закрыт для всех, кроме локалхоста.

>г) у меня есть врапер для sendmail и qmail-inject который ведет свой
>лог

Почта у меня ходит по sendmail, вот отрывок письма провайдера:

Return-Path: hrvatina@online.hr
Received: from  rly-xl05.mx.aol.com (rly-xl05.mail.aol.com [172.20.83.54]) by air-xl04.mail.aol.com (v106.2) with ESMTP id
+MAILINXL41-5d642bc83b2249; Fri, 24 Jun 2005 18:05:43 -0400
Received: from  factor.myserver.com (factor.myprovider.net [158.158.158.158]) by rly-xl05.mx.aol.com (v106.2) with ESMTP id
+MAILRELAYINXL54-5d642bc83b2249; Fri, 24 Jun 2005 18:05:39 -0400
Received: from vmyn (13.71.204.126)
        by factor.myserver.com; Sat, 25 Jun 2005 01:05:39 +0300
Message-ID: <009801c43de7$8df7e091$67184fa8@vmyn>
Reply-To: leiden@operamail.com
From: hrvatina@online.hr
To: UndisclosedRecipients
Subject: We can make it within one weeek. Swiss bankres achieve the same within a year.
Date: Sat, 25 Jun 2005 01:05:39 +0300
MIME-Version: 1.0
Content-Type: multipart/mixed;
        boundary="----=_NextPart_000_0096_01C44FA8.6718E091"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
X-AOL-IP: 158.158.158.158

Пугает строчка:
Received: from vmyn (13.71.204.126)
        by factor.myserver.com; Sat, 25 Jun 2005 01:05:39 +0300

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

Таких писем приводится несколько и у каждого эта строчка отличается айпишником и названием хоста.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 27-Июн-05, 21:18  (MSK)
Я имел ввиду - у тебя исходящие на 25 порт случайно не открыты для юзеров? Им тогда никакой релей не нужен.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Завелся спаммер, как вычислить?" 
Сообщение от deva66 emailИскать по авторуВ закладки(ok) on 27-Июн-05, 22:01  (MSK)
>Я имел ввиду - у тебя исходящие на 25 порт случайно не
>открыты для юзеров? Им тогда никакой релей не нужен.

К сожалению открыты, в ближайшем будущем прикрою, но спаммера все-равно надо вычислять :(

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 27-Июн-05, 22:23  (MSK)
если у тебя линух - примитивное действие с iptables прикрывает этот порт и ведет лог несанкционированных попыток: (как на бсд - не знаю)

iptables -A OUTPUT -o $E_IFACE -p tcp -s $IPADDR --source-port $P_UNPR --destination-port 25 --match owner --uid-owner valid_user1 -j ACCEPT

.....

iptables -A OUTPUT -o $E_IFACE -p tcp -s $IPADDR --source-port $P_UNPR --destination-port 25 --match owner --uid-owner valid_userN -j ACCEPT

iptables -A OUTPUT -o $E_IFACE -p tcp -s $IPADDR --source-port $P_UNPR --destination-port 25 -j LOG

iptables -A OUTPUT -o $E_IFACE -p tcp -s $IPADDR --source-port $P_UNPR --destination-port 25 -j DROP

правда я не знаю будет-ли в лог писаться инфа о uid-е, да и не всегда она поможет.

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

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

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Завелся спаммер, как вычислить?" 
Сообщение от Medlar Искать по авторуВ закладки on 28-Июн-05, 14:09  (MSK)
>Пугает строчка:
>         Received: from vmyn (13.71.204.126)
>                 by factor.myserver.com; Sat, 25 Jun 2005 01:05:39 +0300

13.71.204.126 - это адрес из твоей сети?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Завелся спаммер, как вычислить?" 
Сообщение от deva66 emailИскать по авторуВ закладки(ok) on 28-Июн-05, 21:28  (MSK)
>>Пугает строчка:
>>         Received: from vmyn (13.71.204.126)
>>                 by factor.myserver.com; Sat, 25 Jun 2005 01:05:39 +0300
>
>13.71.204.126 - это адрес из твоей сети?

Нет, это какой-то левый адрес, при чем в каждом письме он меняется.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

23. "Завелся спаммер, как вычислить?" 
Сообщение от Medlar Искать по авторуВ закладки on 29-Июн-05, 16:24  (MSK)
>>>Пугает строчка:
>>>         Received: from vmyn (13.71.204.126)
>>>                 by factor.myserver.com; Sat, 25 Jun 2005 01:05:39 +0300
>>
>>13.71.204.126 - это адрес из твоей сети?
>
>Нет, это какой-то левый адрес, при чем в каждом письме он меняется.
>


Так, а 158.158.158.158 - это адрес твоего почтовика?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "Завелся спаммер, как вычислить?" 
Сообщение от deva66 emailИскать по авторуВ закладки(ok) on 28-Июн-05, 21:36  (MSK)
>г) у меня есть врапер для sendmail и qmail-inject который ведет свой
>лог
Похоже, что врапить придется как можно скорее, можно поподробнее об этом?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 28-Июн-05, 22:01  (MSK)
>>г) у меня есть врапер для sendmail и qmail-inject который ведет свой
>>лог
>Похоже, что врапить придется как можно скорее, можно поподробнее об этом?

1. выставляешь в конфиге апача переменную для каждого виртуалхоста
2. в ф-ии main читаешь ее через getenv
3. выводишь что-то в файл соответствующий пользователю.

переименовываешь свой sendmail, вместо него ставишь врапер
не забываешь естественно про права.

- мои юзеры идут от 1000
- после fopen лучше делать flock
- у меня сделано по другому принципу - я определяю имя пользователя
по uid-у
- syslog по-моему не работает здесь, хотя не уверен точно.

если вопрось - стучи в 35990364

какая-то из версий, лежит локально
#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
#include <sys/types.h>
#include <pwd.h>

#define PROGRAM "/var/qmail/bin/sendmail.saved0"
#define FILEFORMAT "/usr/admin/users/%s/maillimit"
#define FACILITY LOG_MAIL

#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
#include <sys/types.h>
#include <pwd.h>

#define PROGRAM "/var/qmail/bin/sendmail.saved.version"
#define FILEFORMAT "/usr/admin/users/%s/maillimit"
#define FACILITY LOG_MAIL

int main(const int argn, char *const argv[])
{
    char filename[256];
    char buff[256];
    char user[256];
    FILE *f;
    char* readed;
    int total, used;
    struct passwd *psw;

    openlog("ASNF LIMIT", 0, FACILITY);

    uid_t uid = getuid();    
    uid_t euid = geteuid();    
    uid_t gid = getgid();    
    uid_t egid = getegid();    

    syslog(LOG_INFO, "started: %d/%d %d/%d\n", uid, gid, euid, egid);
    
    if (uid<=1000)
    {
        goto __execute__;
    }

    psw = getpwuid(uid);
    strcpy(user,psw->pw_name);
    
    sprintf(filename, FILEFORMAT, psw->pw_name);

    f = fopen(filename, "r");
    
    if (!f)
    {
        syslog(LOG_ERR, "FAIL: opening %s\n", filename);
        /* printf("Run limit config was not found\n"); */
        closelog();
        return -1;
    }

    readed = fgets(buff, 255, f);
    
    if (!readed)
    {
        syslog(LOG_ERR, "FAIL: to read value for %s\n", psw->pw_name);
        fclose(f);
        closelog();
        return -2;
    }

    if (strncmp(buff,"unlim",5)==0)
    {
        fclose(f);
        syslog(LOG_INFO, "ASNF Limit control: user %s execute %s no limits\n", psw->pw_name, PROGRAM);
        closelog();
        goto __execute__;
    }
    
    total = atoi(buff);
    
    readed = fgets(buff, 255, f);
    
    if (!readed)
    {
        syslog(LOG_ERR, "FAIL: to read value for %s\n", psw->pw_name);
        fclose(f);
        closelog();
        return -3;
    }

    used = atoi(buff);
    
    fclose(f);

    if (total<=used)
    {
        syslog(LOG_INFO, "Limit %d for %s exceeded\n", total, psw->pw_name);
        closelog();
        return 1;
    }

    used ++;    

    f = fopen(filename, "w");
    
    if (!f)
    {
        syslog(LOG_ERR, "FAIL: opening %s\n", filename);
        closelog();
        return -1;
    }

    fprintf(f, "%d\n%d\n", total, used);
    fclose(f);    
    
    syslog(LOG_INFO, "user %s execute %s\n", psw->pw_name, PROGRAM);

__execute__:
/*
    if ((setgid(gid)!=0)||
        (initgroups(user, gid)!=0)||
        (setuid(uid)!=0)||
        (setegid(gid)!=0)||
        (seteuid(uid)!=0))
    {
        syslog(LOG_ERR, "failed to change uid/gid\n");
        closelog();
        return 0;
    }
*/
    uid = getuid();    
    euid = geteuid();    
    gid = getgid();    
    egid = getegid();    
    syslog(LOG_INFO, "execute: %d/%d %d/%d\n", uid, gid, euid, egid);

    closelog();

    execv(PROGRAM, argv);
    
    return 0;
}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 28-Июн-05, 22:03  (MSK)
да, там два блока заголовков, верхний оказался случайно, он от другой версии :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Завелся спаммер, как вычислить?" 
Сообщение от jonatan Искать по авторуВ закладки(ok) on 27-Июн-05, 11:02  (MSK)
Посмотреть в заголовках письма userid:
Received: by host.domain.tld (Postfix, from userid 500)
...
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Завелся спаммер, как вычислить?" 
Сообщение от Chris emailИскать по авторуВ закладки(??) on 28-Июн-05, 15:22  (MSK)
snort вам поможет! :-)
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 28-Июн-05, 15:38  (MSK)
>snort вам поможет! :-)

гм. а как именно в такой ситуации может помочь snort?
если она умеет анализировать трафик по происхождению, то в случае рассылки cgi/SMTP скриптом  - она может помочь его вычислить, но если это mod-php или рассылка через релей - что она даст?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Завелся спаммер, как вычислить?" 
Сообщение от Chris emailИскать по авторуВ закладки(??) on 28-Июн-05, 15:41  (MSK)
Эх...
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Завелся спаммер, как вычислить?" 
Сообщение от Chris emailИскать по авторуВ закладки(??) on 28-Июн-05, 15:42  (MSK)
Вам дана вселенная, в которой всё делается так как вам хочется, вы в ней боги, просто надо немного пофантазировать.


ЗЫ: сделай всё через apache chroot и будешь в helo видить хост :-)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 28-Июн-05, 15:59  (MSK)
>ЗЫ: сделай всё через apache chroot и будешь в helo видить хост
>:-)

ну у меня апач в черуте. предположим что РНР в сейф моде. и как я могу определить какой именно скрипт обрабатывала дочка апача когда открыла порт? Да, я определю что у меня открывается порт (кстати у меня он вобще-то прикрыт). Но как я узнаю скрипт???

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

19. "Завелся спаммер, как вычислить?" 
Сообщение от Moralez emailИскать по авторуВ закладки(ok) on 29-Июн-05, 08:59  (MSK)
ужас, обсуждение двое суток тянулось и всё это время спам рассылался... Админ, надо было заявление на увольнение писать.... :(
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

20. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 29-Июн-05, 12:33  (MSK)
>надо было заявление на увольнение писать.... :(
Жестоко, но в принципе верно. 2 дня - многовато. К возможным неприятностям надо готовиться заранее (собственно поэтому я и читаю этот форум).
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

21. "Завелся спаммер, как вычислить?" 
Сообщение от Chris emailИскать по авторуВ закладки(??) on 29-Июн-05, 14:07  (MSK)
Эх... access.log... более.. какой конкретно скрипт... только тот, в котором используются либо сокеты, либо mail... вот... Чтобы это закрыть, можно в php.ini запретить сокеты, perl'а это не касается... только на файрволе запретить коннекты с сервера на все сервера 25 порта кроме твоего.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

22. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 29-Июн-05, 14:57  (MSK)
>Эх... access.log... более..

  Ну просмотрел, ну получил я потенциально подходящих по времени файлов. а дальше - ручками искать. Только не факт, что он уже к тому времени будет на диске лежать :(

>какой конкретно скрипт... только тот, в котором используются либо сокеты, либо mail... вот...

   А как его найти? если в теле скрипта нет ни обращения ни к сокетам ни к релею? Ты видел спамерский скрипт? Там у него и форки, там у него и задержка отправки, и загрузка кода рассыльщика, и автоудаление - все там есть.

>Чтобы это закрыть, можно в php.ini запретить

через disable_functions ? можно. и половина юзеров взвоет что у них сайты не работают.

>сокеты, perl'а это не касается...
>только на файрволе запретить коннекты с
>сервера на все сервера 25 порта кроме твоего.

и толку в таком запрете? если у пользователя есть возможность бесприпятственно рассылать спам через твой ОТКРЫТЫЙ_ДЛЯ_НЕГО релей?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

24. "Завелся спаммер, как вычислить?" 
Сообщение от Dig Искать по авторуВ закладки on 29-Июн-05, 21:14  (MSK)
хорошо что у меня не болит голова от таких юзеров. Изначально включена smtp авторизация - сплю спокойно
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

25. "Завелся спаммер, как вычислить?" 
Сообщение от Solotony emailИскать по авторуВ закладки on 29-Июн-05, 21:16  (MSK)
Это ты о чем?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру