faq обучение настройка
Текущее время: Пт апр 19, 2024 12:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 15, 2007 13:25 
Не в сети

Зарегистрирован: Вт дек 26, 2006 11:39
Сообщений: 88
Откуда: Красноярск
возможно мы рассуждаем о разных типах arp спуфинга

но те acl которые я применяю мне очень помогли, не говорю что полностью уничтожили флуд потому что у меня 3526 только на точках агрегирования стоят, но если раньше при флуде звонили в тех поддрежку 100 - 150 человек то щас 10 - 25 в зависимости от величины сегмента


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 18, 2007 11:49 
Не в сети

Зарегистрирован: Вт май 29, 2007 19:35
Сообщений: 54
скрипт класный. но с этими хешами и офсетами трудно разобраться. Почему не используются обычный акл с айпи? packet_content_mask надежнее?

Может есть где хорошее описание с примерами по ACL?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 18, 2007 13:31 
Не в сети

Зарегистрирован: Пн сен 27, 2004 18:18
Сообщений: 1642
Откуда: Vault 13
mavka писал(а):
с этими хешами и офсетами трудно разобраться
уважаемая, если Вам что-то непонятно - пишите, раскажу ;)
mavka писал(а):
packet_content_mask надежнее?
они значительно гибче ...
mavka писал(а):
Может есть где хорошее описание с примерами по ACL?
в FAQ есть, правда писалось на коленке и ХЗ когда ...


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт июн 19, 2008 20:33 
Не в сети

Зарегистрирован: Пт янв 21, 2005 19:15
Сообщений: 184
Откуда: St-Petersburg
код:
KabaH писал(а):
Код:
die "invalid IP address\n" if (! ($ipaddr =~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/));
($ip1, $ip2, $ip3, $ip4) = split (/\./, $ipaddr);
die "invalid IP address\n" if ($ip1 > 255 || $ip2 > 255 || $ip3 > 255 || $ip4 > 255);


лушче замени на
Код:
die "invalid IP address\n" if (! ($ipaddr =~ /^(2([0-4]\d|5[0-5])|1?\d{1,2})(\.(2([0-4]\d|5[0-5])|1?\d{1,2})){3}$/));



код:
KabaH писал(а):
Код:
die "invalid MAC address\n" if (! ($macaddr =~ /^[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}$/));


замени на
Код:
die "invalid MAC address\n" if (! ($macaddr =~ /^[0-9A-Fa-f]{2}(:([0-9A-Fa-f]){2}){5}$/));

или на
Код:
die "invalid MAC address\n" if (! ($macaddr =~ /^[0-9A-F]{2}(:([0-9A-F]){2}){5}$/im));



Читабельней будет, кода меньше, и не надо лишних проверок.

_________________
WBR. Sp!ZER


Последний раз редактировалось Sp!ZER Пт ноя 07, 2008 16:03, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 10, 2008 13:44 
Не в сети

Зарегистрирован: Сб апр 12, 2008 01:21
Сообщений: 260
Откуда: Airbites->UARNet/Львов
Ситуация по борьбе с арп-спуфингом у нас сложилась следующая:
применил я два аксеса из первого в сабже скрипта (с небольшой модификацией конкретно под нашу сеть), добавил аксес, отрезающий пакеты с source_mac из нулей, потом немного подумал и довесил им в помощь ещё такую штуку:

Цитата:
create access_profile packet_content_mask offset_16-31 0xffffffff 0xffffffff 0xffff0000 0x0 offset_32-47 0x000000ff 0x0 0x0 0x0 profile_id 8

config access_profile profile_id 8 add access_id 1 packet_content_mask offset_16-31 0x08060001 0x08000604 0x00020000 0x0 offset_32-47 0x00000005 0x0 0x0 0x0 port 1-24 deny


недели на три сеть штормить перестало полностью.. а сейчас всплыла такая штука: у клиентов инет есть, арпятся все правильно и красиво. По истечении 20-25 минут из арп-таблицы маршрутизатора клиент пропадает (хотя по show fdb клиент всё ещё добегает до маршрутизатора под своим маком). Жмём клиенту "исправить" (под вин.ХР), инет появляется ещё минут на 15... и так до тех пор пока кто-то, кто их долбит, не отключится..
При этом такая проблема только у тех клиентов, которые юзают win XP с любым сервис-паком и у некоторых Vista-юзеров (у которых сервиспаков нет). Юниксы и Макинтоши не затронуты..

Сейчас пытаемся выловить источник заразы, чтоб в компе его поковыряться...
Никто не сталкивался с таким?

А то одним из вариантов решения для нас становится уже привязка именно клиентских машинок с помощью статик-арпов, но реализовать это у ~8000 клиентов будет довольно проблематично.. ;)


PS: При этом официальный сапорт Д-Линка из Киева с криками "arp_spoofing_prevention работает" прислал нам 41ый билд прошивки. Но он там не работает..


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 07, 2008 15:48 
Не в сети

Зарегистрирован: Пн сен 18, 2006 11:17
Сообщений: 270
Откуда: SPb
Я малёхо подрихтовал скриптец, который был в начале - "косметику" навёл, разрешил вызов с передачей параметров и использование диапазона портов.
Sp!ZER, замена на твой код хоть и сокращает код, но явно не улучшает читаемость.

