пятница, 17 мая 2013 г.

Настройка и дополнительная безопасность абонентов в UTM5.

Доброго времени суток, коллеги!
В прошлой статье мы рассматривали ограничение скорости абонентам. В этой статье будет рассмотрена автоматическая привязка абонентов к портам коммутаторов и к ACL маршрутизаторов. Ядро UTM5 работает на ОС Centos 5.7. Данные с маршрутизаторов UTM5 получает по протоколу NetFlow. Информацию по установке и настройке UTM5 можно найти в документации с официального сайта.
Возьмем прошлую схему.

Рассмотрим географически распределенную систему в трех районах Москвы: Ясенево, Бутово, Люберцы. Центр обработки данных находится в Ясенево, там же будет физически располагаться сервер UTM5.
Type
Нostname
IP адрес
router
Yasenevo
1.1.1.1
switch
Switch10021
1.1.1.2
switch
Switch10022
1.1.1.3
router
Lyuber
2.2.2.1
switch
Switch10023
2.2.2.2
switch
Switch10024
2.2.2.3
router
Butovo
3.3.3.1
switch
Switch10025
3.3.3.2

Логика работы:
При включении интернета, IP адрес абонента добавляется в разрешающий ACL на маршрутизаторе. Также добавляется в ACL на порт коммутатора.
При выключении интернета, IP адрес абонента удаляется из разрешающего ACL на маршрутизаторе. Также удаляется из ACL на порту коммутатора, и отключается порт.
Приступим к предварительной настройке.
1.      Для коммутаторов при включении интернета.
conf t
no ip access-list extended UTM4
ip access-list extended UTM4
permit ip host 1.1.1.4 any
exit
interface FastEthernet0/4
ip access-group UTM4 in
no shutdown
exit
exit
wr
exit
2.      Для коммутаторов при выключении интернета.
conf t
interface FastEthernet0/4
ip access-group UTM4 in
shutdown
exit        
no ip access-list extended UTM4
ip access-list extended UTM4
deny ip any any
exit
exit
wr
3.      Для маршрутизаторов при включении интернета.
conf t
ip access-list extended 160
permit ip host 1.1.1.4 any
exit
wr
4.      Для маршрутизаторов при выключении интернета.
conf t
ip access-list extended 160
no permit ip host 1.1.1.4 any
exit
wr
На маршрутизаторе привязываем ACL к интерфейсу:
conf t
interface GigabitEthernet0/0
  ip access-group 160 out
exit
Устанавливаем expect: yum install expect –y
Настройку с примерами можно найти в интернете или в предыдущей статье «Ограничение скорости абонентам в UTM5 при помощи Expect.»
Подключаемся к коммутатору: autoexpect ssh cisco@1.1.1.2
Применяем первый список команд. Создаем новую папку для хранения скриптов: mkdir /scripts/ 
Копируем скрипт в данную папку: cp script.exp /scripts/Switch_on.exp
Редактируем: nano /scripts/Switch_on.exp
В зависимости от версий expecta синтаксис будет немного различаться. Поэтому рассмотрим, что нужно заменить в данном скрипте на нашем шаблонном наборе команд:
$name#conf t
$name(config)# no ip access-list extended UTM$port
$name(config)# ip access-list extended UTM$port
$name(config-ext-nacl)# permit ip host $ip any
$name(config-ext-nacl)# exit
$name(config)# interface FastEthernet0/$port
$name(config-if)#ip access-group UTM$port in
$name(config-if)#no shutdown
$name(config)# exit
$name#exit
$name#wr
$name#exit

Передавать скрипту будем три параметра: IP адрес коммутатора, порт коммутатора, IP адрес абонента.
Добавим в скрипт соответствующие строчки:

set sw [lindex $argv 0]
set port [lindex $argv 1]
set ip [lindex $argv 2]

Т.к. имена коммутаторов различаются, а скрипт один на все коммутаторы, то добавим присвоение соответствующих имен к IP адресу коммутатора:

set switch10021 1.1.1.2
set switch10022 1.1.1.3
set switch10023 2.2.2.2
set switch10024 2.2.2.3
set switch10025 3.3.3.2

if {$sw==$switch10021} {set nom switch10021}
if {$sw==$switch10022} {set nom switch10022}
if {$sw==$switch10023} {set nom switch10023}
if {$sw==$switch10024} {set nom switch10024}
if {$sw==$switch10025} {set nom switch10025}

Сохраняем и тестируем. Абонент с IP адресом 1.1.1.4 подключен к коммутатору 1.1.1.3 в порт 9:  /scripts/Switch_on.exp 1.1.1.2 9 1.1.1.4
Получаем на выходе:

switch10022#conf t
switch10022(config)# no ip access-list extended UTM9
switch10022(config)# ip access-list extended UTM9
switch10022(config-ext-nacl)# permit ip host 1.1.1.4 any
switch10022(config-ext-nacl)# exit
switch10022(config)# interface FastEthernet0/9
switch10022(config-if)#ip access-group UTM9 in
switch10022(config-if)#no shutdown
switch10022(config)# exit
switch10022#exit
switch10022#wr
switch10022#exit

