Документация по NetAms

Документация связанная с установкой, настройкой и работой пользовательского ПО
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service processor

Сообщение Raven » 13 май 2010, 13:17

service processor

Сервис processor описывает настройки ядра NeTAMS, которое и будет производить учет.

lookup-delay XXXX
определяет периодичность, с которой сервис processor будет просматривать список своих NetUnit, чтобы проверить время существования потоков и сбросить их в базу данных. Чем меньше это время, тем точнее идет "квантование" временных периодов, но тем больше нагрузка на программу. На размер базы данных не влияет.
XXX - время в секундах, по умолчанию 30.

flow-lifetime XXXX
определяет время жизни RAW потока. через указанное время поток обнуляется, а данные суммируются в статистику и записываются в базу. Чем меньше меньше это время, тем с большей точностью записаны данные в базу, но тем она и больше.
XXX - время в секундах, по умолчанию 300.

policy [oid OID] name NAME
[no] target TARGET
[bw { speed in speed out | speed } ]


определяет правило, или политику, по которой для данного объекта (NetUnit) будет производиться фильтрация или подсчет трафика.
oid OID - уникальный идентификатор политики, создается автоматически
name NAME - название политики виде строки (2-8 символов)
hidden - не отображать статистику для этой политики в выводе сервиса HTML (полезно для политики с target layer7-detect)
target TARGET - правило, по которому будет проводиться проверка соответствия политике.
Если перед target стоит флажок no, то указанный TARGET убирается из списка.
bw { speed in speed out | speed } - позволяет ограничивать входящий и/или исходящий трафик для данной fw политики по отношению к юниту по скорости. Ограничение начинает работать, если по данной fw политике было принято решение DROP. В этом случае пакет НЕ БУДЕТ отброшен, а ВМЕСТО этого он будет пропущен и на него будет проверяться проверка по скорости.
Параметр speed указывается в битах в секунду; можно применять множители K и M для указания килобит и мегабит. Если не указано направление in или out, подразумевается выставление одинакового лимита скорости на оба направления одновременно. Возможно также задать ограничение скорости напрямую для всего юнита, без политик (см. ниже). ВАЖНО! Чтобы ограничение скорости работало, необходимо пересобрать NeTAMS с включенной опцией HAVE_BW. Это делается так:

Код: Выделить всё

make distclean && FLAGS=-DHAVE_BW make
Опишем подробнее правила формирования цели (target) политики. Сами политики жестко определены в исходном коде программы и вкомпилированы в обработчик политик трафика. Возможны любые комбинации следующих типов:
proto XX - номер или имя протокола из файла /etc/protocols
tos XX - проверка на совпадения с полем TOS IP пакета
port [s|d|b]num [s|d|b]num ... - описывает TCP или UDP трафик на указанные порты. список портов - числа или диапозоны, отделенные пробелом.
если перед числом стоит буква s(ource) - совпадение происходит только если совпадает порт в поле SRC пакета, d(estination) - в DST пакета, отсутствие буквы или b(oth) - SRC или DST.
Ограничение на число элементов (отдельных портов или диапозонов) в списке - 10. Диапозоны задаются с помощью двоеточия или тире.
например: target proto tcp port 25 описывает весь SMTP (почтовый)трафик, target proto tcp port s80:82 s8080 примененная к клиентскому компьютеру (юниту), считает входящий веб-трафик.
as [s|d|b]num [s|d|b]num ... - описывает трафик по указанным AS. список AS - числа или диапозоны, отделенные пробелом.
если перед числом стоит буква s(ource) - совпадение происходит только если совпадает AS источника пакета, d(estination) - с номером AS получателя пакета, отсутствие буквы или b(oth) - SRC AS или DST AS.
Ограничение на число элементов AS в списке - 10, диапазоны задаются с помощью двоеточия или тире.
(Начиная с версии 3.3.0(2266))
vlan N1 [ N2 ] ... совпадает, если пакеты были инкапсулированы с VLAN-тэгом N, применимо к data-source libpcap
ds N1 [ N2 ] ... совпадает, если пакеты пришли от data-source номер N
units oid XXXX трафик, при том что другая сторона (по IP заголовку) является NetUnit с индексом XXXX
file YYYY совпадает, если другая сторона (по IP заголовку) совпадает с адресом из файла таблицы префиксов YYYY
Файл префиксов содержит записи в следующих форматах:
A.B.C.D /N или A.B.C.D /MASK или A.B.C.D/N или A.B.C.D/MASK
где:
  • A.B.C.D - адрес сети, например 10.1.1.0
    MASK - маска (255.255.255.0)
    N - количество единичных бит в сетевой маске, например 24 (255.255.255.0).
addr addr ... - ip адреса участники соединения.
ifindex [s|d|b]num [s|d|b]num ... - номера (индексы) интерфейсов в таблице роутинга. В настоящее время актуально только для netflow данных.
ingress|egress - способ сбора netflow информации на роутере. В настоящее время актуально только для netflow v9 данных.
policy-or [!]{NAME|OID} ... [!]{NAME|OID} - политика совпадет, если совпадет проверка ЛЮБОЙ из перечисленных политик. Флажок ! означает инвертирование проверки к которой он относится.
policy-and [!]{NAME|OID} ... [!]{NAME|OID} - политика совпадет, если совпадет проверка ВСЕХ из перечисленных политик. Флажок ! означает инвертирование проверки к которой он относится.
time timespec - совпадает, если пакет пришел в указанный временной интервал timespec. Это строка, содержащая диапазон времени в часах:минутах (24-часовая схема), при этом нулевые минуты можно пропускать:

Код: Выделить всё

target time 9-18
target time 00:40-21:30 
day dayspec - совпадает, если пакет пришел в день недели, указанный в dayspec. Это строка, содержащая трехбуквенное название дня недели, или диапазон дней:

Код: Выделить всё

target day Mon-Fri
target day Sun
default { acct-policy | fw-policy } NAME|OID ... NAME|OID
Задает политики подсчета|фильтрации по умолчанию для всех вновь создаваемых юнитов.

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.

auto-assign A.B.C.D E.F.G.H
Регистрирует диапазон адресов, начиная с A.B.C.D и заканчивая E.F.G.H в качестве пула для автоматического присваивания IP-адресов вновь создаваемым юнитам. При этом юнит создается при помощи команды:
unit {host|user} name XXX ip auto
В таком случае для всех зарегистрированных диапазонов auto-assign проверяются уже существующие юниты типа user или host, имеющие IP-адреса из заданного диапазона, и назначается следующий незанятый адрес (он выводится в ответ на команду создания). Таким образом, скрипт создания аккаунтов-юнитов может "создавать" новые юниты сам, а адреса присваиваются в автоматическом режиме.
Возможно создание нескольких пулов. В этом случае проверка и выделение IP происходит в порядке следования auto-assign.

auto-units N type {host|user} naming {by-dns| prefix1 PPP |prefix2 QQQ}
[group GROUPNAME]

Позволяет автоматически создавать юниты при получении пакетов, принадлежащих некоторой сети, и отсутствии соответствующего юнита в конфигурационном файле. При этом имя юниту генерируется через DNS, или на базе IP-адреса.
N - номер записи auto-units
type host или type user - тип создаваемого юнита
naming - как будет присваиваться имя:
  • by-dns - имя будет определяться через DNS, который должен у вас быть уже настроен и обеспечивать обратное преобразование адресов
Если имя не получено, то в качестве имени будет использоваться IP адрес.

Код: Выделить всё

[b]prefix1 PPP [/b]- будет взят последний октет адреса, и спереди перед ним поставлена строчка PPP
      [b]prefix2 QQQ [/b]- будут взяты два последних октет адреса, и спереди перед ними поставлена строчка QQQ 
group GROUPNAME - в какую группу помещать созданный юнит (необязательно)(версии начиная с 17 марта 2004).

unit {host|group|cluster|net|user}
[oid OID]
name NAME
parameters
[parent GROUP]
[no-local-pass]
[email addr]
[password passwd]
[description "any describing words"]
[mac "XX:XX:XX:XX:XX:XX"]
[sys-XXXX]
[bw { speed in speed out | speed } ]
[nodefault] [ap-nodefault] [fp-nodefault]
[acct-policy [!][%]p_name [p_name] ...]
[fw-policy [!][%]p_name [p_name] ... ]
[ds-list 1,2,3...]
[auto-units X]