Код:
#!/usr/bin/perl
#
# ACL Generator for preventing ARP Spoofing at DLink switches
# Licensed under GNU GPL?
# Written by KabaH, http://forum.dlink.ru/viewtopic.php?p=254088#254088
# v.1.0.3
# Last edit by Dyr, 2008-11-07
#

if ($#ARGV != 3 ) {
     die "ACL Generator for preventing ARP Spoofing at DLink switches\n"
         ."USAGE: $0 ip-address mac_address profile_id port\n"
         ."FORMAT: x.x.x.x (ip-address) xx:xx:xx:xx:xx|xx-xx-xx-xx-xx (mac_address) 1..255 (profile_id) 1..26 (port)\n"
         ."EXAMPLE: $0 192.168.0.1 01-02-03-04-05 100 1\n";
}else {
    $ipaddr=$ARGV[0];
    $macaddr=$ARGV[1];
    $profile_id=$ARGV[2];
    $port=$ARGV[3];
}
chomp($port);
$access_id = $port;

$macaddr =~ s/\-/:/g; #Convert MAC from xx-xx-xx-xx-xx format to xx:xx:xx:xx:xx

die "invalid IP address\n"      if ( $ipaddr !~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/ );
die "invalid IP address\n"      if ( $ip1 > 255 || $ip2 > 255 || $ip3 > 255 || $ip4 > 255 );
die "invalid MAC address\n"     if ( $macaddr !~ /^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$/i );
die "Invalid profile id\n"      if ( $profile_id < 1 || $profile_id > 255 );
die "Invalid port\n"            if ( $port < 1 || $port > 26 );

my $hex_ip=sprintf ("%.2X"x4,split(/\./,$ipaddr));
($m1,$m2,$m3,$m4,$m5,$m6) = split (/:/, $macaddr);


print "\n#Packet mask for permit only specific ARP packets\n";
print "create access_profile packet_content_mask "
     ."offset_16-31 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF "
     ."offset_32-47 0xFFFFFFFF 0x0 0x0 0x0 "
     ."profile_id $profile_id\n";

$profile_id++;

print "#Packet mask for deny all another ARP packets\n";
print "create access_profile packet_content_mask "
     ."offset_16-31 0xFFFF0000 0x0 0xFFFF0000 0x0 "
     ."profile_id $profile_id\n\n";

$profile_id--;
print "#ACL for allow ARP packets only for sender IP $ipaddr with sender MAC $macaddr at port $port\n";
print "config access_profile profile_id $profile_id add access_id $access_id packet_content_mask "
     ."offset_16-31 0x08060001 0x08000604 0x0002$m1$m2 0x$m3$m4$m5$m6 "
     ."offset_32-47 0x$hex_ip 0x0 0x0 0x0 "
     ."port $port permit\n";

$profile_id++;

print "#Deny all another ARP packets\n";
print "config access_profile profile_id $profile_id add access_id $access_id packet_content_mask "
     ."offset_16-31 0x08060000 0x0 0x00020000 0x0 "
     ."port $port deny\n\n";



Сразу предупрежу, у себя я его не проверял по причине отсутствия 3526 под рукой.


Последний раз редактировалось Dyr Пт ноя 07, 2008 16:41, всего редактировалось 4 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 07, 2008 16:09 
Не в сети

Зарегистрирован: Пт янв 21, 2005 19:15
Сообщений: 184
Откуда: St-Petersburg
Dyr писал(а):
.
Sp!ZER, замена на твой код хоть и сокращает код, но явно не улучшает читаемость.


Как так? На оборот повторящие комбинации вынесены, квантификаторы представлены в читабельном виде, в место списка символов.

Просто в таком исполнении кода смысл регулярного выражения пропадаеет, можно его было вовсе не использовать а сразу масиив разделить на четыре составляющие и проверить условие <=255, для каждого из элементов массива.

_________________
WBR. Sp!ZER


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 07, 2008 16:27 
Не в сети

Зарегистрирован: Пн сен 18, 2006 11:17
Сообщений: 270
Откуда: SPb
Sp!ZER писал(а):
Как так? На оборот повторящие комбинации вынесены, квантификаторы представлены в читабельном виде, в место списка символов.

Просто в таком исполнении кода смысл регулярного выражения пропадаеет, можно его было вовсе не использовать а сразу масиив разделить на четыре составляющие и проверить условие <=255, для каждого из элементов массива.

Я понимаю, но нагромождение проверок с одновременным копированием паттерна никогда не относились к облегчающим понимание приёмам. :) Предыдущие регэкспы хоть и примитивней, но явно легче читаются, согласись.
Давай лучше по остальному претензии, если есть - я уже третий или четвёртый раз редактирую свой код, поскольку нахожу баги. :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн фев 29, 2016 15:53 
Не в сети

Зарегистрирован: Пт авг 22, 2008 11:33
Сообщений: 47
Подскажите пожалуйста, почему правила генерированные скриптом из первого поста могут не работать на des-3828.
Возможно потому что у меня порты нетегированные там надо маску смещать на 4 байта, подскажите как это сделать.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 67


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB