NeTAMS на PC–маршрутизаторе

NeTAMS на PC–маршрутизаторе

В большинстве случаев схема подключения PC–роутера к сети следующая: в компьютере имеются две сетевые карты, одна из них ведет в локальную сеть офиса или домашней сети, другая к провайдеру Интернет. Между сетевыми интерфейсами настроена маршрутизация и (возможно) трансляция адресов. Необходимо учитывать трафик пользователей, и при необходимости блокировать некоторым из них доступ во внешнюю сеть.

Оставим процедуру установки и настройки операционной системы, MySQL, Apache, маршрутизацию, трансляцию адресов и прочее на совести администратора. Будем считать, что все (кроме учета трафика) уже работает. Программа NeTAMS скачана, скомпилирована, исполняемые файлы переписаны куда надо, но конфигурационного файла еще нет.

Допустим, что внутренний адрес интерфейса eth1 сервера 192.168.0.1, сетевая маска 255.255.255.0. Компьютеры внутренней сети могут иметь адреса с 192.168.0.2 по 192.168.0.254, в то время как реально пока установлены только три компьютера с адресами .10, .11 и .12.

Необходимо считать общий трафик, трафик только до российских сетей, и весь HTTP–трафик.

Конфигурационный файл /etc/netams.cfg выглядит следующим образом:

debug none

user name admin real–name Vasya_Pupkin

password aaa email root permit all

schedule time daily action «send report

to admin on LAN on NETWORK+»

service server 0

login local

listen 20001

max–conn 6

service processor 0

lookup–delay 20

flow–lifetime 120

policy name ip target proto ip

policy name www target proto tcp ports 80

policy name rus target file /etc/ru–networks.txt

restrict all drop local pass

unit group name NETWORK acct–policy ip tcp !rus

unit net name LAN ip 192.168.0.0 mask 255.255.255.0

no–local–pass acct–policy ip tcp !rus

unit host name server ip 192.168.0.1 parent NETWORK

acct–policy ip tcp !rus

unit user name petya ip 192.168.0.10 parent NETWORK password abc

acct–policy ip tcp !rus

unit user name fedya ip 192.168.0.11 parent NETWORK password def

acct–policy ip tcp !rus

unit user name masha ip 192.168.0.12 parent NETWORK password ghi

acct–policy ip tcp !rus

storage 1 all

service storage 1

type mysql

service data–source 1

type libpcap

source eth1

rule 11 «ip»

service alerter 0

report oid 06100 name rep1 type traffic period day detail simple

smtp–server 127.0.0.1

service html 0

path /var/www/traffic

language en

run 5min

htaccess yes

client–pages all

Полезно разобрать весь конфигурационный файл по строчкам.

1 debug none

2 user name admin real–name Vasya_Pupkin password

aaa email root permit all

3 schedule time daily action «send report to admin on LAN on NETWORK+»

Этими командами настраивается сервис main, причем явно писать «service main» не нужно. Вначале отключается вывод всей отладочной информации — это нужно для уменьшения размера лог–файла. Далее, заводится пользователь системы NeTAMS, имеющий в ней административные права (permit all). Указанный пароль «aaa» потом будет храниться в зашифрованном виде. На адрес «root» будут отсылаться уведомления о трафике. Третьей строкой планируется отсылка ежедневных уведомлений о трафике пользователю admin на адрес root@, по юнитам LAN и NETWORK (вместе со всеми входящими в группу юнитами).

Пустая строка за номером 4 отделяет настройки разных сервисов (в данном случае main и server)

5 service server 0

6 login local

7 listen 20001

8 max–conn 6

Этими командами настраивается сервис server, который обеспечивает подключение администратора и скриптов к работающему экземпляру NeTAMS по протоколу telnet. Входящие соединения принимаются только на локальный адрес 127.0.0.1, порт 20001, и возможно не более шести одновременных соединений. Согласно предыдущим строкам, подключиться сможет только один пользователь с логином «admin» и паролем «aaa» — других просто нет.

9

Пустая строка, отделяет команды сервисов server и processor друг от друга.

10 service processor 0

11 lookup–delay 20

12 flow–lifetime 120

13 policy name ip target proto ip

14 policy name www target proto tcp ports 80

15 policy name rus target file /etc/ru–networks.txt

16 restrict all drop local pass

