Документация по ОС FreeBSD Четверг, 30.01.2025, 21:12
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Net

Идеальный контролер [2007]

Лучшая система учета

Чтобы ответить на этот вопрос, нужно разобраться, что подразумевается под «самой лучшей системой учета». Думаю, никто не будет спорить, если я скажу, что таковая должна быть надежной, быстрой, гибкой, удобной, расширяемой и работающей по принципу «поставил и забыл». Похвастаться таким списком возможностей способна далеко не каждая система учета. Если быть точным, сегодня таких единицы. Об одной из них и пойдет речь в этой статье.

Установка NeTAMS

NeTAMS предназначен для подсчета и управления трафиком в локальной сети. Этот программный комплекс работает под 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 представляет собой демон и имеет в своем арсенале несколько сервисов, каждый из которых выполняет определенную задачу. Все сервисы работают в отдельных потоках, а их свойства описываются в конфигурационном файле.

  1. Сервис main в конфиге не указан, поскольку представляет собой главный поток, с исполнения которого начинает программа. Он определяет основные свойства всего процесса, считывает и разбирает конфигурационный файл, запуская другие сервисы, и останавливается до завершения работы netams. При подаче команд kill, shutdown, reload, возникновении критического сбоя или получении сигнала SIGQUIT, сервис main просыпается и пытается остановить все другие сервисы, чтобы корректно закрыть базу данных и убрать перехватчики пакетов.
  2. Сервис processor является ядром netams. Именно в нем определяются правила учета и список объектов, по которым будет произведен учет. Вообще, все компоненты системы обмениваются между собой сообщениями, например запросами к БД или данными о трафике за некий интервал времени. Processor обеспечивает диспетчеризацию всех сообщений. Всего возможен только один processor на экземпляр программы.
  3. Сервис server позволяет присоединяться к работающей программе через TCP-сокет; с помощью различных команд можно управлять программой и снимать статистику.
  4. Сервис data-source обеспечивает поступление данных о трафике внутрь программы. В настоящее время может обрабатываться только информация об IP-трафике. В качестве источников данных об IP-трафике могут выступать средства перехвата пакетов систем FreeBSD (bsd-divert), Linux (ip_queue), средства прослушивания сетевого интерфейса (libpcap/bpf), а также статистика NetFlow, приходящая от маршрутизаторов Cisco. Кстати, есть возможность сбора статистики, например, о работе почтовой системы или proxy-сервера.
  5. Сервис storage определяет БД для хранения статистики. Это может быть стандартный UNIX hash, который есть в любой системе, или база данных SQL, расположенная на локальной или соседней машине. Статистика существует в двух форматах: raw или summary (в одной базе можно держать один из форматов или оба сразу).
  6. Сервис alerter позволяет администратору организовывать отправку себе или пользователям отчета о прошедшем и учтенном трафике, об информации о деятельности системы и прочем.
  7. Сервис scheduler обеспечивает выполнение заданных команд в запланированное время. Это «виртуальный» сервис, так как запускается всегда автоматически и не требует конфигурирования. Здесь важны только запланированные команды, список которых выводится в конфигурационном файле после перечисления пользователей.
  8. Сервис html отвечает за автоматическое создание статических html-страниц, содержащих информацию о прошедшем трафике, о работе системы и прочем за определенный период времени. Эти страницы (при соответствующей конфигурации web-сервера) впоследствии могут быть просмотрены клиентом без отвлечения программы от работы.
  9. Сервис monitor организует мониторинг заданных юнитов для сбора информации по относящемуся к ним трафику.

Попробуй набрать команду show config, а затем - html. Первая покажет конфиг, который загружен в память, а вторая создаст html-файлы в каталоге /usr/local/www/stat, в них будет отображена вся статистика на текущий момент.

Если ты правишь конфиг непосредственно из файла, обязательно перезапускай демон. Для правки конфига нужно учесть два правила:

  1. Все сервисы, описанные в конфиге, должны отделяться друг от друга пустой строкой. Это позволит программе увидеть завершение описания одного сервиса и начало описания другого.
  2. При добавлении нового пользователя категорически запрещается вручную вносить его запись в конфиг. Это можно сделать с помощью сервиса processor, который автоматически назначит пользователю идентификатор и добавит необходимые записи в базу данных.

Настройка 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 описывает прототип правила, по которому будет вестись учет. Протоколы могут иметь следующие значения:

  • ip – весь IP-трафик;
  • icmp – ICMP-трафик;
  • tcp – TCP-трафик;
  • udp – UDP-трафик.

Политика добавляется в сервисе 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 и отвечает за подсчет небесплатного трафика, защите всей системы следует уделить самое пристальное внимание. Существует несколько потенциально небезопасных направлений:

  1. Взлом защиты самой программы.
  2. Взлом операционной системы через программу.
  3. Действия, приводящие к неверному учету трафика.

По достоверным сведениям, на сегодняшний день ни одного случая взлома программы зарегистрировано не было.

Несанкционированный доступ к программе возможен путем раскрытия пароля и присоединения к программе через telnet. Это особенно актуально при использовании генератора статистики HTML. Для уменьшения риска нужно сделать следующее:

  1. Установить права на чтение конфигурационного файла и лог-файлов только для пользователя root.
  2. Установить жесткие права на чтение локальных файлов HTML-статистики.
  3. Средствами http-сервера установить права на просмотр статистики «извне» только тем, кому нужно.
  4. Разрешить возможность логина в программу только с локальной машины:
service server 0
login localhost
  1. Отрезать правилами Iptables или любого другого файрвола твоей системы нелокальное подключение к программе:

# iptables -A PREROUTING -i eth0 -p tcp --dport 20001 -j DROP -t nat

Неправильный учет трафика возможен при неверном расположении правил ipfw/iptables и при получении статистики NetFlow от неизвестного источника. Во избежание этого:

  1. мысленно представь, как данные ходят по твоей сети;
  2. нарисуй схему сети с именами интерфейсов;
  3. выпиши список имеющихся правил ipfw/iptables и придумай номер правила, где будет осуществляться «заворачивание» трафика;
  4. при использовании bridging или прозрачного http-прокси обдумай все обстоятельно;
  5. если ты используешь подсчет потока NetFlow, в описании соответствующего сервиса data-source обязательно укажи IP-адрес роутера, присылающего статистику.

Подводим итоги

В принципе, все, что нужно знать для начала работы с пакетом NeTAMS, я рассказал, но, разобраясь во всех тонкостях настройки и добиваясь стабильного и безошибочного функционирования программы, ты не раз еще будешь вдумчиво курить мануалы и шерстить форум. От себя могу добавить, что пользуюсь NeTAMS'ом уже более двух лет и вполне доволен всеми его возможностями. Но выбор, как всегда, за тобой.

WWW

Исходные коды NeTAMS, документацию на русском и английском языках, русско- и англоязычный форумы всегда можно найти по адресу www.netams.com.



Источник: http://www.xakep.ru/magazine/xa/105/158/1.asp
Категория: Net | Добавил: oleg (13.08.2008) | Автор: Виталий «root» Чернов
Просмотров: 909 | Рейтинг: 5.0/1 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2025