определение объекта (NetUnit) по которому будет проводиться контроль и учет.
Тип:
host - хост, только один IP адрес
group - группа (возможно пустая)
cluster - хост с несколькими ip-адресами (кластер)
net - подсеть, которая определяется сетевым адресом и маской
user - аналог типа хост, используется для динамического задания ip адресов и привязке к пользователям
oid OID - уникальный идентификатор сетевой единицы, создается автоматически
name NAME - название объекта в виде строки (2-8 символов)
parameters - специфические для данного типа объекта параметры:
  • для хоста: ip A.B.C.D - адрес этого хоста
    для группы: нет
    для кластера: ip A.B.C.D [ip A.B.C.E [..]] - список адресов
    для подсети: ip A.B.C.D mask E.F.G.H - сетевой адрес и маска
    для пользователя: ip A.B.C.D - адрес с которого работает пользователь
parent GROUP[GROUP1 [..]] - название родительских для данного объекта групп
no-local-pass - при указании этого флага ip-пакет, совпавший с этим юнитом, не будет считаться локальным, к нему применится политика фильтрации restrict all, а не restrict local (полезно для подсетей)
email addr - адрес электронной почты ответственного за этот юнит человека
password passwd - пароль для данного юнита. Может использоваться как для авторизации (unit user), так и для просмотра статистики, если включен htaccess yes в сервисе html.
description "any describing words" - описание юнита, может содержать пробелы и русские буквы (в кавычках).
mac "XX:XX:XX:XX:XX:XX" - задает аппаратный Ethernet-адрес (MAC-адрес) юнита типа USER или HOST. Используется для проверки соответствия (mac-control ...) и RADIUS-авторизации.
sys-{allow|deny}-XXX - т.н. "системная политика", возможные значения:
sys-allow - разрешить все, те снять все запреты
sys-deny - запретить все, остальные запреты тоже остаются
sys-{deny|allow}-ACTION - запретить|разрешить действие ACTION(auth, block, login, money, quota, mac)
возможна комбинация нескольких подобных политик.
sys-deny-OID - запретить работу с юнитом OID вне зависимости от других ограничений
sys-allow-OID - разрешить работу с юнитом OID вне зависимости от других ограничений
bw { speed in speed out | speed } - позволяет ограничивать входящий и/или исходящий трафик для данного юнита по скорости. Параметр speed указывается в битах в секунду; можно применять множители K и M для указания килобит и мегабит. Если не указано направление in или out, подразумевается выставление одинакового лимита скорости на оба направления одновременно. Возможно также задать fw-политику ограничения скорости (см. выше). ВАЖНО! Чтобы ограничение скорости работало, необходимо пересобрать NeTAMS с включенной опцией HAVE_BW. Это делается так:

Код: Выделить всё

make distclen && FLAGS=-DHAVE_BW make
nodefault, ap-nodefault, fp-nodefault - отменяет, для данного юнита, политики по умолчанию (все, acct-policy или fw-policy, соответственно)
acct-policy [!][%]p_name - разделенный пробелами список политик учета трафика для данного объекта
! - Если вы ставите восклицательный знак перед именем политики (без пробела), например !all-icmp, то совпадение/несовпадение данной политики применительно к пакету будет ИНВЕРТИРОВАНО, т.е. в данном случае будет учитываться ВЕСЬ НЕ-ICMP трафик.
% - Если вы ставите знак процента при указании политики acct-policy, это значит , что при совпадении данной политики для пакета, дальнейший просмотр списка политик прекращается и подсчет заканчивается.
fw-policy [!][%]p_name - разделенный пробелами список политик фильтрации трафика для данного объекта
Для версий netams 3.1.xx, 3.2.xx и 3.3.xx до build 2117:
! - Если вы ставите восклицательный знак перед именем политики (без пробела), например !all-icmp, то совпадение/несовпадение данной политики применительно к пакету будет ИНВЕРТИРОВАНО, т.е. в данном случае будет пропускаться ВЕСЬ НЕ-ICMP трафик.
% - Если вы ставите знак процента при указании политики fw-policy, это значит что при совпадении данной политики для пакета дальнейший просмотр списка политик прекращается, и вердикт пропускать/не пропускать пакет будет сделан сразу же.
Для версий netams 3.3.xx после build 2117, в частности 3.3.0-release и далее:
Перечисляются политики, трафик которых нужно пропускать. Все остальное будет заблокировано. Можно также указать политику ограничения скорости (которая имеет target... bw XX). Флаги [!][%] сохраняют свое действие, но их применение не имеет особого смысла.

ds-list no,[no,no,...] - список источников данных, которые будут связаны с этим сетевым объектом
auto-units X - номер записи auto-units в сервисе processor, согласно которой будут автоматически создаваться учетные записи для новых хостов в сети. Этот параметр применяется только к юниту типа net. Подробнее об этой функции можно прочитать здесь.


access-script path
устанавливает имя скрипта, который будет использоваться для блокировки трафика. полезно для систем, использующих не data-source ip-filter, а другие механизмы.
path - полный путь до скрипта
например:
access-script "/usr/home/anton/script.pl"
при этом скрипт имеет вид:

Код: Выделить всё

#!/usr/bin/perl -w
print shift, " ", shift, " ", shift, " ", shift, "\n";
При наступлении события отключения-включения сервис processor вызывает его с параметрами:
  • Действие(DENY|ALLOW)
    Идентификатор_юнита(OID)
    IP(IP)
    Причина(QUOTA|LOGIN|...)
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service storage

Сообщение Raven » 13 май 2010, 13:19

service storage

type { hash | mysql | postgres | oracle | radius}
Определение типа базы данных:
hash
UNIX hash (файлы .db). Есть только учета трафика (нет квот, логинов и биллинга, т.е. только таблицы RAW/SUMMARY). Не рекомендуется для массового применения. Вы должны раскомментировать соответствующую строку -DUSE_HASH в файле addon/Makefile.common и пересобрать программу через make distclean && make
mysql
MySQL (www.mysql.com). Поддерживаются версии 4.0.ХХ, 4.1.ХХ и 5.ХХ
postgres
PostgreSQL (www.postgresql.com). Поддерживаются версии 7.4.ХХ.
oracle
Oracle (www.oracle.com). Работа с базой ведется через OCI (фактически, любые версии базы).
radius
Сбрасывание статистики RADIUS-серверу, только на запись, только данные RAW. Для Linux необходимо наличие в системе пакета openssl-devel (или аналогов содержащих md5.h).
path XXX
Определяет каталог в системе, где будут создаваться и храниться файлы базы данных при использовании hash в качестве хранилища данных. при использовании MySQL/PostgreSQL не имеет смысла.

user username
Имя пользователя для подключению к MySQL/PostgreSQL. по умолчанию root

password password
Пароль для подключения к MySQL/PostgreSQL, по умолчанию отсутствует

host hostname
Имя хоста где установлен MySQL/PostgreSQL

dbname database_name
Имя базы данных, по умолчанию "netams"

socket sock_name
Имя UNIX-сокета для общения NeTAMS с SQL-сервером. По умолчанию общение идет через TCP-порт и сокет не используется.

port XXX
Номер TCP-порта, через который идет соединение с MySQL/PostgreSQL. Также номер UDP-порта на котором слушает RADIUS-сервер

retry XXX
Только для RADIUS: Количество повторов посылки accounting-пакета.

timeout XXX
Только для RADIUS: Время ожидания подтверждения получения accounting-пакета.

nas-ip A.B.C.D
Только для RADIUS: IP-адрес (этого) сервера, который подставится в атрибут NAS-IP-Address отсылаемого accounting-пакета. Нужно, если интерфейсов на сервере много, и хочется выбрать один. Без этой команды в качестве адреса подставится то, что первым вернет системная функция gethostbyname(gethostname()).

accept { all | type ... } [except type ...]
Определяет, какие типы сообщений и какие сервисы будут работать с этим хранилищем. Таким образом, отпадает необходимость указывать тип хранилища в конфигурации каждого сервиса. Возможные типы (type) следующие:
raw summary monitor login quota events oids billing bdata config
Есть специальный тип all, который задан по умолчанию и определяет все типы данных вместе. Можно выборочно исключить один или несколько типов, написав all except type ...
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service data-source

