Rambler's Top100


Вы

посетитель






LBacl. Редактор аксесс-листа маршрутизаторов Cisco.


  Разработанный модуль LBacl рекомендуется к использованию как альтернатива связки LBacledit+put_config. Основным преимуществом данного решения перед ранее использовавшимся, является возможность редактирования одной записи аксесс-листа без необходимости перезагрузки всего аксесс-листа на маршрутизатор Cisco. Как следствие, уменьшен до минимума интервал задержки между получением команды на изменение состояния учетной записи и реакцией маршрутизатора за счет того, что действие по изменению учетной записи происходит сразу по завершении обращения к маршрутизатору, в то время как при загрузке всего аксесс-листа изменения вступят в силу только по завершении его загрузки.

   Исследование способов регулирования доступа отдельных пользователей в маршрутизаторах Cisco привели к выводу о необходимости разработки оригинального модуля для обеспечения надежного включения/отключения отдельной сессии. Настоящий модуль обеспечивает реализацию протоколов, описанных в RFC 1157 (SNMP) и RFC 854 (telnet) без использования внешних библиотек, что обеспечивает относительную гибкость в использовании с различными реализациями ОС Linux. Данный модуль протестирован на следующих платформах и ОС:

  1. Fedora 6 i386, Cisco 2610/64/16/i-mz-123.20.bin
  2. Centos 5.1 x86_64, Cisco 2611/64/16/is-mz-123.22.bin
  3. Fedora 6 i386, Cisco 2610/64/16/ik9o3s3-mz.123-20.bin
  4. FreeBSD 6.1 i386, Cisco 2611/64/16/is-mz.123-22.bin
  5. FreeBSD 6.3 i386, Cisco 2611/64/16/is-mz.123-22.bin

Необходимые настройки конфигурации маршрутизатора (логины и пароли указаны в качестве примера, в актуальной конфигурации их рекомендуется изменить):

1. Настройка пользователя, под которым LBacl будет производить изменения в текущей конфигурации (running-config):
  username <пользователь> password 0 <пароль>
  enable <пароль>

2. К настройкам telnet добавить:
  line vty 0 4
  password <пароль>

3. Обеспечить доступ к snmp:
  snmp-server community <наименование> RW

4. Обеспечить статические записи в файле, описываемом переменной rules (этот файл должен находиться в /tftpboot), ограничивающие доступ к telnet маршрутизатора с IP компьютера, на котором установлен LBacl:

  permit tcp host aaa.bbb.ccc.ddd host eee.fff.ggg.hhh eq telnet
  deny tcp any host eee.fff.ggg.hhh eq telnet

Записи, обеспечивающие доступ отдельных хостов в интернет являются динамическими и подлежат изменению только агентом LBccd. Записи, регламентирующие служебный доступ должны быть описаны статически в файле, описываемом переменной rules файла конфигурации.

5. Пример vg.on:

  #!/bin/bash
  /usr/local/billing/LBacl -c 1 -h $3 -m $4 [-s $5] [-f <файл конфигурации>]
  exit 0

6. Пример vg.off

  #!/bin/bash
  /usr/local/billing/LBacl -c 0 -h $3 -m $4 [-s $5] [-f <файл конфигурации>]
  exit 0

7. Обеспечить наличие необходимых переменных в файле конфигурации (по умолчанию /etc/billing/lbacl.conf):

  *) address - адрес маршрутизатора
  *) username = логин пользователя
  *) password = пароль пользователя
  *) enable = пароль привелегированного режима
  *) acl - номер аксесс-листа
  *) snmp - коммьюнити (обязательно разрешение на запись)
  *) socket - путь, указывающий на unix сокет (рекомендуется указывать путь в /tmp)
  *) rules - файл, расположенный в /tftpboot и содержащий статические правила, примерно следующего вида (здесь: 10.10.10.1 - компьютер, 10.10.10.101 - маршрутизатор, 101 - аксесс-лист):

  no access-list 101
  access-list 101 permit tcp host 10.10.10.1 host 10.10.10.101 eq telnet
   access-list 101 deny tcp any host 10.10.10.101 eq telnet
  access-list 101 deny tcp any any range 135 139
  access-list 101 deny udp any any range netbios-ns netbios-ss
  access-list 101 deny tcp any any eq 445
  access-list 101 deny udp any any eq 445

  *) tftp - адрес сервера tftp
  *) mib - 1.3.6.1.4.1.9.2.1.53 (если это cisco).
  *) timeout - значение, в течение которого сервер в режиме "-i" ожидает соединения. По умолчанию значение 62 сек, поскольку агент начинает отрабатывать включение/отключение пользователей не сразу после запуска.

8. В файле LBccd.init, в разделе start) добавить следующее правило:

  start)
  /usr/local/billing/LBacl -i [-f <файл конфигурации>]

9. Обеспечить отсутствие фильтрации ICMP echo пакетов от компьютера до маршрутизатора.

10. Перезапустить LBccd.
Описание работы: При запуске модуль проверяет наличие сокета (указанного в переменной socket), в случае его отсутствия модуль создает сокет и остается функционировать в фоновом режиме в качестве сервера, ожидая в течение периода времени, указанного в переменной timeout, обращения к сокету.

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

При наступлении таймаута (т.е. отсутствии подключений клиентской части модуля в течение 1 секунды), производится отключение приемного сокета и отправка данных в маршрутизатор. Отправка данных на маршрутизатор возможна двумя путями: при наличии ключа -i, начальная загрузка аксес-листа производится с использованием протокола SNMP (mib SNMPv2-SMI::enterprises.9.2.1.53. или указанный в переменной mib, файла конфигурации), поскольку отсутствует необходимость в сохранении уже имеющегося на маршрутизаторе аксес-листа, либо с использованием протокола telnet, в этом случае отправка данных на маршрутизатор производится в течение одной telnet-сессии с маршрутизатором.

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

Испытания: Загрузка 128 подсетей класса C (32512 хостов) в режиме telnet на маршрутизатор Cisco 2611 (64Мб RAM) заняла 1 час 12 минут 02 сек, среднее время обработки одной записи 0.017 сек. Загрузка этого же объема данных в режиме инициализации заняла не более 10 сек.

Загрузить модуль(Linux)

Загрузить модуль(FreeBSD 5.5)

Загрузить модуль(FreeBSD 6.1)




В начало страницы