Перейти к содержимому
Калькуляторы

Обнаружение клиентских атак на шлюзе провайдера

не знаю, как находит :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Существует ли где-нибудь в природе база плохих DNS-имён и доменов,

запрос которых клиентом у DNS-сервера позволяет предположить, что клиент заражён?

 

Скажем, недавно была эпидемия вируса, который пытался ресолвить bitcity.org и bitcity.info:

http://forum.nag.ru/forum/index.php?showto...st&p=486531

Соответственно, парсер логов DNS-сервера показывал, к кому из клиентов пора отправлять доктора.

 

При определённом терпении такую базу можно было бы составить и пополнять самостоятельно,

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может кто то хочет посмотреть на sagan ?

http://sagan.softwink.com/

Логи ведь все равно куда то льются, особенно с железок.

 

 

Для гентушников - забирать в оверлее rion

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 Ilya Evseev

 

Добавить возможность удаления IP из таблицы по истечению определенного промежутка времени.

Добавить возможность выполнять внешнюю команду с передачей ей аргументов (IP, time_ban, time_unban,......)

Добавить возможность отключения вывода логов на экран и отключения посылки письма.

Изменено пользователем Kostyan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добавить возможность удаления IP из таблицы по истечению определенного промежутка времени.
Где гарантия, что за этот срок клиент вылечился?

Решение должен принимать сервисный инженер.

 

Добавить возможность выполнять внешнюю команду с передачей ей аргументов (IP, time_ban, time_unban,......)

Добавить возможность отключения вывода логов на экран и отключения посылки письма.

В коде есть кусок:

tprint sprintf("  %-20s%8d:%d  \t@stats", $ip,
        $s->{total_count}, $tstamp - $tstart);
next unless $blockmsg;
tprint $blockmsg;

# Report by email
next if not $email_recipient or $email_recipient eq '-';
unless (open M, "| mail -s 'SpamBlock $ip' $email_recipient") {
        warn "Cannot run mail: $!\n";
        next;
}
print M $blockmsg, "\n";
close M;

Можете заменить его на что душе угодно.

Если собственных талантов не хватает, тогда начните с того, что выучите слово "Пожалуйста" ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Илья приветствую, Вы не пробовали идентифицировать спамеров на основании множества DNS запросов на ресолв MX записей ?

 

tcpdump -i eth0 -nn 'dst port 53 and udp[10] & 0x80=0'|grep "MX?"

Изменено пользователем _INF_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У всех этих систем есть минус -ложные срабатывания будут так или иначе.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Илья приветствую, Вы не пробовали идентифицировать спамеров на основании множества DNS запросов на ресолв MX записей ?
Пока не пробовал и не думаю, что в этом есть смысл.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У всех этих систем есть минус -ложные срабатывания будут так или иначе.
За три с половиной года эксплуатации SpamBlock'a в белый список пришлось добавить всего 4 клиентов, у которых крутятся сайты с рассылками.

Клиентов, которые утверждали, что их заблокировали по ошибке, было примерно столько же :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Илья приветствую, Вы не пробовали идентифицировать спамеров на основании множества DNS запросов на ресолв MX записей ?
Пока не пробовал и не думаю, что в этом есть смысл.

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

Илья то, что запросы от клиентов пачками будут валить Вам DNS сервер-а Вас не пугает ? Как Вы боретесь с подобными клиентами ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Илья то, что запросы от клиентов пачками будут валить Вам DNS сервер-а Вас не пугает ?
Ситуация слишком редкая, и это уже не спамеры :)

Входной поток на DNS-сервер достигал 100mbps.

У нормальных клиентов почти все DNS-запросы умирали по тайм-ауту.

С ssh-входом на сервер и управлением при этом проблем не возникало.

 

Как Вы боретесь с подобными клиентами ?
http://www.adotout.com/dnsflood.html

Замена dnsmasq на Unbound.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хочу попробовать ваше решение по фильтрафии спама, проходящий через PC-роутер (VPN сервер на Linux).

 

Только вот непонятно каким образом мониторить работу скрипта:

 

по команде: ipset -L spam выдает:

root@slack02:/work/ipset/ipset-4.5# ipset -L spam

Name: spam

Type: iphash

References: 1

Header: hashsize: 1024 probes: 2 resize: 100

Members:

 

Логи показывают это:

[ 2011.02.25 16:17:56 ] Firewall type: ipset

[ 2011.02.25 16:17:56 ] Started now.

[ 2011.02.25 16:17:56 ] Import state...

[ 2011.02.25 16:17:56 ] Import done. Total 1, readed 1, added 1, deleted 0 blocks.

