Чтобы ответить на этот вопрос, нужно разобраться, что подразумевается под «самой лучшей системой учета». Думаю, никто не будет спорить, если я скажу, что таковая должна быть надежной, быстрой, гибкой, удобной, расширяемой и работающей по принципу «поставил и забыл». Похвастаться таким списком возможностей способна далеко не каждая система учета. Если быть точным, сегодня таких единицы. Об одной из них и пойдет речь в этой статье.
NeTAMS предназначен для подсчета и управления трафиком в локальной сети. Этот программный комплекс работает под Linux, FreeBSD 4.х, 5.х, 6.х, OpenBSD, NetBSD и Solaris. Для установки необходимы: MySQL версии 4.0.16 и выше, Apache версии 1.3.27 и выше, libpcap 0.7.1 и выше. Вся установка сводится к выполнению следующих команд:
Если ты планируешь использовать ограничения по скорости (unit host name Pupkin ip 192.168.1.2 bw 256K in acct-policy ip), бинарники следует скомпилировать с поддержкой квот: «FLAGS=-DHAVE_BW make».
На подопытном дистрибутиве SuSE 10.2 с ядром по умолчанию все установилось без проблем и лишних вопросов.
Перед первым запуском нужно создать конфигурационный файл с именем /etc/netams.cfg на основе шаблона /etc/netams.cfg.sample. В каталоге /etc/rc.d скрипт установки создает файл netams-linux-startup.sh. Если переименовать его в netams и сделать исполняемым, то демон можно будет запускать и останавливать из командной строки:
Перед тем как запустить систему учета трафика, в твоем файрволе необходимо задать правила движения пакетов. Например, в Iptables лучше всего создать отдельную цепочку и написать правило, направляющее пакеты через QUEUE. Это заставит весь входящий и исходящий трафик заруливать в программу учета. В нашем случае цепочка будет называться Counter:
# iptabes -A Counter -j QUEUE
После установки стартовый файл netams можно найти в каталоге /usr/local/sbin. Запускаем:
# /usr/local/sbin/netams -f /etc/netams.cfg
Netams создает telnet-сессию на порту, указанном в конфигурационном файле (по умолчанию это 20001). Подключаемся:
$ telnet localhost 20001
Программа запрашивает имя пользователя и пароль. Если в конфиге ты ничего не менял, то логин будет admin, а пароль - aaa.
После авторизации программа готова к обработке команд. Netams представляет собой демон и имеет в своем арсенале несколько сервисов, каждый из которых выполняет определенную задачу. Все сервисы работают в отдельных потоках, а их свойства описываются в конфигурационном файле.
Попробуй набрать команду show config, а затем - html. Первая покажет конфиг, который загружен в память, а вторая создаст html-файлы в каталоге /usr/local/www/stat, в них будет отображена вся статистика на текущий момент.
Если ты правишь конфиг непосредственно из файла, обязательно перезапускай демон. Для правки конфига нужно учесть два правила:
Netams автоматически создает html-страницы, с помощью которых можно как администрировать, так и смотреть статистику. Период генерирования страниц, путь до каталога и некоторые другие настройки можно изменить в конфигурационном файле, в секции Service html. Естественно, для того чтобы обращаться к страницам из браузера, нужно иметь настроенный и запущенный web-сервер. В случае Apache в netams.cfg для сервиса html следует прописать строчку «path /usr/local/apache/htdocs».
Немного забегая вперед, скажу, что рядом с бинарником, стартующим демон, расположен файл hetamsctl, который представляет собой эмулятор telnet. Он может выполнять абсолютно все функции, которые будут переданы в командной строке. Так, например, чтобы с помощью обычной telnet-сессии установить 100 Мб жесткой квоты входящего трафика пользователю Pupkin, нужно выполнить следующие операции:
То же самое можно проделать с помощью одной-единственной команды, не подключаясь к telnet'у:
# /usr/local/sbin/netamsctl "service quota 0 && set name Pupkin month 100M in && exit"
Самое приятное во всем этом, что такие параметры можно передавать из абсолютно любого места. В том числе и из CGI-скриптов.
К нашему счастью, разработчики пакета постарались и написали набор скриптов для работы с разными сервисами. Найти его можно в дистрибутиве NeTAMS, в каталоге ./cgi-bin. Если положить все файлы из этого каталога в папку cgi-bin на сервере и набрать в адресной строке браузера «http://localhost/cgi-bin/admintool.cgi», нас незамедлительно перекинет в админку.
Для того чтобы добавить нового пользователя или группу, подключаемся к telnet'у, вводим имя пользователя, пароль и пишем «service processor». После этого можно добавлять пользователя:
>unit user name Pupkin ip 192.168.0.10 email Pupkin@domain.ru
parent CLIENTS acct-policy ip www mail
Затем вводим show config и смотрим, чтобы пользователю присвоился OID и, самое главное, чтобы строка «acct-policy ip www mail» была полностью и без ошибок, иначе ничего работать не будет.
Все, после этого можно установить пользовательскую квоту:
Для того чтобы программа считала поступающий трафик, ей нужно знать, что он собой представляет и как выглядит. В конфигурационном файле можно встретить примерно такие строки:
После слова name указывается имя политики. Этот параметр можно изменять по своему усмотрению. А вот параметр target описывает прототип правила, по которому будет вестись учет. Протоколы могут иметь следующие значения:
Политика добавляется в сервисе processor в формате:
В боевых условиях это будет выглядеть так:
Таким образом, при грамотном использовании политик можно достаточно четко разграничить учет трафика. При создании нового юнита важно не забывать добавлять в конец строки нужные политики. Еще один момент: пока пакеты будут считаться по политике ip, тебе не удастся в явном виде скалькулировать весь UDP- и TCP-трафик. Чтобы при совпадении политики дальнейший подсчет прекратился, нужно использовать знак %.
>unit host name Pupkin ip 192.168.0.10 acct-policy ip %tcp %udp trash
Поскольку netams запускается с правами root и отвечает за подсчет небесплатного трафика, защите всей системы следует уделить самое пристальное внимание. Существует несколько потенциально небезопасных направлений:
По достоверным сведениям, на сегодняшний день ни одного случая взлома программы зарегистрировано не было.
Несанкционированный доступ к программе возможен путем раскрытия пароля и присоединения к программе через telnet. Это особенно актуально при использовании генератора статистики HTML. Для уменьшения риска нужно сделать следующее:
# iptables -A PREROUTING -i eth0 -p tcp --dport 20001 -j DROP -t nat
Неправильный учет трафика возможен при неверном расположении правил ipfw/iptables и при получении статистики NetFlow от неизвестного источника. Во избежание этого:
В принципе, все, что нужно знать для начала работы с пакетом NeTAMS, я рассказал, но, разобраясь во всех тонкостях настройки и добиваясь стабильного и безошибочного функционирования программы, ты не раз еще будешь вдумчиво курить мануалы и шерстить форум. От себя могу добавить, что пользуюсь NeTAMS'ом уже более двух лет и вполне доволен всеми его возможностями. Но выбор, как всегда, за тобой.
Исходные коды NeTAMS, документацию на русском и английском языках, русско- и англоязычный форумы всегда можно найти по адресу www.netams.com.