Сообщение Raven » 13 май 2010, 13:31

service data-source

type { ip-traffic | netflow | libpcap | netgraph | raw }
Задает тип источника данных
ip-traffic
данные берутся путем перехвата ip-пакетов из ядра через divert socket (FreeBSD) или netfilter (Linux 2.4.x)
netflow
данные о прошедшем трафике приходят от маршрутизатора Cisco, отдающего поток информации в пакетах NetFlow, или от любого другого коллектора, поддерживающего NetFlow v.5 (ulog2netflow, ipfw2netfloe, flowprobe)
libpcap
данные берутся путем перехвата пакетов с помощью библиотеки libpcap, которая копирует в программу проходящие через ядро системы определенные пакеты. так же работает, например, tcpdump. Смотри этот раздел.
netgraph
данные передаются от установленного модуля ядра. Только для FreeBSD 5.xx. Смотри этот раздел.
raw
данные передаются от произвольного источника (например коммутатор Cisco или сервер Radius) и учитываются через команду rawdata .

source { tee XXX | divert XXX | ipq | ulog NL1 [NL2 ... NL32] |
A.B.C.D | ifname [promisc] | nodename [divert] }

Задает источник данных:
Для FreeBSD
tee XXX
пакеты будут копироваться в программу и параллельно обрабатываться системой, номер divert-порта XXX
divert XXX
пакеты будут заворачиваться в программу и она может отдать или не отдать их системе обратно, номер divert-порта XXX
nodename [divert]
установится соединение с модулем NETGRAPH ядра nodename. Параметр divert указывает на необходимость проводить авторизацию потока перед его пропусканием. Смотри этот раздел.
Для Linux
Необходимо наличие в системе netfilter.
Подробнее можно прочитать man iptables и на сайте www.netfilter.org
ipq
пакеты будут заворачиваться в программу и она может отдать или не отдать их системе обратно. Используется библиотека libipq.
Для работы должен быть загружен модуль ip_queue (modprobe ip_queue). Чтобы активировать передачу пакетов из ядра, необходимо задать это в firewall, например командой:
iptables -A FORWARD -j QUEUE ...
ulog NL1 [NL2 ... NL32]

пакеты будут копироваться в программу и параллельно обрабатываться системой, NLx определяет номера мультикаст групп в которых программа будет слушать пакеты отправляемые через ULOG.
Чтобы активировать передачу пакетов из ядра, необходимо задать это в firewall, например командой:
iptables -A FORWARD -j ULOG --ulog-nlgroup NLx ...
nlgroup NLx должно быть в границах 1-32
Общие
A.B.C.D
поток NetFlow будет идти с хоста (маршрутизатора) с IP-адресом источника A.B.C.D на локальный UDP-порт 20001 или тот, который будет указан в команде listen
ifname [promisc]
имя локального сетевого интерфейса, на котором будут захватываться проходящие пакеты
Если указан флаг promisc, то интерфейс будет помещен в promisc mode. По умолчанию - не указан.

listen { 0 | ip } port_number
Задает IP адрес и UDP-порт, на который будут приниматься пакеты NetFlow от источника информации о трафике (коллектора).

clock { remote | local }
Указывает, какое значение текущего времени создания пакета использовать для занесения информации в базу - локальное или указанное в NetFlow-сообщении.

layer7-detect { none | urls }
Включает механизм определения ссылок (URL) в трафике, проходящем через этот сервис data-source. Допустимые значения "none" (выключено) или "urls". Во втором случае, первые несколько пакетов в потоке на порты назначения 80, 81, 8080, 8000, 3128 будут проанализированы на предмет поиска полей Host: и GET. Эта информация может быть учтена через сервис мониторинга (новое поле layer7 в таблице monitor).

rule ID rule_string
Задает системное правило, по которому данные будут попадать в программу:
ID
номер правила, для Linux не имеет смысла т.к. правила ставятся в конец цепочки
rule_string
правило в виде текстовой строки, которое будет передано системе (Linux или FreeBSD) для установки перехватчика пакетов.

no rule ID
Отменяет правило с номером ID.
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service alerter

Сообщение Raven » 13 май 2010, 13:42

service alerter

Сервис alerter занимается рассылкой информации о статистике и о работе системы по почте

report [oid 06100] name rep1 type traffic period day detail simple

Не настраиваемый в настоящее время параметр отправки сообщений. В дальнейшем здесь будет возможно управлять форматом отсылаемого сообщений (например, выбор шаблона, языка) и прочее. Номер отчета по умолчанию, OID=06100, сейчас используется для отправки стандартных сообщений о трафике.

smtp-server smtp_server_name

smtp_server_name задает имя или IP-адрес почтового сервера, через который отправится почта. NeTAMS (сервис alerter) будет устанавливать прямое соединения по TCP-порту 25 на указанный адрес (хост) и использовать протокол SMTP для формирования и отправки письма. Если у вас работает локальный почтовый сервис на той же машине, где и NeTAMS, укажите:

Код: Выделить всё

smtp-server localhost
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service html

Сообщение Raven » 13 май 2010, 13:44

service html

Сервис html позволяет автоматически создавать статические HTML-страницы с отчетами о трафике и о работе программы

run time_interval
Интервал времени, в формате задачи планировщика, через который будет выполняться генерация страниц. Рекомендуется ставить time_interval равным "hourly-", т.е. страницы будут создаваться за 10 секунд до окончания каждого часа, и содержать статистику об этом часе.

path /path/to/html/root
Путь до каталога в локальной файловой системе, в котором будет создаваться дерево файлов со статистикой. Например:

Код: Выделить всё

path /usr/local/www/data/stat/
url url_string
URL (веб-адрес) начальной страницы со статистикой, будет использоваться при построении ссылки на статистику пользователя, присылаемую в ему отчете по электронной почте сервисом quota. Например,

Код: Выделить всё

url http://stat.company.ru/traffic/
servlet-url url_string
URL (веб-адрес) сервлета Java, который будет отображать табличное представление статистики для юнита. Например:

Код: Выделить всё