Настраивается главный сервис — processor. В строках 10 и 11 задаются параметры, как часто будет проверяться списки юнитов и откладываться записи в базу данных. Для большинства задач указанные значения параметров оптимальны. Три следующие строки задают политики, по которым будет идти учет трафика. Политика «ip» задает весь IP–трафик, «www» — только тот, который идет по порту TCP 80, «rus» — тот, который получается при совпадении адресов с таблицей русских сетей, содержащейся в файле префиксов /etc/ru–networks.txt. Изначально этот файл идет в дистрибутиве NeTAMS, в каталоге addon/. Последняя, 16–ая строка определяет, как поступать с пакетами, которые прошли через учет по списку юнитов и совпали (или не совпали) с каким–либо юнитом. Указанная конфигурация пропускает пакеты, которые принадлежат имеющимся в конфигурационном файле юнитам, и не пропускает остальные. Полезно использовать именно указанное сочетание, т.к. это поможет не пускать в сеть «незаконные» компьютеры.

17 unit group name NETWORK acct–policy ip tcp !rus

18 unit net name LAN ip 192.168.0.0 mask 255.255.255.0

no–local–pass acct–policy ip tcp !rus

19 unit host name server ip 192.168.0.1 parent NETWORK

acct–policy ip tcp !rus

20 unit user name petya ip 192.168.0.10 parent NETWORK

password abc acct–policy ip tcp !rus

21 unit user name fedya ip 192.168.0.11 parent NETWORK

password def acct–policy ip tcp !rus

22 unit user name masha ip 192.168.0.12 parent NETWORK

password ghi acct–policy ip tcp !rus

Здесь определяются юниты, или учётные объекты. В начале создается группа, которая будет родительской по отношению к включенным в нее юнитам. Затем следует юнит, обозначающий всю подсеть. Далее, идут юниты, представляющие отдельные компьютеры. Для каждого юнита указан одинаковый набор политик учета, обратите внимание на флаг inverse, в виде знака "!», для политики «rus». Для юнита LAN указан также параметр no–local–pass, который заставляет считать не–локальными все пакеты, принадлежащие сети, и не описанные для других юнитов — этим мы отсекаем «неизвестные подключения». Для последних трех юнитов указан также пароль, который может быть использован для доступа к индивидуальной статистике в виде HTML–страниц.

23 storage 1 all

Указывает сервису processor на необходимость сохранять статистику в хранилище, описанном сервисом storage за номером 1. При этом запить будет идти в обе таблицы одновременно — raw и summary.

25 service storage 1

26 type mysql

Определяет хранилище для статистики. Тип хранилища — MySQL, для доступа к базе будут использованы стандартные настройки: имя пользователя root, пустой пароль, работающий на той же машине SQL–сервер (подключение через unix socket). Имя базы данных — netams.

27 service data–source 1

28 type libpcap

29 source eth1

30 rule 11 «ip»

Определяет, каким образом данные о трафике будут попадать в NeTAMS. Для этого будет использован интерфейс eth1 (ОС Линукс), и будет захвачен весь IP–трафик, проходящий через него (механизм libpcap, на базе которого сделан, например, tcpdump). Номер правила, «11», в данном случае смысла не несет.

32 service alerter 0

33 report oid 06100 name rep1 type traffic period day detail simple

34 smtp–server 127.0.0.1

Для того чтобы пользователи и администратор могли получать уведомления о статистике по электронной почте, настраивается сервис alerter и указывается тип отчета, и адрес smtp–сервера (в данном случае это локальный компьютер, где выполняется NeTAMS). Проследите, чтобы на указанной машине был запущен и настроен на прием ваш sendmail/postfix/exim/etc. В настоящий момент тип отчета задать нельзя, и вместо этого придется писать всю 33ю строчку целиком.

36 service html 0

37 path /var/www/traffic

38 language en

39 run 5min

40 htaccess yes

41 client–pages all

Сервис html позволяет автоматически генерировать HTML–страницы с отчетами. Процесс netams будет автоматически создавать эти страницы раз в 5 минут и складывать их в каталог /var/www/traffic. При этом язык страниц – английский (другого пока нет). Будет создаваться как администраторская часть дерева страниц, так и клиентская. Доступ к статистике будет защищен паролем (на администраторскую – admin:aaa, клиентам – их логины–пароли). Если настроить апач так:

ServerName www.company.ru

<Directory /var/www/traffic>

Options FollowSymLinks ExecCGI Indexes

AllowOverride All

</Directory>

Alias /stat/ /var/www/traffic/

то администратор получит доступ по ссылке http://www.company.ru/stat/ , а Федя по ссылке http://www.company.ru/stat/clients/fedya/ (спросится федин логин–пароль)