[service acl–server]

[service acl–server]

Сервис acl–server занимается контролем доступа клиентов через удаленный маршрутизатор. В общем случае для источников данных типов netflow, ulog и libpcap управление трафиком невозможно, т.к. эти источники являются «односторонними», предоставляя данные по трафику безо всякой возможности воздействовать на сам процесс доставки этого трафика. С помощью данного сервиса можно организовать передачу команд вида «открыть–закрыть» на расположенный где–то в сети роутер. Это может быть маршрутизатор Cisco, PC–роутер с генератором потока netflow, или даже локальная машина (роутер/бридж) с настроенным data–source libpcap.

Сервис acl–server появился в NeTAMS начиная с версии 3.3.0 (build 2710). В настоящий момент поддерживается только управление удаленным роутером Cisco по протоколу RSH с набором некоторых стандартных команд. Они передаются на роутер при:

• (пере)запуске NeTAMS

• перезагрузке удаленного роутера

• при изменении системной политики

Эти правила действуют на юниты типа USER и HOST, у которых установлены IP–адреса.

Для начала вам необходимо настроить маршрутизатор Cisco:

no ip rcmd domain–lookup

ip rcmd rsh–enable

ip rcmd remote–host netams 192.168.0.10 root enable

!

ip flow–export source FastEthernet0/1

ip flow–export version 5

ip flow–export destination 192.168.0.10 20001

!

access–list 100 dynamic NETAMS deny ip any any

access–list 100 permit ip any any

!

interface FastEthernet0/1

ip address 192.168.0.1 255.255.255.0

ip access–group 100 in

!

В данном случае внутренний IP–адрес маршрутизатора равен 192.168.0.1, к интерфейсу fa0/1 подключена внутреняя сеть, а в этой сети на адресе 192.168.0.10 висит UNIX–компьюер с запущенным NeTAMS. Поток статистики netflow отправляется роутером туда же.

Хотя и считается, что протокол RSH небезопасный, на самом деле не все так плохо. Если вы явно указали разрешенный IP–адрес, с которого можно принимать команды, и на этом компьютере нет «лишних» клиентов, то все в порядке.

acl–server работает путем установки динамических списком доступа (access–lists) на роутере Cisco, это значит что перезагрузке роутера список потеряется (но будет восстановлен вновь). В данном примере список доступа имеет номер 100, и его динамическая часть имеет имя NETAMS. Обратите внимание на то, что все попадающие в этот список записи будут иметь политику DENY, в то время как сам список будет иметь политику ALLOW. Это значит, что при пустом списке доступа будет разрешен весь трафик, а добавление каких–то новых записей (IP–адресов) будет означать их блокировку. Далее, этот список доступа ставится на «вход» внутреннего интерфейса.

Справочник команд сервиса acl–server:

hostname AAAA [NN]

Задает имя или IP–адрес удаленного маршрутизатора, которым управляем. Опциональный параметр NN — номер TCP–порта, на котором роутер по принимает команды по протоколу RSH (по умолчанию 514).

direction { src|dst }

Определяет, в какое поле (src или dst) записи access–template будет вставлен IP–адрес юнита. Применять совместно направлением access–group на интерфейсе роутера. Например, если у вас записано:

interface FastEthernet0/1

ip access–group 100 in

то для конструкции «direction src» и IP–адреса юнита 192.168.0.10 в случае его блокировки будет исполнена команда:

access–template 100 NETAMS host 192.168.0.10 any

Аналогично, для «direction dst» будет:

access–template 100 NETAMS host any 192.168.0.10

При разблокировании юнита будет послана команда:

clear access–template 100 NETAMS …

dynamic–name AAAA

Задает имя динамической части списка доступа (в данном примере NETAMS)

acl–number NNN [cisco]

Задает номер списка доступа access–list (в данном примере 100), значение по умолчанию: 180. Ключевое слово «cisco» определяет, что удаленная сторона представляет из себя роутер Cisco, а не что–то иное (в данной версии других вариантов нет, так что указывать обязательно).

delay NNN

Задает промежуток времени между периодическими проверками состояния роутера и подачи команд его управления (в секундах). Рекомендуется значение порядка 300 секунд (значение по умолчанию).

set–uptime NNN

Позволяет вручную выставить параметр uptime удаленного роутера, полезно для отладки. NNN — время работы роутера в секундах, с момента последней его перезагрузки.

debug aclserver

Включает отладку сервиса aclserver (это команда сервиса main, НЕ acl–server).

Пример рабочей конфигурации сервиса acl–server, для вышеописанного примера настройки Cisco:

#NeTAMS version 3.3.0 (build 2710) compiled by root@localhost

#configuration built Sun Sep 18 04:15:20 2005

#begin

service acl–server 0

hostname 192.168.0.1

direction src

dynamic–name NETAMS

acl–number 100 cisco

delay 100

#end

Пример вывода debug aclserver:

|aclserver: acl server checking every 10 seconds

|aclserver: known: 1, remote uptime: CISCO2 6 5 9 15 4094100

|aclserver: queue u=0F8AEA flag=0 sp_now=0

|aclserver: queue u=03A4C4 flag=0 sp_now=0

|aclserver: message ip=192.168.0.11 action=REMOVE

|aclserver: message ip=192.168.0.12 action=REMOVE

|aclserver: messages processed: 2, failed: 0

|aclserver: acl server checking every 10 seconds

|aclserver: known: 4094102, remote uptime: CISCO26 5 9 15 4094160

|aclserver: messages processed: 0, failed: 0

|aclserver: acl server checking every 10 seconds

|aclserver: known: 4094162, remote uptime: CISCO26 5 9 15 4094160

|aclserver: messages processed: 0, failed: 0

Известные проблемы и направления развития:

• Сделать поддержку нескольких удаленных устройств, различая принадлежность юнитов через ds–list.

• Сделать «обратное» включение, когда политика основного accessl–list по умолчанию — deny, динамического — allow, и добавление записей в список происходит для НЕБЛОКИРОВАННЫХ юнитов.

• Написать клиентские программы для linux, freebsd, solaris, которые работали бы как клиенты сервиса acl–server и делали бы блокировку на удаленной машине.