servlet-url http://stat.company.ru:8010
htaccess { yes | no }
Включает и выключает механизм автоматической защиты каталогов с помощью файлов .htaccess и .htpassword. При этом используются пароли администратора NeTAMS (те, которые задаются в "user... crypted..." в начале конфигурационного файла и собственно пароли на юниты ("unit ... password ..."). При этом администратору доступны любые подкаталоги веб-дерева, а пользователям - только их собственные.

client-pages { all | groups | none | group GG1 GG2 ... }
Показывает, будут ли создаваться клиентские страницы для веб-представления статистики:
all - будет создаваться все
groups - только общая статистика и статистика подкаталоги для юнитов типа "группа"
none - только общая статистика
group GG1 GG2 ... - клиентские статистики только для перечисленных групп и содержащихся в них юнитах (не рекурсивно). Чтобы добавить или удалить группу в списке, необходимо дать команду с новым списком полностью. (версии начиная с 17 марта 2004).
account-pages { all | none }
Показывает, будут ли создаваться общий подкаталог и подкаталоги в нем для аккаунтов сервиса billing. При использовании сервиса биллинга наиболее оптимальным будет сочетание:

Код: Выделить всё

client-pages none
account-pages all
display-top N
Включает механизм генерации статических страниц, показывающих TOP N (N - число, желательно порядка 10) потребителей трафика (юниты типа USER и HOST) для периодов времени с начала часа, дня, недели и месяца.

display-health { yes | no }
Включает и выключает механизм автоматического отображения "здоровья" системы (аналогично show health), т.е. свободного места на жестком диске и загрузки процессора. По умолчанию-выключено.
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service monitor

Сообщение Raven » 13 май 2010, 13:45

service monitor

Сервис monitor позволяет осуществлять запись данных из заголовков пакетов, относящихся к указанным юнита. При этом в базе данных сохраняется не только информация о локальном источнике-получателе пакета, размере и времени, но и об удаленной стороне. Таким образом, становится возможным узнать не только то, КТО качал, а ОТКУДА качал. Начиная с версии NeTAMS 3.2, информация о трафике поставляется сервисами data-source уже в суммированном, агрегированном по локальному адресу виде (потоки), поэтому ПОПАКЕТНЫЙ мониторинг невозможен. Вместе с тем, такое поведение позволяет СУЩЕСТВЕННО сэкономить место в базе данных.

monitor to { storage N | file XXXX | xmlfile XXXX | netflow IP PORT}
Задает направление вывода информации о мониторинге. Мониторинг позволяет собирать в текстовом файле или базе данных информацию о каждом IP-пакете или NetFlow-записи, обработанной NeTAMS. Эту детальную информацию можно затем отфильтровать для составления специфических отчетов
storage N
идентификатор SQL-хранилища, куда пойдет запись
file XXXX
имя (путь) до текстового файла с выводом мониторинга
file XXXX
имя (путь) до текстового файла с выводом мониторинга в XML формате
netflow IP PORT
IP и порт на который будут отслыаться netflow v5 данные
(начиная с версии 3.4.0)
monitor unit { N | XXXX }
Определяет юнит, который необходимо мониторить
N идентификатор (OID) юнита
XXXX - имя юнита
no monitor unit { N | XXXX }
Отменяет мониторинг указанного юнита

no monitor to ...
Отменяет мониторинг в указанный получатель

show monitor
Отображает текущее состояние мониторинга, смотри здесь.

Начиная с версии 3.4.0 добавлена возможность мониторить в одном сервисе monitor сразу в несколько получателей. И остутвует ограничение на число сервисов monitor, которые могут мониторить один юнит.
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service quota

Сообщение Raven » 13 май 2010, 13:57

service quota

Основные свойства:
  • Хранение информации о квотах клиентов в базе SQL. В настоящий момент поддерживается MySQL и Postgres.
    Возможность задания политики учета (контроля), параметров оповещения по умолчанию.
    Возможность задания всех параметров квот по трафику индивидуально для каждого юнита. Это величины входящего, выходящего и суммарного трафика начиная с момента начала часа, дня, недели и месяца.
    Возможность задания порога "мягкого срабатывания" в процентах от "жесткой" квоты индивидуально для каждого юнита.
    Возможность гибкого управления параметрами оповещения при срабатывании и возвращении квоты.
Первоначальную настройку необходимо провести при неработающем демоне NeTAMS.

Допустим, что данные уже хранятся в базе данных MySQL, определенной в сервисе data-source с номером 2:

Код: Выделить всё

	service data-source 2
	type mysql
Для работы сервиса quota необходимо будет указать номер сервиса-хранилища данных:

Код: Выделить всё

	service quota 0
	storage 2
После этих операций запустите NeTAMS. Все остальные настройки можно выполнить при работающей программе. Проверить, работает ли сервис, можно:
  • Просмотром лог-файла программы
    Просмотром списка таблиц SQL-базы NeTAMS: mysqlshow netams (должна появиться таблица "quota")
    Подключившись к программе через telnet-интерфейс и выполнив команду show quota
Для настройки параметров сервиса quota необходимо подключиться к программе через telnet-интерфейс, перейти в режим настройки сервиса командой

Код: Выделить всё

	service quota 0
и набором команд. Все команды делятся на две части: команды настройки собственно сервиса (они сохраняются в конфигурационном файле) и команды, вызывающие настройку параметров квот отдельных юнитов (они находят отражения в SQL-таблице).

policy XXX
Задает политику учета (acct-policy), которая будет использоваться при проверке квот. Это политика по умолчанию для всех, существует возможность переопределить ее для конкретного юнита. Если не указано, используется первая политика из определенных policy XXX сервиса processor.

block-policy XXX
Задает политику блокировки (fw-policy), которая будет добавляться к набору политик блокировки юнита при превышении квоты. Это политика по умолчанию действует на все юниты, существует возможность переопределить ее для конкретного юнита. При отсутствии этой команды будет использоваться только механизм sys-deny-quota. Про "направление действия" смотрите этот документ.

ВАЖНО!
Появление этой команды потребовало изменения схемы таблицы QUOTA в базе данных. Если вы проводите "чистую" инсталляцию NeTAMS или можете себе позволить удалить существующую таблицу QUOTA, написанное далее вас не касается. Если вы проводите обновление с версии 3.2.0, 3.2.1 или STABLE до 10.02.2005, необходимо вручную модифицировать схему БД. Для этого достаточно выполнить следующие SQL-команды:

Код: Выделить всё

alter table quota add column block_policy INT default 0;
alter table quota add column block_policy_flags INT default 0;
soft-treshold N
Задает порог срабатывания "мягкой квоты" для юнита, в процентах от "жесткой квоты". Ранее размер мягкой квоты можно было указывать независимо для каждого типа квоты (например "входящий в день, исходящий в неделю"), теперь это значение одно. По умолчанию определено в src/netams.h (S_QUOTA_DEF_soft_treshold) и равно 80%. Допустимые значения от 0 до 100, значок "%" ставить не нужно. Значение "0" отключает "мягкие квоты" совсем.

delay N
Интервал времени между периодическими проверками всех юнитов на наступление момента срабатывания квоты. Задается в секундах. По умолчанию значение 10 сек., которое объявлено в в src/netams.h (S_QUOTA_DEF_delay).

storage N
Номер сервиса storage, в котором будет создана и использоваться таблица quota. Этот параметр нельзя указывать (изменять) при работающей программе.

set {name XXX | oid YYY}
[policy XXX]
[block-policy XXX]
[soft-treshold N]
[active|inactive]
[notify [{soft|hard|return} {"{none}"|["{owner}"] [YYY]}]]
[hour ... ]
[day ...]
[week ...]
[month ..
.]

Задает конкретные настройки для юнита. Параметры policy, soft-treshold и notify переопределяют те, которые заданы глобально для сервиса в целом. Вызов этой команды приводит к изменению записи в таблице quota SQL-сервера, но не отражается в конфигурационном файле.
name XXX | oid YYY}
Задает имя или OID юнита, с которым производится работа. Это единственный обязательный параметр.
policy XXX
Определяет политику учета (acct-policy), которая будет использоваться при проверке квоты для данного юнита. Задается по имени политики.
block-policy XXX
Определяет политику блокировки (fw-policy), которая будет применяться к юниту при превышении квоты. Задается по имени политики.
soft-treshold N
Задает конкретное значение порога "мягкой квоты" для данного юнита, в процентах от "жесткой квоты". Значение "0" отключает "мягкую квоту" для данного юнита совсем. Допустимый диапазон значений от 0 до 100.
active|inactive
Включает и выключает обработку квот для данного юнита. Вы можете временно выключить обработку, при этом все настройки для юнита останутся в базе данных. Полезно для "экстренного включения клиента обратно".
notify {при_условии} {кого}
Определяет, кому будут отсылаться почтовые сообщения о наступлении событий, связанных с данным юнитом.
Условие ({при_условии}) - это одно из событий:

Код: Выделить всё

    [b]soft [/b]- произошло переполнение "мягкой" квоты. Необходимо предупредить пользователя, не отключая его.
    [b]hard[/b] - произошло переполнение "жесткой" квоты. Необходимо предупредить пользователя о том, что он отключен, и отключить его.
    [b]return[/b] - по прошествии времени (например, начался новый месяц) пользователь должен быть включен и оповещен об этом.
Получатель ({кого}) - персона, которую оповещать. Оповещены о наступлении события могут быть и/или собственно владелец юнита (при условии что юнит имеет тип user и для него установлен параметр email), а также один из заведенных в программе пользователей (user), например сам администратор сети. Возможные значения:
{owner} - владелец юнита
username - имя или OID пользователя (администратора).
Примеры (предположим ранее определено user name admin email root@localhost ):

Код: Выделить всё

notify soft {owner}
notify hard {owner} admin
notify return admin
[hour ... ], [day ...], [week ...], [month ...]
Задает значения квот на период времени. Формат:

Код: Выделить всё

    time_spec amount {in|out|sum}
,
где timespec={hour|day|week|month}, amount - значение квоты (в байтах, но можно использовать модификаторы K, M, G), {in|out} - направление квотируемого трафика, {sum} - суммарный трафик (в обоих направлениях). Если необходимо сбросить значение квоты для определённого направления, то надо задать её равной 0. Например:

Код: Выделить всё

