URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91746
[ Назад ]

Исходное сообщение
"Логгирование пакетов на 25-м порту"

Отправлено dvital , 10-Июн-11 17:16 
У меня на сервере крутится pptp и openvpn. Юзеры подключаются и некоторые из них (о ужас!) злоупотребляют отсылкой почты. :(

Мне захотелось отследить сей факт и как-то автоматизировать процесс.

Я добавил такую строчку в файл файрвола:
-A FORWARD -p tcp -m tcp --dport 25 -j LOG --log-prefix "MAIL:"
-A FORWARD -i tap1 -p udp -m udp -j LOG --log-prefix "MAIL:" --log-level 7

В логах стала появляться информация, но у pptp есть в строчках соответствие ip - порт, а для openvpn этого соответствия нет и порт не указан. :(

Вот пример лога для опенвпн:

Jun 10 17:09:46 kernel: [1117557.992079] MAILIN=tap1 OUT=eth0 SRC=192.168.10.4 DST=x.x.x.x LEN=67 TOS=0x00 PREC=0x00 TTL=127 ID=43253 PROTO=UDP SPT=1710 DPT=53 LEN=47


Содержание

Сообщения в этом обсуждении
"Логгирование пакетов на 25-м порту"
Отправлено PavelR , 10-Июн-11 17:25 

Подождите, пока "отпустит", а потом напишите всё заново, если вопрос останется.


"Логгирование пакетов на 25-м порту"
Отправлено dvital , 10-Июн-11 18:20 
> Подождите, пока "отпустит", а потом напишите всё заново, если вопрос останется.

Что отпустит?


"Логгирование пакетов на 25-м порту"
Отправлено dvital , 10-Июн-11 18:29 
Я что-то криво написал? :)

> Подождите, пока "отпустит", а потом напишите всё заново, если вопрос останется.


"Логгирование пакетов на 25-м порту"
Отправлено reader , 10-Июн-11 20:42 
> У меня на сервере крутится pptp и openvpn. Юзеры подключаются и некоторые
> из них (о ужас!) злоупотребляют отсылкой почты. :(
> Мне захотелось отследить сей факт и как-то автоматизировать процесс.
> Я добавил такую строчку в файл файрвола:
> -A FORWARD -p tcp -m tcp --dport 25 -j LOG --log-prefix "MAIL:"

интересно что потом из этих заголовков пакета вы хотите выудить?

> -A FORWARD -i tap1 -p udp -m udp -j LOG --log-prefix "MAIL:"
> --log-level 7

а это к чему? заголовки пакета от dns запроса , как привели ниже, будите рассматривать?

> В логах стала появляться информация, но у pptp есть в строчках соответствие
> ip - порт, а для openvpn этого соответствия нет и порт
> не указан. :(
> Вот пример лога для опенвпн:
> Jun 10 17:09:46 kernel: [1117557.992079] MAILIN=tap1 OUT=eth0 SRC=192.168.10.4 DST=x.x.x.x
> LEN=67 TOS=0x00 PREC=0x00 TTL=127 ID=43253 PROTO=UDP SPT=1710 DPT=53 LEN=47


"Логгирование пакетов на 25-м порту"
Отправлено dvital , 10-Июн-11 21:59 
>[оверквотинг удален]
>> -A FORWARD -i tap1 -p udp -m udp -j LOG --log-prefix "MAIL:"
>> --log-level 7
> а это к чему? заголовки пакета от dns запроса , как привели
> ниже, будите рассматривать?
>> В логах стала появляться информация, но у pptp есть в строчках соответствие
>> ip - порт, а для openvpn этого соответствия нет и порт
>> не указан. :(
>> Вот пример лога для опенвпн:
>> Jun 10 17:09:46 kernel: [1117557.992079] MAILIN=tap1 OUT=eth0 SRC=192.168.10.4 DST=x.x.x.x
>> LEN=67 TOS=0x00 PREC=0x00 TTL=127 ID=43253 PROTO=UDP SPT=1710 DPT=53 LEN=47

Меня отпустило :) Все понял!


"Логгирование пакетов на 25-м порту"
Отправлено Дядя_Федор , 10-Июн-11 22:18 
На кой черт Вам логгировать ВСЕ пакеты по 25 порту? Задача какая? Блокировать (и логгировать) спам? Теперь включаем мозг. Что происходит при массовой рассылке спама? Куча обращения к ДНС-серверу с запросом MX-записей! Вот отсюда и танцуем!
Вот пример цепочки, которую надо выстроить:
1. iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m recent --set --name MXFLOOD --rsource
2. iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m recent --update --seconds 60 --hitcount 10 --rttl --name MXFLOOD --rsource -j LOG --log-prefix "Many MX requests from IP:"
3. iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m recent --update --seconds 20 --hitcount 10 --rttl --name MXFLOOD --rsource -j DROP
Это я привел ПРИМЕР. Адаптируйте его под свою сетевую логику. Пример реально работающий - это у меня на DNS-сервере крутится - позволяет каждый день, глядя на отчет logwatch, сдавать ТП злостных спамеров. К цифрам тоже отнеситесь творчески.

"Логгирование пакетов на 25-м порту"
Отправлено dvital , 10-Июн-11 22:45 
А к каким цифрам нужно отнестись творчески?

>[оверквотинг удален]
> recent --update --seconds 60 --hitcount 10 --rttl --name MXFLOOD --rsource -j
> LOG --log-prefix "Many MX requests from IP:"
> 3. iptables -A INPUT -p udp -m udp --dport 53 -m state
> --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m
> recent --update --seconds 20 --hitcount 10 --rttl --name MXFLOOD --rsource -j
> DROP
> Это я привел ПРИМЕР. Адаптируйте его под свою сетевую логику. Пример реально
> работающий - это у меня на DNS-сервере крутится - позволяет каждый
> день, глядя на отчет logwatch, сдавать ТП злостных спамеров. К цифрам
> тоже отнеситесь творчески.


"Логгирование пакетов на 25-м порту"
Отправлено Дядя_Федор , 10-Июн-11 23:13 
> А к каким цифрам нужно отнестись творчески?

Ну, по видимому претендентов 2. :)
1. Временной интервал --seconds
2. Количество попаданий в этот интервал --hitcount.
Как видите - у меня дропается, при 10 вызовах за 20 секунд (с одного ИП, естественно). В логи попадает - при 10 попаданиях за минуту. Я в первый раз когда это правило включил - нарвался на 2 дня на идиотов-юриков, которые делали что-то типа массовой ОФИЦИАЛЬНОЙ рассылки по листу рассылки. Вони было - выше крыши. :) Поэтому я чуть "загрубил" срабатывание. Согласитесь, что нормальный пользователь вряд ли будет генерить 10 MX-запросов за 20 секунд. :) 10 - за 60 - возможно, но уже вызывает подозрение.


