Идеальный контролерВиталий «root» Чернов Хакер, номер #105, стр. 158 Устанавливаем и настраиваем систему учета трафика NeTAMSСегодня найти быструю, гибкую и мощную систему учета трафика не проблема. Жаль только, что учет нельзя назвать безошибочным, да и надежность оставляет желать лучшего. Что касается *nix-дистрибутивов, то здесь разработчики предоставили системным администраторам и программистам огромный простор для творческой фантазии, включив в ядра весь необходимый функционал. Но это не значит, что готовых систем учета трафика под *nix не существует. Как раз наоборот – они просто заполонили Сеть. Как выбрать из них самую лучшую? Лучшая система учетаЧтобы ответить на этот вопрос, нужно разобраться, что подразумевается под «самой лучшей системой учета». Думаю, никто не будет спорить, если я скажу, что таковая должна быть надежной, быстрой, гибкой, удобной, расширяемой и работающей по принципу «поставил и забыл». Похвастаться таким списком возможностей способна далеко не каждая система учета. Если быть точным, сегодня таких единицы. Об одной из них и пойдет речь в этой статье. Установка NeTAMSNeTAMS предназначен для подсчета и управления трафиком в локальной сети. Этот программный комплекс работает под Linux, FreeBSD 4.х, 5.х, 6.х, OpenBSD, NetBSD и Solaris. Для установки необходимы: MySQL версии 4.0.16 и выше, Apache версии 1.3.27 и выше, libpcap 0.7.1 и выше. Вся установка сводится к выполнению следующих команд: $ sh configure.sh $ make $ sudo make install Если ты планируешь использовать ограничения по скорости (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 и сделать исполняемым, то демон можно будет запускать и останавливать из командной строки: # service netams start # service netams stop ЗапускПеред тем как запустить систему учета трафика, в твоем файрволе необходимо задать правила движения пакетов. Например, в 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, в них будет отображена вся статистика на текущий момент. Если ты правишь конфиг непосредственно из файла, обязательно перезапускай демон. Для правки конфига нужно учесть два правила:
Настройка html-интерфейсаNetams автоматически создает html-страницы, с помощью которых можно как администрировать, так и смотреть статистику. Период генерирования страниц, путь до каталога и некоторые другие настройки можно изменить в конфигурационном файле, в секции Service html. Естественно, для того чтобы обращаться к страницам из браузера, нужно иметь настроенный и запущенный web-сервер. В случае Apache в netams.cfg для сервиса html следует прописать строчку «path /usr/local/apache/htdocs». Немного забегая вперед, скажу, что рядом с бинарником, стартующим демон, расположен файл hetamsctl, который представляет собой эмулятор telnet. Он может выполнять абсолютно все функции, которые будут переданы в командной строке. Так, например, чтобы с помощью обычной telnet-сессии установить 100 Мб жесткой квоты входящего трафика пользователю Pupkin, нужно выполнить следующие операции: $ telnet localhost 20001 >login: >password: ... >service quota 0 >set name Pupkin month 100M in >exit То же самое можно проделать с помощью одной-единственной команды, не подключаясь к 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 >exit >save Затем вводим show config и смотрим, чтобы пользователю присвоился OID и, самое главное, чтобы строка «acct-policy ip www mail» была полностью и без ошибок, иначе ничего работать не будет. Все, после этого можно установить пользовательскую квоту: >service quota 0 >set name Pupkin month 100M in >exit Политики учетаДля того чтобы программа считала поступающий трафик, ей нужно знать, что он собой представляет и как выглядит. В конфигурационном файле можно встретить примерно такие строки: policy oid 01B148 name ip target proto ip policy oid 010A1F name www target proto tcp port 80 81 8080 3128 policy oid 091C21 name mail target proto tcp port 25 110 После слова name указывается имя политики. Этот параметр можно изменять по своему усмотрению. А вот параметр target описывает прототип правила, по которому будет вестись учет. Протоколы могут иметь следующие значения:
Политика добавляется в сервисе processor в формате: policy [oid OID] name NAME [no] target TARGET [bw { speed in speed out | speed } ] В боевых условиях это будет выглядеть так: >service processor >policy name ip target proto ip >policy name tcp target proto tcp >policy name udp target proto udp >policy name trash target proto ip Таким образом, при грамотном использовании политик можно достаточно четко разграничить учет трафика. При создании нового юнита важно не забывать добавлять в конец строки нужные политики. Еще один момент: пока пакеты будут считаться по политике ip, тебе не удастся в явном виде скалькулировать весь UDP- и TCP-трафик. Чтобы при совпадении политики дальнейший подсчет прекратился, нужно использовать знак %. >unit host name Pupkin ip 192.168.0.10 acct-policy ip %tcp %udp trash БезопасностьПоскольку netams запускается с правами root и отвечает за подсчет небесплатного трафика, защите всей системы следует уделить самое пристальное внимание. Существует несколько потенциально небезопасных направлений:
По достоверным сведениям, на сегодняшний день ни одного случая взлома программы зарегистрировано не было. Несанкционированный доступ к программе возможен путем раскрытия пароля и присоединения к программе через telnet. Это особенно актуально при использовании генератора статистики HTML. Для уменьшения риска нужно сделать следующее:
service server 0 login localhost
# iptables -A PREROUTING -i eth0 -p tcp --dport 20001 -j DROP -t nat Неправильный учет трафика возможен при неверном расположении правил ipfw/iptables и при получении статистики NetFlow от неизвестного источника. Во избежание этого:
Подводим итогиВ принципе, все, что нужно знать для начала работы с пакетом NeTAMS, я рассказал, но, разобраясь во всех тонкостях настройки и добиваясь стабильного и безошибочного функционирования программы, ты не раз еще будешь вдумчиво курить мануалы и шерстить форум. От себя могу добавить, что пользуюсь NeTAMS'ом уже более двух лет и вполне доволен всеми его возможностями. Но выбор, как всегда, за тобой. WWWИсходные коды NeTAMS, документацию на русском и английском языках, русско- и англоязычный форумы всегда можно найти по адресу www.netams.com. |