Скрипт для привязки абонента к порту коммутатора при включении интернета готов.
Аналогичные действия проделываем и для отключения интернета:
1.       Подключаемся к коммутатору, применяем команды из пункта 2, копируем скрипт /scripts/Switch_off.exp
2.      Вносим соответствующие изменения в скрипт и проверяем что все работает.
Приступаем к настройке.
Копируем 4 файла:
1.     cp /netup/utm5/rfw5.cfg /netup/utm5/rfw5_Switch_on.cfg
2.     cp /netup/utm5/bin/utm5_rfw /netup/utm5/bin/utm5_rfw_Switch_on
3.     cp /netup/utm5/bin/safe_utm5_rfw /netup/utm5/bin/safe_utm5_rfw_Switch_on
4.     cp /etc/init.d/utm5_rfw /etc/init.d/utm5_rfw_Switch_on
Редактируем соответствующие файлы:
1. Nano /netup/utm5/rfw5_Switch_on.cfg
rfw_name=Switch_Internet_on   //Имя фраервола, которое указываем в UTM5
core_host=127.0.0.1                       //IP адрес, где запущен UTM5
core_port=12758                          //Порт подключения к ядру
rfw_login=login                            // Логин     
rfw_password=passwd                // Пароль
firewall_type=local                      // Тип фраервола
rfw_ssl_type=none
sync_flags=enable:disable
firewall_path=/scripts/Switch_on.exp      //Путь до скрипта
log_level=3
log_file_main=/netup/utm5/log/rfw5_main_Switch_on.log
log_file_debug=/netup/utm5/log/rfw5_debug_Switch_on.log
log_file_critical=/netup/utm5/log/rfw5_critical_Switch_on.log
 2. Nano /netup/utm5/bin/safe_utm5_rfw_Switch_on
 #!/bin/sh
# description: UTM Billing System Radius Safe start script trap '' 1 2 3 15
pid_file=/var/run/utm5_Switch_on.pid         //Имя процесса
utm_exec=utm5_rfw_Switch_on                  //Имя исполняемого файла
err_log=/netup/utm5/log/rfw5_Switch_on.log
exec_dir=/netup/utm5/bin
root_email=root
rfw_flags=""
rfw_cfg=/netup/utm5/rfw5_Switch_on.cfg  //Путь до конф файла.
 3.Nano /etc/init.d/utm5_rfw_Switch_on
#!/bin/sh
# chkconfig: 2345 90 10
# description: UTM Billing System firewall control tool  trap '' 1 2 3 15
utm_exec=safe_utm5_rfw_Switch_on
exec_dir=/netup/utm5/bin

Запускаем: /etc/init.d/utm5_rfw_Switch_on star
Добавляем в автозагрузку: chkconfig --level 35 utm5_rfw_Switch_on on
Приступаем к настройке в UTM5:
Регистрируем коммутатор:

Добавляем брандмауэр:

Добавляем правило Firewall:

Заходим в настройки пользователей и добавляем информацию о коммутаторе и порте:

Перезапускаем:

/etc/init.d/utm5_rfw_Switch_on stop
/etc/init.d/utm5_rfw_Switch_on start

Аналогичные действия проделываем и для отключения интернета.
Приступим к настройке маршрутизатора.
Подключаемся к маршрутизатору: autoexpect ssh cisco@1.1.1.1
Применяем первый список команд для маршрутизатора при включении интернета.
Копируем скрипт в созданную папку: cp script.exp /scripts/cisco_1.1.1.1_on.exp
Редактируем: nano /scripts/cisco_1.1.1.1_on.exp
Рассмотрим, что нужно заменить в данном скрипте на нашем шаблонном наборе команд:

conf t
ip access-list extended 160
permit ip host $ip any
exit
wr

Передавать скрипту будем один параметр: IP адрес абонента.
Добавим в скрипт строчку:
set ip [lindex $argv 0]
Сохраняем и тестируем: cisco_1.1.1.1_on.exp 1.1.1.7

conf t
ip access-list extended 160
permit ip host 1.1.1.7 any
exit
wr

Приступаем к настройке:
Копируем 4 файла:
cp /netup/utm5/rfw5.cfg /netup/utm5/rfw5_cisco_1.1.1.1_on.cfg
cp /netup/utm5/bin/utm5_rfw /netup/utm5/bin/utm5_rfw_ cisco_1.1.1.1_on
cp /netup/utm5/bin/safe_utm5_rfw /netup/utm5/bin/safe_utm5_rfw_cisco_1.1.1.1_on
cp /etc/init.d/utm5_rfw /etc/init.d/utm5_rfw_cisco_1.1.1.1_on
И настраиваем соответственно.
После настройки скриптов, приступим к настройки UTM5:
Добавляем брандмауэр:

Добавляем правило firewall:

Заходим в настройки пользователя и добавляем его в группу «Ясенево».

Перезапускаем:
/etc/init.d/utm5_rfw_cisco_1.1.1.1_on stop
/etc/init.d/utm5_rfw_cisco_1.1.1.1_on start
Аналогичные действия проделываем и для отключения интернета.
Скрипты для маршрутизаторов рекомендуется не группировать, в отличие от коммутаторов. Маршрутизаторы могут быть разными, как и интерфейсы. Обрабатывание скриптов на маршрутизаторах ограничиваем по группам.
На этом предлагаю закончить.
Вопросы, замечания и предложения пишите в комментариях или на почту.
Удачного тестирования!

Комментариев нет:

Отправить комментарий