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/ (спросится федин логин–пароль)