[ 2011.02.25 16:17:56 ] 195.18.23.2 1:0

[ 2011.02.25 16:17:57 ] 195.18.23.2 2:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 3:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 4:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 5:1 5:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 6:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 7:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 8:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 9:1

[ 2011.02.25 16:17:57 ] 195.18.23.2 10:1 5:0

[ 2011.02.25 16:17:57 ] Block 195.18.23.2: trap #1 by rule 5:1 ticks:seconds, actually 0 seconds

 

 

Как вообще правильно настроить перехват спам сообщений с виртуальных интерфейсов, типа pppX

 

В iptables стоит такое:

 

ipset -N spam iphash --probes 2 --resize 100

iptables -A FORWARD -p tcp --dport 25 -m set --match-set spam src -j DROP

 

Еще вопрос: если на NAS стоит NAT, то в случае если спамщик сидит за NAT, то в список блокировки попадает внешний IP, что не есть гуд?

Изменено пользователем RHAMZIN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

За три с половиной года эксплуатации SpamBlock'a в белый список пришлось добавить всего 4 клиентов, у которых крутятся сайты с рассылками.

Клиентов, которые утверждали, что их заблокировали по ошибке, было примерно столько же :)

Отличная вещь, но сейчас появилась пакость, спамящая по tcp/587 через sendmail. В tcpdump можно бы добавить и этот порт...

Изменено пользователем YuryD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только вот непонятно каким образом мониторить работу скрипта:
Он пишет строки трёх типов:

- перехвачен пакет, выводится общее время работы и количество пакетов.

- перехвачен пакет, попадающий в одно из правил по количеству пакетов в серии, но не интервалу,

- пакет попал в серию с меньшим интервалом, IP-адрес заблокирован.

Выводится номер срабатывания, имя правила и фактический интервал.

 

Как вообще правильно настроить перехват спам сообщений с виртуальных интерфейсов, типа pppX
Сделать отдельный псевдоинтерфейс и дублировать на него пакеты:

iptables -t mangle -A PREROUTING -p tcp --dport 25 -m state --state NEW -j ROUTE --tee --oif $pseudo_iface

 

Еще вопрос: если на NAS стоит NAT, то в случае если спамщик сидит за NAT, то в список блокировки попадает внешний IP
Разумеется.

 

сейчас появилась пакость, спамящая по tcp/587 через sendmail.

В tcpdump можно бы добавить и этот порт

Найдите в spamblock строку вызова tcpdump и замените в ней "port 25" на '(' port 25 or port 587 ')'

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не силен в perl , но может кто использует Spamblock с mysql. Например при попадании IP в block list , скрипт выполнял еще и UPDATE, чтобы support мог видеть , что у клиента ограничен 25 порт и скорее всего у него вирусня. Илья, если не сложно, покажи пример как сделать UPDATE в этой констукции

 

for (my $i = 0; $i < @checks; $i+=2) {
	my $maxcount = $checks[$i];
	my $period = $checks[$i+1];
	$s->{$maxcount} ||= $tstamp0;
	next if $s->{total_count} % $maxcount;
	my $delta = $tstamp0 - $s->{$maxcount};
	push @stats, "$maxcount:$delta";
	if ($delta >= $period) {
		$s->{$maxcount} = $tstamp0;
		next;
	}
	$total_blocks++;
	($s->{blocks_count} ||= 0)++;
	$blocks{$ip} = $tstamp0;
	$blockmsg = "Block $ip: trap #$s->{blocks_count}"
		." by rule $maxcount:$period ticks:seconds,"
		." actually $delta seconds";
	$fw->block($ip);
	last;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подниму эту довольно старую тему как единственную которую тут нашел по обсуждению правил блокировка СПАМа у провайдера на шлюзе.

Сейчас есть такая задача, вот и хотел поинтересоваться каким самым простым и чудным способом можно сделать limitrate на исходящие подключения внешние подключения на 25ый порт.

Айпи адреса клиентов - самые разные соответственно.

 

Может уже специальные правила есть?  Для Linux, iptables.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну например

iptables -I FORWARD -p tcp -m tcp --dport 25 -m conntrack --ctstate NEW -m hashlimit --hashlimit-above 12/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name spam_smtp -j REJECT --reject-with icmp-port-unreachable

Учтите, что нужен включённый контрак, со всеми вытекающими.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

20 часов назад, pppoetest сказал:

Учтите, что нужен включённый контрак, со всеми вытекающими.

ну мы же знаем что это легко обходится за счёт raw notrack того трафика, который не нужно считать per-ip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.