set name user1 month 0 in
В этом случае будет сброшена месячная квота на входящий трафик.
Значения параметров по умолчанию можно поменять в соответствующей секции файла src/netams.h и последующей полной пересборкой программы (make clean; make). Ниже приведен их список:

Код: Выделить всё

#define S_QUOTA_DEF_soft_treshold 80
#define S_QUOTA_DEF_delay 10
#define S_QUOTA_DEF_notify_soft 1
#define S_QUOTA_DEF_notify_hard 1
#define S_QUOTA_DEF_notify_return 1
Исполнение команд вида set ... приводят к модификации внутренних структур программы (точнее, заполнению полей структуры u->quotadata юнита u), а также к модификации таблицы quota текущей указанной SQL-базы данных. Как обычно, если такой таблицы не существует, она создается автоматически при первом запуске. Формат таблицы можно посмотреть через вызов команды mysqlshow netams quota. Не пытайтесь редактировать SQL-таблицу quota извне своими программами. Все записи должны вноситься скриптами или вручную через telnet-интерфейс программы (команда set).

Ниже приведен пример применения сервиса контроля квот для небольшой сети. Постановка задачи следующая:
  • Сеть построена на маршрутизаторе FreeBSD 4.7 / NeTAMS 3.1(2176)
    Локальная сеть объединяет порядка 10 компьютеров с адресами 192.168.0.X
    Ряду компьютеров необходимо организовать квоты на выход в Интернет, порядка 3 Мб входящего трафика в день и 100М в месяц.
    Необходимо отправлять оповещения о наступлении мягкой квоты (75%), жесткой квоты и возвращения доступа пользователям, жесткой квоты - администратору.
    Учитывать необходимо только HTTP-трафик.
Ниже приведен полный конфигурационный файл NeTAMS:

Код: Выделить всё

debug none
user oid 01327B name admin real-name Konstantin email AAA@mail.ru permit all
schedule oid 08FFFF time hourly- action html

#services configuration

service server 0
login any
listen 20001
max-conn 6

service processor 0
lookup-delay 20
flow-lifetime 60
policy oid 146633 name all-ip target proto ip 
policy oid 147C83 name http target proto tcp ports 80 8080 81 3128 443 
restrict all pass local pass
unit group oid 0574B0 name LAN acct-policy all-ip 
unit group oid 05431B name WAN acct-policy all-ip 
unit host oid 021949 name server ip 192.168.0.1 acct-policy all-ip 
unit host oid 02238E name Andrew ip 1.3.168.142 acct-policy all-ip http
unit net oid 0446E8 name local ip 192.168.0/24 acct-policy all-ip 
unit net oid 043D1B name all ip 0.0.0.0 mask 0.0.0.0 acct-policy all-ip 
unit host oid 02507E name 02 ip 192.168.0.10 acct-policy all-ip http 
unit host oid 022EB1 name 03 ip 192.168.0.11 acct-policy all-ip http 
unit host oid 0241B7 name 07 ip 192.168.0.12 acct-policy all-ip http
unit host oid 0279E2 name 09 ip 192.168.0.13 acct-policy all-ip http
unit host oid 027545 name 11 ip 192.168.0.14 acct-policy all-ip http
unit host oid 02515F name 12 ip 192.168.0.15 acct-policy all-ip http
unit user oid 025BD0 name 13_1 ip 192.168.0.16 
	email user08@a.ru acct-policy all-ip http
unit host oid 021220 name 14 ip 192.168.0.17 acct-policy all-ip http
unit user oid 024DB1 name 13_2 ip 192.168.0.18 
	email user09@a.ru acct-policy all-ip http
unit host oid 020216 name 16 ip 192.168.0.19 acct-policy all-ip http
unit host oid 021F16 name 17 ip 192.168.0.20 acct-policy all-ip http
unit host oid 021190 name 50_1 ip 192.168.0.21 acct-policy all-ip http
unit host oid 0266EF name Localnet ip 192.168.0.22 acct-policy all-ip http
unit host oid 02140E name TPSO-1 ip 192.168.0.23 acct-policy all-ip http
unit host oid 023352 name TPSO-2 ip 192.168.0.24 acct-policy all-ip http
unit host oid 02109C name 07-2 ip 192.168.0.25 acct-policy all-ip http
unit host oid 020DED name 19 ip 192.168.0.26 acct-policy all-ip http
unit user oid 027FDC name 15_1 ip 192.168.0.27 
	email user05@a.ru acct-policy all-ip http
unit user oid 021BEF name 15_2 ip 192.168.0.28 
	email user02@a.ru acct-policy all-ip http
unit user oid 0241A7 name 15_3 ip 192.168.0.29 
	email user04@a.ru acct-policy all-ip http
unit user oid 026B68 name 15_4 ip 192.168.0.30 
	email user06@a.ru acct-policy all-ip http
unit host oid 024E6A name 08_1 ip 192.168.0.31 acct-policy all-ip http
storage 1 all

service storage 1
type mysql

service quota 0
policy http
soft-treshold 75
notify soft {owner} 
notify hard {owner} admin
notify return {owner} 
storage 1

service data-source 1
type ip-traffic
source divert 199
rule 5 "ip from any to any via rl0"

service alerter 1
report oid 06100 name rep1 type traffic period day detail simple
smtp-server localhost

service html 1
path /home/www/traffic
language en
run hourly
После установки этого конфигурационного файла необходимо внести в NeTAMS/SQL реальные значения для параметров квот пользователей. Очень подходит для этого утилита netamsctl из дистрибутива :

Код: Выделить всё

netamsctl "service quota 0 && set name 12 day 3M in month 150M in && exit"
netamsctl "service quota 0 && set name 13_1 day 3M in month 100M in && exit"
netamsctl "service quota 0 && set name 13_2 day 3M in month 100M in && exit"
netamsctl "service quota 0 && set name 15_1 day 3M in month 100M in && exit"
netamsctl "service quota 0 && set name 15_2 day 3M in month 120M in && exit"
netamsctl "service quota 0 && set name 15_3 day 3M in month 100M in && exit"
netamsctl "service quota 0 && set name 15_4 day 3M in month 100M in && exit"
Набирая эти команды в командной строке NeTAMS вызывается запись соответствующих параметров в базу SQL, конфигурационный файл не меняется и команду save исполнять не надо. Вы также можете настроить и использовать веб-интерфейс Admintool для управления квотами.
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service login

Сообщение Raven » 13 май 2010, 14:01

service login

Начиная с сентября 2002 года в дистрибутив программного комплекса NeTAMS был включен сервис weblogin и соответствующий набор скриптов для управления процедурами доступа пользователей через веб-интерфейс. Хотя подобный инструментарий и пользовался популярностью, он был далек от совершенства. Так, настройка этого средства для большой сети требовала значительный усилий и увеличению размера конфигурационного файла. В результате, благодаря многочисленным пожеланиям пользователей, механизм авторизации решено было изменить. При этом был написано новый сервис, а не переделан старый. Новый сервис называется login.

Основные свойства:

Код: Выделить всё

Хранение информации о доступе клиентов в базе SQL. 
Возможность задания персональных значений таймаута неактивности и абсолютного таймаута. При этом оба эти значения могут быть равны нулю (таймауты не действуют), а сервис будет заниматься исключительно авторизацией. 
Наличие значений таймаутов по умолчанию, и установка граничных значений. Пользователь может иметь возможность менять значения самостоятельно (в то время как скрипт для того еще не написан) 
Перенос блокировки из сферы системных политик на отдельный уровень, что позволит одновременно использовать сервисы login и quota 
Поддержка типа юнита unit user, что дает возможность "роуминга" пользователей, т.е. авторизации с любой машины в сети при привязке статистики не к IP-адресу, а к пользователю. 
Первоначальный запуск сервиса login при работающей программе невозможен. Вам необходимо вручную изменить конфигурационный файл и перезапустить NeTAMS. Допустим, что данные уже хранятся в базе данных MySQL, определенной в сервисе data-source с номером 2:

Код: Выделить всё

	service data-source 2
	type mysql
Для старта сервиса login необходимо будет указать номер сервиса-хранилища данных:

Код: Выделить всё

	service login 0
	storage 2
