faq обучение настройка
Текущее время: Пн июн 30, 2025 20:55

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Пт ноя 07, 2008 20:19 
Не в сети

Зарегистрирован: Пн сен 18, 2006 11:17
Сообщений: 270
Откуда: SPb
Вдохновлённый скриптом из темы ниже, накидал небольшой скриптец для создания ACL, разрешающего/запрещающего пакеты с заданным IP-протоколом и destination-портом.
Критикуйте, коммитьте патчи :wink:

Код:
#!/usr/bin/perl
#
# ACL Generator to prevent (IP protocol, destination port) from users ports at DLink switches
# Work only with switches that always tag packets (and move offset at 4 bytes right)
#
# Licensed under GNU GPL
# Written by Dyr, 2008-11-07
# v.1.0

use strict;
use warnings;
use diagnostics;

if ($#ARGV < 4 || $#ARGV > 5 ) {
     die "ACL Generator to prevent (IP protocol, destination port) from users ports at DLink switches\n"
        ."USAGE: $0 ip_protocol protocol_port profile_id switch_port action {access_id}\n"
        ."FORMAT:  x (ip_protocol, see /etc/protocol for names) \n"
        ."      1..65535 (protocol_port)\n"
        ."      1..255 (profile_id)\n"
        ."      1..26 (switch_port)\n"
        ."      permit|deny (action)\n"
        ."      {1-255} (access_id)\n"
        ."EXAMPLE: Permit (PERMIT) DHCP (UDP) request port (67) with create profile_id (3) at switch port (1)\n"
        ."      $0 UDP 67 3 1 PERMIT\n";
}


my $proto=$ARGV[0];
my $proto_port = $ARGV[1];
my $profile_id = $ARGV[2];
my $switch_port = $ARGV[3];
my $action = $ARGV[4];
my $access_id = $ARGV[5] || $switch_port;

chomp($action);
chomp($access_id);

die "Invalid profile id\n"      if ( $profile_id < 1 || $profile_id > 255 );
die "Invalid switch port\n"     if ( $switch_port < 1 || $switch_port > 26 );
die "Invalid protocol\n"        if ( $proto !~ /^\w+$/ );
die "Invalid protocol port\n"   if ( $proto_port < 1 || $proto_port > 65535);
die "Invalid action\n"          if ( $action !~ /[permit|deny]/i );
die "Invalid access_id\n"       if ( $access_id <  1 || $access_id > 255 );
$proto = getprotobyname($proto);
die "Protocol number unknown\n" if ( !defined($proto));

#Convert protocol number to hex
$proto = sprintf("%.2X",$proto);

#Convert protocol_port to hex
$proto_port = sprintf("%.4X",$proto_port);

print "#Create mask for blocking IP protocols and ports\n";
print "create access_profile packet_content_mask "
     ."offset_16-31 0xffff0000 0x0 0x000000ff 0x0 "
     ."offset_32-47 0x0 0x0 0xffff0000 0x0 "
     ."profile_id $profile_id\n";

print "config access_profile profile_id $profile_id add access_id $access_id packet_content_mask "
     ."offset_16-31 0x08000000 0x0 0x000000".$proto." 0x0 "
     ."offset_32-47 0x0 0x0 0x".$proto_port."0000 0x0 "
     ."port $switch_port $action\n";




Daniil-B, ставь на комп ActivePerl, будут и под твоей несчастной виндой работать правильные скрипты :wink:


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

Зарегистрирован: Ср фев 13, 2008 22:17
Сообщений: 15
Скажите пожалуйста, а у Вас нигде в заначке не завалялось скрипта для создания привязки IP-MAC-PORT (насколько я понимаю иначе это называется "статичные мак-адреса на портах") на коммутаторах типа DES-3828 и DES-3010G?


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

Зарегистрирован: Сб май 19, 2007 21:47
Сообщений: 452
Откуда: Питер - "Домашние сети"
Дирыч,
листинг правил packet_content на разных коммутаторах отличается, зачастую весьма существенно.
Это слишком просто, и так можно посчитать.

Ты лучше прикрути к билингу скрипт, привязывающий по arp запросу MAC-IP клиента на его порт, кликнув в билинге на специальную кнопочку ...



Цитата:
Daniil-B, ставь на комп ActivePerl, будут и под твоей несчастной виндой работать правильные скрипты

Открывай дверь, я иду тебя плющить ... зараза ...


Последний раз редактировалось Daniil-B Вс ноя 09, 2008 12:35, всего редактировалось 1 раз.

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

Зарегистрирован: Сб май 19, 2007 21:47
Сообщений: 452
Откуда: Питер - "Домашние сети"
Webman,
Если МАС на порт то - port_security
Если IP-MAC на порт то - address_binding

Но, и то, и то можно организовать при помощи acl.


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

Зарегистрирован: Пн сен 18, 2006 11:17
Сообщений: 270
Откуда: SPb
Daniil-B писал(а):
Дирыч,
листинг правил packet_content на разных коммутаторах отличается, зачастую весьма существенно.
Это слишком просто, и так можно посчитать.

Мда? Что, настолько разные?
[quote]
Ты лучше прикрути к билингу скрипт, привязывающий по arp запросу MAC-IP клиента на его порт, кликнув в билинге на специальную кнопочку ...
/quote]
"...так выпьем за то, чтобы наши желания совпадали с нашими возможностями". :cry: На новом месте работы такое будет, но у них не UTM, так что а) не подойдёт б) хрен я дам Цифре этим пользоваться. А ты обращайся, если чо


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

Зарегистрирован: Сб май 19, 2007 21:47
Сообщений: 452
Откуда: Питер - "Домашние сети"
Цитата:
Мда? Что, настолько разные?

угу.
И весьма существенно ...
Например:
3324sr, 3627g, 3028, 3526 , все имеют разный листинг.

Так что в твоём скрипте желательно прикрутить выпадающее меню моделей коммутаторов ... :wink:


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

Зарегистрирован: Пн сен 18, 2006 11:17
Сообщений: 270
Откуда: SPb
Daniil-B писал(а):
Цитата:
Мда? Что, настолько разные?

угу.
И весьма существенно ...
Например:
3324sr, 3627g, 3028, 3526 , все имеют разный листинг.

Развёл зоопарк, панимаешь. :)
Цитата:

Так что в твоём скрипте желательно прикрутить выпадающее меню моделей коммутаторов ... :wink:

Нафиг окно, там всё из командной строки. Ставь Perl, говорю тебе ;-)


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

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


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

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


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

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