Документашка эта писалась для себя, чтобы не забыть, и друзьям, чтоб не отвечать на одни и те же вопросы тысячи раз. Она писалась в разное время и я не всегда помнил про что и как. Возможно, часть сведений уже устарела, но, по крайней мере, это будет точка отсчёта для того кто "читал официальный мануал и ничо нипонял". Надеюсь кому-нибудь поможет. Возможно(возможно) это безграмотный бред. Возможно(возможно) я всё делал неправильно. Но у меня работает-всё считается и всё такое. Если увидели косяки-пешите, я буду только рад исправить. Ну и крайнее. НЕТАМС-СИСТЕМА УЧЁТА. штатными средствами предоставлять кто и куда ходил-бессмысленно, а,зачастую, невозможно. Чтобы "кто куда ходил"-это другое. итак, поехали.
Итак. Сразу оговорюсь-до ума мне довести netams не дали. Тут не рассматриваются случаи привязки по мак и ограничение скорости, хотя примеры я приведу. Автосоздание юнитов я до конца не отработал, но поигрался с ним и особых подводных камней не увидел. Нетамс можно поставить из портов-последнюю версию или скачиваем ту, которая нам нужна с сайта.
У меня возникли проблемы с 3.4.х - не отрабатывались правила fw-policy, поэтому для случая с блокировкой трафика лучше использовать netams-3.3.5, тем более что у меня с ним никаких косяков не возникало. Минусов только два - nawt.2.6 не подцепляется и идущие в комплекте с 3.4.1 cgi скрипты "оформлены" посимпатичнее. До установки нетамса стоит поставить mysql и apache. внимание! вышел 3.4.1rc2 в нём добавлено много фич. в том числе коuрректно работают fw-policy
Итак, нетамс поставлен. для упрощения будем считать что в ipfw записаны правила
divert natd from any to any via interface allow all from any to any deny all from any to any.
Для простого подсчёта я использовал libcap - ставил из портов. К слову-прежде чем ставить netams стоит очень тщательно прочитать документацию на сайте netams.org Итак, чтобы установить последнюю версию netams-3.4.1rc2 его нужно или скачать с сайта разрабочтиков:
http://www.netams.com/files/netams-3.4.1rc2.tar.gz
Или поставить из портов версию 3.4.1rc1
#cd /usr/ports/net-mgmt/netams #make install clean
Перед началом установки будут предложены опции
[ ] DEBUG Build with debug symbols [ ] BW Build with bandwidth limitation functionality
Для работы с libpcpap нужно дополнительно установить последнюю версию libpcap.
#cd /usr/ports/net/libpcap #make install clean
САМОЕ ГЛАВНОЕ! Часто забывают прописать в /etc/rc.conf daemon_name_enable="YES" в нашем случае это netams_enable="YES"
Всё готово к работе.
language ru user oid 030262 name admin real-name "Admin" crypted $1$$HpXmjtul/3i1.bf.B27bU. email root@localhost permit all
Пользователь с полномочиями админа. пароль не выдаётся в открытом виде благодаря crypted
#services configuration
service server 0 login local listen 20000 max-conn 6
service processor lookup-delay 5 flow-lifetime 2 policy oid 08D7E7 name ip target proto ip restrict all drop local pass
еще раз читаем. Что значит этот кусок конфига. В секции service server мы устанавливаем количество телнет соединений к нетамсу, указываем, что подключаться можно только локально,порт, который надо слушать и максимальное количество соединений. Можно оставить как есть (в этом случае порт по умолчанию изменён на 20000)
Что касается описания service processor. то исчерпывающе он описан на сайте, позволю себе процитировать:
lookup-delay XXXX
определяет периодичность, с которой сервис processor будет просматривать список своих NetUnit, чтобы проверить время существования потоков и сбросить их в базу данных. Чем меньше это время, тем точнее идет "квантование" временных периодов, но тем больше нагрузка на программу. На размер базы данных не влияет. XXX - время в секундах, по умолчанию 30.
На 86 юнитов и delay 5 всё ок.
flow-lifetime XXXX
определяет время жизни RAW потока. через указанное время поток обнуляется, а данные суммируются в статистику и записываются в базу. Чем меньше меньше это время, тем с большей точностью записаны данные в базу, но тем она и больше. XXX - время в секундах, по умолчанию 300. lookup-delay XXXX
определяет периодичность, с которой сервис processor будет просматривать список своих NetUnit, чтобы проверить время существования потоков и сбросить их в базу данных. Чем меньше это время, тем точнее идет "квантование" временных периодов, но тем больше нагрузка на программу. На размер базы данных не влияет. XXX - время в секундах, по умолчанию 30. Места у меня много, поэтому могу позволить выставить 2 секунды. если сервер это старый склеротичный десктоп надо быть осторожнее.
policy oid 08D7E7 name ip target proto ip
Это - политика, по которой считается наш трафик. OID можно выставить принудительно, но он вполне успешно выставляется и нетамсом, т.е. параметр необязательный.
внимание! если oid не выставлены, то после запуска netams стоит сделать сохранение конфига, иначе статистика для юнитов будет потеряна.
В данном случае политика называется ip и к ней принадлежит вообще весь ip трафик.
restrict all {drop|pass} local {drop|pass}
задает политику фильтрации трафика для случая, когда fw-policy для объекта не определен all - для всех данных (всех ip-адресов src/dst) local - для данных, предназначенных объектам, описанным в конфигурационном файле drop - не пропускать пакеты данного класса pass - пропускать пакеты Значение по умолчанию restrict all drop local pass приводит к тому, что для трафика, пакеты которого в заголовке в полях src/dst оба IP-адреса не принадлежат ни одной из описанных в конфигурационном файле машин/кластеров/сетей, этот трафик блокируется. Фактически, это означает что программа будет пропускать только данные с/для зарегистрированных машин "за" маршрутизатор. В случае установления restrict local drop вы обязаны явно для каждого юнита прописать fw-policy. Если для юнита не прописаны никакие политики acct-policy или fw-policy, то это эквивалентно применению к этому юниту параметра no-local-pass, т.е. применение restrict all вместо restrict local.
Далее начинается самое интересное. Программа ОЧЕНЬ гибкая, при этом логичная и внятная.
Итак, описываются юниты. Еще раз-мы не рассматриваем привязку по mac (хотя она делается по щелчку, не рассматриваем ограничение скорости и прочее, хотя всё это просто. Все навороты можно сделать после того как программа отлажена и считает как надо)
unit group oid 08EA6D name LAN unit host oid 0AD6A9 name server ip 192.168.9.1 parent LAN acct-policy ip unit user oid 04D535 name HOST1 ip 192.168.9.2 parent LAN acct-policy ip unit user oid 0E8592 name HOST2 ip 192.168.9.5 parent LAN acct-policy ip unit user oid 0C14C4 name HOST3 ip 192.168.9.7 parent LAN acct-policy ip unit user oid 06941D name HOST4 ip 192.168.9.8 parent LAN acct-policy ip unit user oid 0E9C62 name HOST5 ip 192.168.9.10 parent LAN acct-policy ip unit user oid 0B915E name HOST6 ip 192.168.9.11 parent LAN acct-policy ip unit user oid 0023E6 name HOST7 ip 192.168.9.12 parent LAN acct-policy ip unit user oid 073899 name HOST8 ip 192.168.9.20 parent LAN acct-policy ip unit user oid 083230 name HOST9 ip 192.168.9.32 parent LAN acct-policy ip
Собственно мы здесь описываем три типа юнитов - тип "user" , тип"хост" и тип "группа". Еще раз напоминаю-OID'ы — не обязательны, но если конфиг без OID, то каждый раз после перезапуска статистика будет обнуляться. Юниты типа хост и юзер в нашем случае идентичны по свойствам. далее указывается к какой группе принадлежит данный хост или юнит, в этом случае все хосты в группе LAN. acct-policy ip задаётся политика учёта - что именно считается. Политик можно наплодить много. Чтобы не писать постоянно acct-policy ip, можно добавить в конфиг default acct-policy ip(или любая другая политика, которая должна считаться для всех).
service storage 1 type mysql user netams password *** dbname netams accept all
Эта секция отвечает за подключения к БД. указан тип, пользователь, пароль. Пароль можно задать открытым или зашифрованным accept all обозначает что нетамс будет писать в БД всё. Этот параметр можно гибко настраивать.
service data-source 1 type libpcap source fxp0
Откуда мы получаем статистику.FXP0 в этом примере-ВНУТРЕННИЙ интерфейс. В данном случае это libpcap и слушает он всё что идёт через внутренний интерфейс. В случае с libcpap ограничивать трафик мы не можем-только слушать. в том случае, если нужно не только считать, но и ограничивать нужно пользоваться дивертом.
service data-source 1 type ip-traffic source divert 199 rule 9000 "ip from 192.168.0.0/24 to any out xmit fxp0" rule 11000 "ip from any to 192.168.0.0/24 in via fxp0"
В данном случае правило вида divert natd from any to any via interface должно находится между 9000 и 11000 Диверт порт 199 взят с потолка, ни к чему не привязан. FXP0 в данном случае ВНЕШНИЙ.
Если нам надо знать кто куда ходил - самое простое решение это секция monitor. Можно забивать все юниты ручками, а можно воспользоваться консолью. Необходимо обратить внимание, что есть сильная разница между консолью в 3.4.x и 3.3.5 в случае 3.4.х
enable configure terminal service monitor monitor unit oid/name
service html path /usr/local/www/stat run 10sec url http://192.168.9.1/stat client-pages all account-pages none
service scheduler oid 08FFFF time 10sec action "html"
теперь о блокировке. в нашем случае изначально пользователи могут ходить везде.чтобы в случае превышения квоты у них оставались только аська и почта - достаточно добавить одну политику и настроить сервис quota. Делать это надо при _не запущенном_ нетамсе. policy oid 013ECF name msgs target proto tcp port 25 110 5190
Service quota 0 storage 1 policy ip block-policy msgs^M notify soft owner notify hard owner notify return owner соответсвенно мы говорим нетамсу, чтобы сервис квот работал с БД, описанной в секции Service Storage
что делает политика объяснять вроде не надо. OID'ы, как и в предыдущих случаях можно выставлять принудительно или не выставлять вовсе.
Чтобы сделать квоту для пользователя активной можно использовать нетамсовый Admintool, но он глючный. лучше воспользоваться консолью:
telnet localhost 21000 (порт можно менять в конфигурационном файле) enable configure terminal service quota set OID/NAME active
далее set OID/NAME block-policy [имя fw-policy, которая будет выставляться при наступлении квоты] day [в день] in/out/both week [в неделю] in/out/both month [в месяц] in/out/both
Что происходит-квота становится активной для юнита HOST/OID, политика, по которой считается квота - ip, fw-policy, которая будет применена к юниту при привышении msgs. набежать по политике ip должно соот-но 300 мегабайт в меся входящего трафика. можно использовать модификаторы K M и G. Что происходит при срабатывании квоты: к юниту,указанному при настройке добавляется fw-policy msgs, т.е. разрешать ТОЛЬКО трафик по портам 110 25 и 5190.
после того как всё настроено стоит запустить нетамс и посмотреть, что он понял из того что мы написали. для этого нужно зайти в консоль и набрать show config (независимо от версии). В результате будет виден "рабочий конфиг", т.е. то что нетамс сумел разобрать и понять. если где-то несостыковки типа строк
policy oid #### name NAME
без всего, значит в правиле что-то не так. В результате всех этих манипуляций получается считалка, которая считает трафик и регулярно скидывает в /usr/local/www/stat (у 3.4.1 по умолчанию /usr/local/www/netams)
Если требуется(а зачастую требуется) детальный анализ логов кто куда ходил, то нужно включить механизм layer7. На сайте написано, что изначально сборка идёт с ключём -DLAYER7-FILTER. если в результате всех манипуляций не работает-можно попробовать пересобрать, принудительно выставив ключ. в секции Data Source дописать
layer7-detect urls
создать еще одну политику подсчёта трафика
policy hidden name urls target layer7-detect
hidden означает, что данные по этой статике не будут выводится сервисом html и добавить всем юнитам acct-policy urls или, если default acct-policy не задана, default acct-policy urls.
ВНИМАНИЕ! нетамс всё же не предназначен для выяснения кто куда ходил, статистика по url похожа на среднюю температуру по больнице. если нужна статистика кто куда ходил лучше использовать proxy.
вменяемый, в плане получения детальной статистики, скрипт можно скачать здесь :
http://www.controlstyle.ru/products/web/text/namonitor/ Есть еще nawt 2.6.0 (для 3.4.х) и 2.5.0 для 3.3.5 на сайте netams.com в архиве лежат различные скрипты на php для управления нетамсом и обработки полученных данных. nawt-2.5.0 (для версии 3.3.5) http://netamsadmin.sourceforge.net/...t-2.0.5b.tar.gz nawt-2.6.0 (для версии 3.4.0) http://netamsadmin.sourceforge.net/...wt-2.0.6.tar.gz отличный интерфейс http://www.it2k.ru/projects/netams-front/
На текущий момент у меня стата собирается через libpcap, netflow и divert. Если понаделал ошибок-пишите, я буду рад помочь.
Что еще...да, netams и transparent proxy. вопрос частый. у меня решен так:
01300 divert 199 ip from not 192.168.0.0/24 to any via em0 09000 divert 199 ip from 192.168.0.0/24 to any out xmit fxp0 09100 divert 199 ip from 192.168.254.0/24 to any out xmit fxp0 09500 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to not 192.168.0.254 dst-port 80,3128,8080,8101,8108 via fxp0 09600 fwd 127.0.0.1,3128 tcp from 192.168.0.0/21 to not 192.168.0.254 dst-port 80,3128,8080,8101,8108 via fxp0 10000 divert 8668 ip from any to any via fxp0 11000 divert 199 ip from any to 192.168.0.0/24 in via fxp0
upd:ссылка на netams-front поменяна на правильную сквид в режиме прозрачной прокси, работает уже года два. всё хорошо.Делал замеры Tmetrом-точность до 2 знака после запятой. распространение приветствую, сам в своё время намучался без толковой инфы.
Источник: http://www.liveinternet.ru/users/889466/ |