После этих операций запустите NeTAMS. Все остальные настройки можно выполнить при работающей программе. Проверить, работает ли сервис, можно:
  • Просмотром лог-файла программы
    Просмотром списка таблиц SQL-базы NeTAMS: mysqlshow netams (должна появиться таблица `login')
    Подключившись к программе через telnet-интерфейс и выполнив команду show config
Команды настройки сервиса login, которые сохраняются в конфигурационном файле, приводят только к установке соответствующих параметров сервиса, но не более. Собственно для обеспечения авторизации отдельных клиентов необходим отдельный набор команд, которые задаются в контексте все в том же сервисе login. Вся информация о паролях пользователей и их правах доступа и значениях таймаутов хранится в SQL-таблице login. Ее формат приведен ниже:

Код: Выделить всё

+------------------+------------------+------+-----+---------+-------+
| Field            | Type             | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+-------+
| unit_oid         | int(10) unsigned |      | PRI | 0       |       |
| password         | varchar(32)      | YES  |     | NULL    |       |
| inact            | int(10) unsigned | YES  |     | NULL    |       |
| abs              | int(10) unsigned | YES  |     | NULL    |       |
| last_changed     | int(10) unsigned | YES  |     | NULL    |       |
| last_opened_time | int(10) unsigned | YES  |     | NULL    |       |
| last_opened_ip   | int(10) unsigned | YES  |     | NULL    |       |
| last_opened_mac  | varchar(18)      | YES  |     | NULL    |       |
| def_state        | int(11)          | YES  |     | NULL    |       |
| curr_state       | int(11)          | YES  |     | NULL    |       |
+------------------+------------------+------+-----+---------+-------+
unit_oid - Идентификатор (OID) юнита, является уникальным ключом к базе данных
password - Пароль пользователя. Никогда не пытайтесь поменять его извне программы путем прямой записи в SQL.
inact - Величина таймаута неактивности для данного пользователя
abs - Величина абсолютного таймаута для данного пользователя
last_changed - Время (в формате UNIXTIME) последнего изменения записи
last_opened_time - Время (в формате UNIXTIME), когда был в последний раз предоставлен доступ юниту
last_opened_ip - IP-адрес, с которого был предоставлен доступ юниту
last_opened_mac - MAC-адрес, с которого был предоставлен доступ юниту
def_state - Режим доступа этого юнита по умолчанию (например, сразу после старта программы). 0 означает отсутствие доступа, 1 означает разрешения доступа.
curr_state - Текущий режим доступа этого юнита. 0 означает отсутствие доступа, 1 означает разрешения доступа. К сожалению, по наступлении таймаута не сбрасывается (баг).
При старте сервиса происходит считывание всех доступных записей о юнитах из базы SQL/таблицы "login" в память программы и заполнение соответствующих полей в структурах, описывающих юниты. Если для какого-то юнита нет информации о таймаутах (т.е. соответствующей по индексу OID строки в таблице), то для данного юнита сервис login не будет работать и вопрос о доступе будет определяться работой других механизмов (fw-policy, sys-policy, quota и пр.). Это обеспечивает "прозрачную" работу уже настроенной системы.

Для случая, когда в базе данных есть запись о юните, информация о таймаутах и пароле копируется в соответствующие поля данных о юните. При этом текущее состояние доступа (u->logindata->c_state) становится равным значению по умолчанию (def_state из таблицы). Каждые delay секунд сервис проверяет возможность доступа, и при необходимости отключает юнит обнулением переменной u->logindata->c_state. Она проверяется при каждом прохождении пакета сервисом data-source.

Не пытайтесь редактировать SQL-таблицу login извне своими программами. Все записи должны вноситься скриптами или вручную через telnet-интерфейс программы. Для этого существует три команды сервиса login: set, login и logout. Их поведение и параметры описаны ниже.

Для полного контроля над процессом логинов и записи всей служебной информации в лог-файл и консоль служит новый параметр встроенного отладчика "debug login"

Для вывода информации о логинах служит команда (глобальная, НЕ сервиса login) "show login {name AAA | oid BBBB}"

Написание администраторского веб-интерфейса по привязке юнитов к сервису логинов и клиентского по управлению паролями и параметрами оставляется на потребителя программы NeTAMS. В настоящий момент реализован только примитивный скрипт веб-авторизации по паролю. Он идет в комплекте поставки NeTAMS в каталоге cgi-bin/ и называется login.cgi. Скрипт требует файлов logo-small.gif и netams_api.pl (последней версии), которые находятся в том же каталоге.

Для работы скрипта нужен веб-сервер, интерпретатор Perl и прямые руки администратора. Рекомендуется:
Использовать протокол HTTPS для доступа к скрипту авторизации
Настроить доступ к статистике и к скрипту "в обход" NeTAMS, чтобы не считался данный служебный трафик и работала возможность логина при предварительно отключенном пользователе.
Сделать простой URL и раздать его клиентам для выставления иконки на desktop, например https://loginserver/login.cgi
Необходимо исправить несколько первых строчек скрипта с указанием параметров подключения и путей до каталога со статистикой; можно также исправить его HTML-интерфейс.

Написание скрипта автоматического логина пользователя при входе в виндовс, или при авторизации в домене Windows (через скрипт профиля или групповую политику) оставляется на совести заинтересованных лиц.


default-inact N
Устанавливает значение времени неактивности клиента по умолчанию. Применяется, если при настройке параметров сервиса login для заданного юнита не было указано конкретное время неактивности. Задается в секундах. По умолчанию значение 0.

default-abs N
Устанавливает значение времени абсолютного таймаута клиента по умолчанию. Применяется, если при настройке параметров сервиса login для заданного юнита не было указано конкретное время абсолютного таймаута. Задается в секундах. По умолчанию значение 0.

max_inact N
Максимально допустимая величина времени таймаута неактивности, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 43200 сек = 12*60*60.

min_inact N
Минимально допустимая величина времени таймаута неактивности, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 60 сек.

max_abs N
Максимально допустимая величина времени абсолютного таймаута, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 1036800 сек = 24*12*60*60.

min_abs N
Минимально допустимая величина времени абсолютного таймаута, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 60 сек.

min_passwd_length N
Минимально допустимая длина пользовательского пароля. По умолчанию равно 3 символом, однако в настоящий момент проверки не производится.

delay N
Интервал времени между периодическими проверками всех юнитов на наступление таймаута. Задается в секундах. По умолчанию значение 10 сек.

relogin {yes|no}
Разрешать ли повторный логин для абонента, который считается уже залогиненным? По умолчанию "да".

set-user-ip
Указывает на необходимость в случае успешной авторизации перезаписать IP-адрес юнита (если он имеет тип user) на текущий; при наступлении таймаута или останове доступа адрес сбрасывается в 0.0.0.0. Принимает значения yes или 1 (делать перезаписывание) или no или 0 (не делать). По умолчанию равно 0.

set {name AAA | oid BBBB}
[password CCCC]
[inact DDDD]
[abs EEEE]
[mac 0a:0b:0c:0d:0e:0f]
[strict|nostrict]

Записывает в структуру данных юнита в памяти и одновременно в SQL-базу параметры юнита (определяется по имени или номеру OID):
  • Пароль (password)
    Таймаут неактивности (inact)
    Абсолютный таймаут (abs)
    Установленный привязанный MAC-адрес юнита (mac)
    Параметр безусловной привязки (strict) или его отмена (nostrict)
Все значения таймаутов задаются в секундах. Они должны быть или равны нулю, или быть в рамках между минимальным и максимальным значением. Если какая-то из величин таймаутов (или обе) равны нулю, то проверка этого типа таймаута для данного юнита не производится. Если какая-то из величин не указана, будет взято значение по умолчанию (определенное соответственно или в заголовочном файле src/netams.h или параметрами управления сервисов default-inact или default-abs).


login {name AAA | oid BBBB}
password CCCC
[ip A.B.C.D]
[mac JJ:JJ:JJ:JJ:JJ:JJ]

Служит для авторизации юнита и открытия к нему доступа. Обязательно указывать имя или OID юнита, а также пароль. Значения IP- и MAC-адреса должны подставляться внешним скриптом авторизации.
В случае указания неправильного имени юнита получится:

Код: Выделить всё

login:0#login name r546-1a
parse: FAIL: unit with name= r546-1a is not exist
Неправильного пароля:

Код: Выделить всё

login:0#login name r546-1 password 123
parse: FAIL: password incorrect
Успешной авторизации:

Код: Выделить всё

login:0#login name r546-1 password 123456
parse: OK: login success from ip:0.0.0.0, mac:00:00:00:00:00:00
При этом в лог-файле сервера появится соответствующая запись.

Код: Выделить всё

logout {name AAA | oid BBBB} 
	password CCCC 
	[ip A.B.C.D] 
	[mac JJ:JJ:JJ:JJ:JJ:JJ]
Команда отключения пользователя, параметры такие же, как и у login.
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service billing

Сообщение Raven » 13 май 2010, 14:05

service billing

NeTAMS разрабатывался изначально не как система биллинга, а как система учета трафика. Вследствие этого основными учетными единицами являются юниты. К сожалению, концепции юнитов, имеющих основным свойством статический IP-адрес, не достаточно для реализации полноценного биллинга. Для решения проблемы был организован новый сервис, service billing, основной целью которого стала "правильная" поддержка других типов учетных единиц - пользовательских аккаунтов.

Как сервис биллинга интегрируется в ядро NeTAMS:

1. Создается и поддерживается структура аккаунтов, где каждый аккаунт представляет собой учетную запись пользователя, имеющую следующие параметры:
а) имя, идентификатор, описание
б) индекс текущего тарифного плана, и того который вступит в действие со след. месяца
в) баланс
г) даты создания, модификации и прочее
д) список ассоциированных юнитов
е) емаил, пароль
ж) статус

2. При создании аккаунта необходимо привязать к нему один или несколько юнитов, по которым будет осуществлен учет трафика (юниты имеют IP-адрес и список политик учета трафика). При необходимости юниты создаются автоматически через веб-интерфейс.

3. Каждый аккаунт, если не включена его добровольная блокировка, имеет активный тарифный план (и план "на будущее"). Тарифный план характеризуется именем, описанием и списком "подпланов". Этим достигается возможность создания "гибких" планов.

4. Каждый подплан характеризуется:
а) политикой учета трафика. Она автоматически выставится для каждого юнита, который принадлежит соответствию "юнит-аккаунт-план-подплан"
б) количеством включенного в абонентскую плату трафика (раздельно входящий/исходящий, значение в мегабайтах или без лимита)
в) месячная абонентская плата: правило съема этой платы (единовременно/ежедневно и др.)
г) плата за превышение трафика, включенного в аб. плату, в у.е. за мегабайт (раздельно входящий/исходящий; "бесплатно")

Набор скриншотов с веб-интерфейса управления биллингом:
  • Сведения об аккаунте
    Настройки тарифного подплана
    Настройки тарифного плана
    Список юнитов
    Политики учета
    Лог-файл действий с аккаунтом
    Управление отдельным аккаунтом
    Карточка пользовательских сведений об аккаунте; задается шаблоном
subplan N
fee NNN
spread { monthly | daily | hourly }
included { XXX | unlimited } sum |
[ { XXX | unlimited } in ] [ { XXX | unlimited } out ] }
policy MMM
overdraft [ AA in ] [ BB out ] [ CC sum ]
adjust-included {yes|no}
adjust-fee {yes|no}

Команда subplan формирует тарифный подплан, из которого потом можно будет создать сложный тарифный план. Номер подплана N есть короткое число (это НЕ oid).

fee NNN - определяет количество денег "абонентской платы", снимаемых за месяц, по данному подплану.
spread { monthly | daily | hourly } - определяет, как будут сниматься эта "абонентская плата" - раз в месяц, раз в неделю или раз в час (в последних двух случаях снимается доля, пропорциональная указанному периоду)
included { { XXX | unlimited } sum } | [ { XXX | unlimited } in ] [ { XXX | unlimited } out ] } - определяет, сколько (кило-, мега-, гига-)байт трафика включено в абонентскую плату. Величина XXX указывает на точное значение (возможны спецификаторы K, M и G после цифры). unlimited показывает, что включен весь трафик (нет ограничения). Задается ИЛИ раздельно для входящего и выходящего трафика, ИЛИ одно значение для суммы.
policy MMM - задает заранее описанную политику acct-policy сервиса processor, которая будет применена для учета трафика для юнитов, принадлежащих клиенту.
overdraft [ AA in ] [ BB out ] - определяет, сколько будет стоить превышение трафика (ИЛИ раздельно входящего и исходящего, ИЛИ суммы) в случае, если скачано больше, чем описано в параметре included
adjust-included {yes|no} - определяет, будет ли проводиться перерасчет включенного в субплан абонентского трафика, если клиент подключился в середине месяца. Если значение равно "yes" (по умолчанию), то включенный трафик пересчитается пропроционально количеству дней, оставшихся до конца месяца. В противном случае клиент получит возможность бесплатно скачать весь предвключенный трафик.
adjust-fee {yes|no} - определяет, будет ли проводиться перерасчет масячной абонентской платы, если клиент подключился в середине месяца. Если значение равно "no" (по умолчанию), то абонентская плата спишется полностью независмо от дня подключения, иначе - пропорционально числу оставшихся до конца месяца дней.
Команда subplan не умеет обрабатывать сразу все параметры, поэтому при конфигурировании придётся давать эту команду несколько раз с разными параметрами. Параметры этой команды группируются следующим образом:

Код: Выделить всё

	subplan N fee NNN spread { monthly | daily | hourly }
	subplan N included [ { XXX | unlimited } in ]
		[ { XXX | unlimited } out ]
	subplan N policy MMM
	subplan N overdraft [ AA in ] [ BB out ]
plan N
name AAA
description BBB
[no] subplan N1 N2 N3 ...

Команда plan формирует тарифный план, составляя его из подпланов. Номер плана N есть короткое число (это НЕ oid).
name AAA - задает "короткое" имя для тарифного плана (до 8 символов)
description BBB - задает "длинное имя", или описание, для плана. Значение BBB можно указывать в кавычках.
[no] subplan N1 N2 N3 - задает список из ранее определенных тарифных подпланов, формирующих этот план. Каждый тарифный подплан может участвовать одновременно в нескольких тарифных планах. Если указана опция no, то указанный список подпланов будет удален из плана.
Так же как и предыдущая команда, команда plan при конфигурировании должна быть разделена на следующие подкоманды:

Код: Выделить всё

	plan N name AAA
	plan N description BBB
	plan N subplan N1 N2 N3 ...
account NNN
name AAA
[description BBB]
password CCC
plan MM1
nextplan MM2
[beblock | block | unblock]
balance {add|remove|set} ZZ
[credit-limit ZZ]
unit {name AAA | oid NN} {add | delete }

Команда account создает аккаунт, или запись о клиенте, в базе NeTAMS. Эта информация хранится в SQL, не в конфигурационном файле. Число NNN представляет собой объект OID, являющийся ключом в базе данных.
name AAA - задает короткое имя аккаунту
description BBB - задает описание аккаунта
password CCC - задает пароль на доступ аккаунта с своей статистике
plan MM1 - задает текущий тарифный план (номер MM1 должен соответствовать описанному выше плану)
nextplan MM2 - задает тарифный план на следующий месяц - таким образом реализуется смена плана клиентом
[ beblock | block | unblock ] - задает текущее состояние аккаунта: добровольно_блокирован, блокирован_администратором и разблокирован (активен)
balance { add | remove | set } ZZ - позволяет добавлять, вычитать заданную сумму с баланса (лицевого счета) клиента, или выставлять баланс в указанное значение.
[credit-limit ZZ] - указывает минимально допустимый баланс клиента, когда он еще не отключается (отрицательное число или 0, т.е. нет кредита).
unit {name AAA | oid NN} {add | delete } - добавляет или отнимает заранее созданные в service processor юниты, делая их принадлежащими текущему аккаунту.
Подобно командам subplan и plan, команда account конфигурирует параметры аккаунта по одному параметру за команду:

Код: Выделить всё

        account NNN description BBB
        account NNN password CCC
        account NNN plan MM1
        account NNN nextplan MM2
        account NNN [beblock | block | unblock]
        account NNN balance {add|remove|set} ZZ
        account NNN unit {name AAA | oid NN} {add | delete }
delay NN
Устанавливает интервал времени ( в секундах), который будет использоваться между циклами проверки аккаунтов.

default-credit-limit XX
Устанавливает кредитный лимит для всех вновь создаваемых аккаунтов, т.е. порог баланса при котором будет производиться отключение. По умолчанию значение равно нулю, т.е. кредит пользователю не выдается. Величина кредитного лимита XX должна быть отрицательной. Действует только на вновь создаваемые аккаунты. Для каждого аккаунта индивидуально в дальнейшем можно изменить этот лимит при помощи команды credit-limit.

storage MM {all | plans | subplans}
Указывает, в каком хранилище (storage) будет сохраняться биллинговая информация, и какая именно.

Код: Выделить всё

show plan [N [account|list]]
Выдает информацию о тарифном плане (планах): 
fedora:~#netamsctl show plan 
Plan ID 000001 Name "aaa" Desc. "super-puper tarifny plan"
        Subplan ID 000001
          Fee 10.000000, spread: 'M', policy ip(0B23C6)
          Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out
Plan ID 000002 Name "bbb" Desc. "plan dlya aktivnyh"
        Subplan ID 000001
          Fee 10.000000, spread: 'M', policy ip(0B23C6)
          Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out
        Subplan ID 000002
          Fee 15.000000, spread: 'M', policy www(0C9869)
          Incl. 0 in 0 out, Over. 10.000000/M in 0.000000/M out
show account {XXX [full][bdata] |list}
Выдает информацию о аккаунте (аккаунтах):

Код: Выделить всё

fedora:~#netamsctl show account client1 full
Name a1 (01BFEF) BLOCKED SYNC bal: 100.00 cred_lim: -5.00 plan: aaa
Plan aaa 000001 1107234000 Nextplan aaa 000001 1107234000
Changed 1108397456 Blocked 1108397423 Created 1108397423
Email - Password -
  Units: client1 08944A 
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Документация по NetAms: service acl-server

Сообщение Raven » 13 май 2010, 14:07

service acl-server

Сервис acl-server занимается контролем доступа клиентов через удаленный маршрутизатор. В общем случае для источников данных типов netflow, ulog и libpcap управление трафиком невозможно, т.к. эти источники являются "односторонними", предоставляя данные по трафику безо всякой возможности воздействовать на сам процесс доставки этого трафика. С помощью данного сервиса можно организовать передачу команд вида "открыть-закрыть" на расположенный где-то в сети роутер. Это может быть маршрутизатор Cisco, PC-роутер с генератором потока netflow, или даже локальная машина (роутер/бридж) с настроенным data-source libpcap.

Сервис acl-server появился в NeTAMS начиная с версии 3.3.0 (build 2710). В настоящий момент поддерживается только управление удаленным роутером Cisco по протоколу RSH с набором некоторых стандартных команд. Они передаются на роутер при:
  • (пере)запуске NeTAMS
    перезагрузке удаленного роутера
    при изменении системной политики
Эти правила действуют на юниты типа USER и HOST, у которых установлены IP-адреса.

Для начала вам необходимо настроить маршрутизатор Cisco:

Код: Выделить всё

no ip rcmd domain-lookup
ip rcmd rsh-enable
ip rcmd remote-host netams 192.168.0.10  root enable
!
ip flow-export source FastEthernet0/1
ip flow-export version 5
ip flow-export destination 192.168.0.10 20001
!
access-list 100 dynamic NETAMS deny   ip any any
access-list 100 permit ip any any
!
interface FastEthernet0/1
 ip address 192.168.0.1 255.255.255.0
 ip access-group 100 in
!
В данном случае внутренний IP-адрес маршрутизатора равен 192.168.0.1, к интерфейсу fa0/1 подключена внутреняя сеть, а в этой сети на адресе 192.168.0.10 висит UNIX-компьюер с запущенным NeTAMS. Поток статистики netflow отправляется роутером туда же.
Хотя и считается, что протокол RSH небезопасный, на самом деле не все так плохо. Если вы явно указали разрешенный IP-адрес, с которого можно принимать команды, и на этом компьютере нет "лишних" клиентов, то все в порядке.

acl-server работает путем установки динамических списком доступа (access-lists) на роутере Cisco, это значит что перезагрузке роутера список потеряется (но будет восстановлен вновь). В данном примере список доступа имеет номер 100, и его динамическая часть имеет имя NETAMS. Обратите внимание на то, что все попадающие в этот список записи будут иметь политику DENY, в то время как сам список будет иметь политику ALLOW. Это значит, что при пустом списке доступа будет разрешен весь трафик, а добавление каких-то новых записей (IP-адресов) будет означать их блокировку. Далее, этот список доступа ставится на "вход" внутреннего интерфейса.

Справочник команд сервиса acl-server:

hostname AAAA [NN]
Задает имя или IP-адрес удаленного маршрутизатора, которым управляем. Опциональный параметр NN - номер TCP-порта, на котором роутер по принимает команды по протоколу RSH (по умолчанию 514).

direction { src|dst }
Определяет, в какое поле (src или dst) записи access-template будет вставлен IP-адрес юнита. Применять совместно направлением access-group на интерфейсе роутера. Например, если у вас записано:

Код: Выделить всё

interface FastEthernet0/1
  ip access-group 100 in
то для конструкции "direction src" и IP-адреса юнита 192.168.0.10 в случае его блокировки будет исполнена команда:

Код: Выделить всё

access-template 100 NETAMS host 192.168.0.10 any

Код: Выделить всё

Аналогично, для "direction dst" будет:
access-template 100 NETAMS host any 192.168.0.10
При разблокировании юнита будет послана команда:

Код: Выделить всё

clear access-template 100 NETAMS ... 

dynamic-name AAAA
Задает имя динамической части списка доступа (в данном примере NETAMS)

acl-number NNN [cisco]
Задает номер списка доступа access-list (в данном примере 100), значение по умолчанию: 180. Ключевое слово "cisco" определяет, что удаленная сторона представляет из себя роутер Cisco, а не что-то иное (в данной версии других вариантов нет, так что указывать обязательно).

delay NNN
Задает промежуток времени между периодическими проверками состояния роутера и подачи команд его управления (в секундах). Рекомендуется значение порядка 300 секунд (значение по умолчанию).

set-uptime NNN
Позволяет вручную выставить параметр uptime удаленного роутера, полезно для отладки. NNN - время работы роутера в секундах, с момента последней его перезагрузки.

debug aclserver
Включает отладку сервиса aclserver (это команда сервиса main, НЕ acl-server).


Пример рабочей конфигурации сервиса acl-server, для вышеописанного примера настройки Cisco:

Код: Выделить всё

#NeTAMS version 3.3.0 (build 2710) compiled by root@localhost
#configuration built Sun Sep 18 04:15:20 2005
#begin
...
service acl-server 0
hostname 192.168.0.1
direction src
dynamic-name NETAMS
acl-number 100 cisco
delay 100

#end
Пример вывода debug aclserver:

Код: Выделить всё

|aclserver: acl server checking every 10 seconds
|aclserver: known: 1, remote uptime: CISCO2 6 5 9 15 4094100 
|aclserver: queue u=0F8AEA flag=0 sp_now=0
|aclserver: queue u=03A4C4 flag=0 sp_now=0
|aclserver: message ip=192.168.0.11 action=REMOVE
|aclserver: message ip=192.168.0.12 action=REMOVE
|aclserver: messages processed: 2, failed: 0
|aclserver: acl server checking every 10 seconds
|aclserver: known: 4094102, remote uptime: CISCO26 5 9 15 4094160 
|aclserver: messages processed: 0, failed: 0
|aclserver: acl server checking every 10 seconds
|aclserver: known: 4094162, remote uptime: CISCO26 5 9 15 4094160 
|aclserver: messages processed: 0, failed: 0
Известные проблемы и направления развития:
Сделать поддержку нескольких удаленных устройств, различая принадлежность юнитов через ds-list.
Сделать "обратное" включение, когда политика основного accessl-list по умолчанию - deny, динамического - allow, и добавление записей в список происходит для НЕБЛОКИРОВАННЫХ юнитов.
Написать клиентские программы для linux, freebsd, solaris, которые работали бы как клиенты сервиса acl-server и делали бы блокировку на удаленной машине.
Я не злопамятный, я просто часто ковыряю логи
Ответить

Вернуться в «Документация *nix»