"Логгирование пакетов на 25-м порту"
Отправлено dvital , 10-Июн-11 23:33 
>[оверквотинг удален]
> 1. Временной интервал --seconds
> 2. Количество попаданий в этот интервал --hitcount.
> Как видите - у меня дропается, при 10 вызовах за 20 секунд
> (с одного ИП, естественно). В логи попадает - при 10 попаданиях
> за минуту. Я в первый раз когда это правило включил -
> нарвался на 2 дня на идиотов-юриков, которые делали что-то типа массовой
> ОФИЦИАЛЬНОЙ рассылки по листу рассылки. Вони было - выше крыши. :)
> Поэтому я чуть "загрубил" срабатывание. Согласитесь, что нормальный пользователь вряд
> ли будет генерить 10 MX-запросов за 20 секунд. :) 10 -
> за 60 - возможно, но уже вызывает подозрение.

Интересно :) Попробую!

Спасибо огромное!


"Логгирование пакетов на 25-м порту"
Отправлено dvital , 05-Июл-11 23:36 
>[оверквотинг удален]
> recent --update --seconds 60 --hitcount 10 --rttl --name MXFLOOD --rsource -j
> LOG --log-prefix "Many MX requests from IP:"
> 3. iptables -A INPUT -p udp -m udp --dport 53 -m state
> --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m
> recent --update --seconds 20 --hitcount 10 --rttl --name MXFLOOD --rsource -j
> DROP
> Это я привел ПРИМЕР. Адаптируйте его под свою сетевую логику. Пример реально
> работающий - это у меня на DNS-сервере крутится - позволяет каждый
> день, глядя на отчет logwatch, сдавать ТП злостных спамеров. К цифрам
> тоже отнеситесь творчески.

1. iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m recent --set --name MXFLOOD --rsource
2. iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m recent --update --seconds 60 --hitcount 10 --rttl --name MXFLOOD --rsource -j LOG --log-prefix "Many MX requests from IP:"
3. iptables -A INPUT -p udp -m udp --dport 53 -m state --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m recent --update --seconds 20 --hitcount 10 --rttl --name MXFLOOD --rsource -j DROP

Эта вещь уже крутится на сервере и работает на отлично. Я вот подумал, что можно ее несколько переделать, чтобы юзеру запретить досить чей-либо веб-сервер.
Что-то вроде такого:

iptables -A INPUT -p udp -m udp --dport 80 -m state --state NEW -m recent --set --name WWW --rsource
iptables -A INPUT -p udp -m udp --dport 80 -m state --state NEW -m recent --update --seconds 20 --hitcount 10 --rttl --name WWW --rsource -j DROP

Но это совершенно никак не заработало :(


"Логгирование пакетов на 25-м порту"
Отправлено dvital , 23-Ноя-11 23:48 
>[оверквотинг удален]
> recent --update --seconds 60 --hitcount 10 --rttl --name MXFLOOD --rsource -j
> LOG --log-prefix "Many MX requests from IP:"
> 3. iptables -A INPUT -p udp -m udp --dport 53 -m state
> --state NEW -m string --hex-string "|000f0001|" --algo kmp --to 65535 -m
> recent --update --seconds 20 --hitcount 10 --rttl --name MXFLOOD --rsource -j
> DROP
> Это я привел ПРИМЕР. Адаптируйте его под свою сетевую логику. Пример реально
> работающий - это у меня на DNS-сервере крутится - позволяет каждый
> день, глядя на отчет logwatch, сдавать ТП злостных спамеров. К цифрам
> тоже отнеситесь творчески.

Недавно попробовал данный способ и решил протестировать. Поставили в (3) срабатывание на 2 обращения за 60 секунд и стали слать письма. Послали 5 писем - и все письма прошли без проблем. :(

Может есть какая-то ошибка?