UTM 5+dlink 3526+ACL
-
- Сообщения: 8
- Зарегистрирован: Ср фев 20, 2008 11:55
UTM 5+dlink 3526+ACL
день добрый господа!
Появилась задача - привинтить к UTM скрипт, который будет рулить ACL'ями на свичах access layer'a - Dlink 3526/3550. Поиск по форуму дал пару ссылок вроде viewtopic.php?t=2810&postdays=0&postorder=asc&start=45 и viewtopic.php?t=4452&highlight= , и информацию о наработках, которые умеют дергать acl на порту абонента в зависимости от его баланса. Господа, если не затруднит - поделитесь пожалуйста наработками в данной области - взамен могу поделиться своими (например, самописный dynashape).
почта: _mike (сабака) mail.ru
Появилась задача - привинтить к UTM скрипт, который будет рулить ACL'ями на свичах access layer'a - Dlink 3526/3550. Поиск по форуму дал пару ссылок вроде viewtopic.php?t=2810&postdays=0&postorder=asc&start=45 и viewtopic.php?t=4452&highlight= , и информацию о наработках, которые умеют дергать acl на порту абонента в зависимости от его баланса. Господа, если не затруднит - поделитесь пожалуйста наработками в данной области - взамен могу поделиться своими (например, самописный dynashape).
почта: _mike (сабака) mail.ru
У меня работает так-
1 на отдельной машине поднимаешь web интерфейс например с адресом 1.1.1.1 при этом биллинг стоит на машине 1.1.0.1
2 сушествует своя сеть управления например 1.2.0.1 по которой ходит обмен между серверами и к ней подключены 3526 по VLAN
На web сервере создаем пвпку /netup внее перемещаем web.config в котором прописан адрес машины биллинга в сети управления соответственно этот обмен закрыт от пользователей. На билинге ставим скипт который рассылает на все 3526 мас/port/binding для пользователей подключенных к сети не зависимо есть ли у него долг. Это позволяет не пустить в сеть "чужих" при этом настраиваем чтобы биндинг не использовал ACL. второй скрипт рассылает правила АСL . Первое правило указывает что всем разрешен доступ на 1.1.1.1 обеспечивая доступ к статистике не зависимо от блокировок. Последующие правила указывают deny для пользователей имеющих долги. Поскольку их меньше чем всего пользователей то количество аццес листов не превышает максимального допустимого для 3526. По крону данный скрипт запускается каждый час таким образом задолжник через час будет выкинут из сети. Последнее правило разрешает прохождение пакетов для всех. Так у меня достигается возможность должника иметь доступ к статистике и блокирует его доступ ко всем ресурсам сети. Может у кого-то построено по другому было бы интересно услышать. Р.С в сети управления все летает по telnet.
1 на отдельной машине поднимаешь web интерфейс например с адресом 1.1.1.1 при этом биллинг стоит на машине 1.1.0.1
2 сушествует своя сеть управления например 1.2.0.1 по которой ходит обмен между серверами и к ней подключены 3526 по VLAN
На web сервере создаем пвпку /netup внее перемещаем web.config в котором прописан адрес машины биллинга в сети управления соответственно этот обмен закрыт от пользователей. На билинге ставим скипт который рассылает на все 3526 мас/port/binding для пользователей подключенных к сети не зависимо есть ли у него долг. Это позволяет не пустить в сеть "чужих" при этом настраиваем чтобы биндинг не использовал ACL. второй скрипт рассылает правила АСL . Первое правило указывает что всем разрешен доступ на 1.1.1.1 обеспечивая доступ к статистике не зависимо от блокировок. Последующие правила указывают deny для пользователей имеющих долги. Поскольку их меньше чем всего пользователей то количество аццес листов не превышает максимального допустимого для 3526. По крону данный скрипт запускается каждый час таким образом задолжник через час будет выкинут из сети. Последнее правило разрешает прохождение пакетов для всех. Так у меня достигается возможность должника иметь доступ к статистике и блокирует его доступ ко всем ресурсам сети. Может у кого-то построено по другому было бы интересно услышать. Р.С в сети управления все летает по telnet.
1. Web сервер - имеется ввиду доступ пользователей к статистике? Зачем выносить отдельно?bob писал(а):На билинге ставим скипт который рассылает на все 3526 мас/port/binding для пользователей подключенных к сети не зависимо есть ли у него долг. Это позволяет не пустить в сеть "чужих" при этом настраиваем чтобы биндинг не использовал ACL.
2. Можете поделиться наработками?
-
- Сообщения: 8
- Зарегистрирован: Ср фев 20, 2008 11:55
кому интересно - промежуточное решение
1) воздаем руками на всех свичах:
Сам скрипт (пущаем по крону раз в н минут):
Идея простая до безобразия - в разблокированном состоянии - разрешаем все, в заблокированном - только траффик на биллинг для мониторинга баланса. В данном примере один нехороший момент - в заблокированном состоянии пользователь может прописать себе любой ip.
Да, разрешен только 1 mac на интерфейсе. (1 порт=1 пользователь=1 мак)[/quote]
1) воздаем руками на всех свичах:
Код: Выделить всё
create access_profile ip source_ip_mask 255.255.255.255 profile_id 10
create access_profile ip destination_ip_mask 255.255.255.255 profile_id 20
create access_profile ip source_ip_mask 0.0.0.0 profile_id 30
Код: Выделить всё
#!/usr/bin/perl -w
use Net::Telnet;
#use strict;
use DBI;
#Podkluchaemsia k base dannix
my $dsn = 'DBI:mysql:UTM5:127.0.0.1';
my $db_user_name = 'root';
my $db_password = 'hui';
my $bill = '172.16.0.1'; # allowed only tish host when user is blocked
my ($id, $password);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#
# --nmancer:
#
# select all abonents
#
my $sth = $dbh->prepare(qq{
SELECT
INET_NTOA(ip & 4294967295) as i,
inet_ntoa(4294967295 & r.router_bin_ip) AS rip,
u.port_number,
r.login,
r.password ,
# acc.is_blocked
acc.int_status
FROM
ip_groups,
users as u,
routers_info as r,
account_tariff_link as atlink,
iptraffic_service_links,
service_links,
accounts as acc
WHERE
ip_groups.is_deleted=0
and u.is_deleted=0
and atlink.is_deleted=0
and r.id = u.remote_switch_id
and atlink.account_id = acc.id
and u.basic_account = acc.id
and iptraffic_service_links.ip_group_id=ip_groups.ip_group_id
and service_links.id=iptraffic_service_links.id
and acc.id=service_links.account_id
ORDER BY
router_bin_ip
});
$sth->execute();
while (my ($ip, $router_bin_ip, $port_number, $login, $password, $int_status) = $sth->fetchrow_array())
{
my $exec =
$t = new Net::Telnet (Timeout => 5,
Prompt => '/#/',
Host => $router_bin_ip );
$t->login($login, $password);
if ($int_status==1) {
print "Set network status ON for IP: $ip | Router: $router_bin_ip port: $port_number\n";
@lines = $t->cmd("config access_profile profile_id 10 add access_id $port_number ip source_ip $ip port $port_number permit");
}
else
{
print "Set network status OFF for IP: $ip | Router: $router_bin_ip port: $port_number\n";
@lines = $t->cmd("config access_profile profile_id 10 delete access_id $port_number");
}
@lines = $t->cmd("config access_profile profile_id 20 add access_id $port_number ip destination_ip $bill port $port_number permit");
@lines = $t->cmd("config access_profile profile_id 30 add access_id $port_number ip source_ip 0.0.0.0 port $port_number deny");
}
# print "Saving configuration, please wait...\n";
# @lines = $t->cmd("save");
@lines = $t->cmd("logout");
print "Configuration sucssessfull added and logout.\n";
$sth->finish();
#Otkluchaemsia ot basi dannih
$dbh->disconnect();
Да, разрешен только 1 mac на интерфейсе. (1 порт=1 пользователь=1 мак)
Код: Выделить всё
config port_security ports 1-24 admin_state enable max_learning_addr 1 lock_address_mode DeleteOnReset
web вынесен отдельно чтобы заблокированные не могли даже пропинговать биллинг. У меня второй скрипт пости такой же он был на форуме. А первый подработан на его основе для рассылки ip/mac/binding.Pei0t писал(а):1. Web сервер - имеется ввиду доступ пользователей к статистике? Зачем выносить отдельно?bob писал(а):На билинге ставим скипт который рассылает на все 3526 мас/port/binding для пользователей подключенных к сети не зависимо есть ли у него долг. Это позволяет не пустить в сеть "чужих" при этом настраиваем чтобы биндинг не использовал ACL.
2. Можете поделиться наработками?
Хотелось бы тоже самое, ограничить доступ на порту по ip+mac (я так полагаю у вас с базы скриптом по крону добавляется ip:mac binding?) и включать ACL при отрицательном балансе. Не могли бы скинуть? mikhajjlovskijj//gmail//combob писал(а): web вынесен отдельно чтобы заблокированные не могли даже пропинговать биллинг. У меня второй скрипт пости такой же он был на форуме. А первый подработан на его основе для рассылки ip/mac/binding.
На месте разработчиков биллинга, глядя на такую популярность работы не только CIsco но и простого оборудования D-LINK со своим биллингом (данная тема уже не один раз поднималась на этом форуме), уже сделали бы хоть какую нить надстройку на биллингом для максимально удобной работы с данным оборудованием.
например: правила фаирвала и на заклатке "доплнительно" параметры "удаленный коммутатор" и "порт"..hammer писал(а):На месте разработчиков биллинга, глядя на такую популярность работы не только CIsco но и простого оборудования D-LINK со своим биллингом (данная тема уже не один раз поднималась на этом форуме), уже сделали бы хоть какую нить надстройку на биллингом для максимально удобной работы с данным оборудованием.
что касается функционала такого рода, ИМХО его придостаточно
просто надо прикладывать голову или деньги
Здраствуйте, также интересен этот вопрос. Ниже я так понимаю скрипт логинится на коммутатор:

Но откуда он берет логин/пароль к коммутатору? Где они должны храниться не совсем понятно, также как и ip адрес и порт? Это все указывается в UTM Admin в информации о пользователе? С перлом никогда не работал$t = new Net::Telnet (Timeout => 5,
Prompt => '/#/',
Host => $router_bin_ip );
$t->login($login, $password);
