Ïðèíöèïû ðàáîòû
Îñíîâíàÿ ïðîãðàììà êîìïëåêñà NeTAMS ñîñòîèò èç ñëåäóþùèõ ÷àñòåé, ðàáîòàþùèõ ïàðàëëåëüíî è îäíîâðåìåííî, è íàçûâàåìûõ ñåðâèñàìè:
Ñåðâèñ main ïðåäñòàâëÿåò ñîáîé ãëàâíûé ïîòîê, ñ èñïîëíåíèÿ êîòîðîãî íà÷èíàåò ðàáîòó ïðîãðàììà. Îí îïðåäåëÿåò îñíîâíûå ñâîéñòâà ñèñòåìû, ñ÷èòûâàåò è ðàçáèðàåò êîíôèãóðàöèîííûé ôàéë, çàïóñêàÿ äðóãèå ñåðâèñû, è âïàäàåò â ñîí äî çàâåðøåíèÿ ðàáîòû NeTAMS. Ïðè ïîäà÷å êîìàíä kill, shutdown, reload, âîçíèêíîâåíèè êðèòè÷åñêîãî ñáîÿ èëè ïîëó÷åíèè ñèãíàëà SIGQUIT ñåðâèñ main ïðîñûïàåòñÿ è ïûòàåòñÿ îñòàíîâèòü âñå äðóãèå ñåðâèñû, ÷òîáû êîððåêòíî çàêðûòü áàçû äàííûõ è óáðàòü ïåðåõâàò÷èêè ïàêåòîâ.
Ñåðâèñ processor ÿâëÿåòñÿ ÿäðîì NeTAMS, òàê êàê èìåííî â íåì îïðåäåëÿåòñÿ ñïèñîê îáúåêòîâ, ïî êîòîðûì áóäåò ïðîèçâåäåí ó÷åò, è ñàìèõ ïðàâèë ó÷åòà. Âñå êîìïîíåíòû ñèñòåìû îáìåíèâàþòñÿ ìåæäó ñîáîé ñîîáùåíèÿìè, íàïðèìåð çàïðîñàìè ê ÁÄ èëè äàííûìè î òðàôèêå çà íåêèé ïðîìåæóòîê âðåìåíè. Processor îáåñïå÷èâàåò äèñïåò÷åðèçàöèþ ñîîáùåíèé. Âîçìîæåí òîëüêî îäèí ýêçåìïëÿð ñåðâèñà processor ïðîãðàììó.
Ñåðâèñ server îáåñïå÷èâàåò âîçìîæíîñòü ïðèñîåäèíÿòüñÿ ê ðàáîòàþùåé ïðîãðàììå ÷åðåç tcp-ñîêåò; ñ ïîìîùüþ êîìàíä âîçìîæíî óïðàâëåíèå ïðîãðàììîé è ñú¸ì ñòàòèñòèêè.
Ñåðâèñ data-source îáåñïå÷èâàåò ïîñòóïëåíèå äàííûõ î òðàôèêå âîâíóòðü ïðîãðàììû.  êà÷åñòâå èñòî÷íèêîâ äàííûõ îá IP-òðàôèêå ìîãóò âûñòóïàòü ñðåäñòâà ïåðåõâàòà ïàêåòîâ ñèñòåì FreeBSD (divert socket) Linux (ìîäóëü ip_queue ñèñòåìû iptables), ïðîñëóøèâàíèÿ ñåòåâîãî èíòåðôåéñà (libpcap), ñòàòèñòèêà NetFlow âåðñèè 5, ïðèõîäÿùàÿ îò ìàðøðóòèçàòîðîâ Cisco èëè îò ëþáîãî äðóãîãî êîëëåêòîðà.
Ñåðâèñ storage îïðåäåëÿåò Áàçó Äàííûõ, â êîòîðîé áóäåò ñîõðàíÿòüñÿ ñòàòèñòèêà è ÷àñòü êîíôèãóðàöèè ñèñòåìû. Ýòî ìîæåò áûòü ñòàíäàðòíûé Berkley DB UNIX hash, êîòîðûé åñòü â ëþáîé ñèñòåìå, èëè SQL áàçà äàííûõ, ðàñïîëîæåííàÿ íà ëîêàëüíîé èëè íà ñîñåäíåé ìàøèíå.
Ñåðâèñ alerter ïîçâîëÿåò àäìèíèñòðàòîðó îðãàíèçîâûâàòü îòïðàâêó ñåáå èëè ïîëüçîâàòåëÿì îò÷åòà î ïðîøåäøåì è ó÷òåííîì òðàôèêå, èíôîðìàöèè î äåÿòåëüíîñòè ñèñòåìû è ïð.
Ñåðâèñ scheduler îáåñïå÷èâàåò âûïîëíåíèå çàäàííûõ êîìàíä â çàïëàíèðîâàííîå âðåìÿ. Ýòî "âèðòóàëüíûé" ñåðâèñ, ò.ê. çàïóñêàåòñÿ âñåãäà àâòîìàòè÷åñêè è íå òðåáóåò êîíôèãóðèðîâàíèÿ.
Ñåðâèñ html îðãàíèçóåò àâòîìàòè÷åñêîå ïåðèîäè÷åñêîå ñîçäàíèå ñòàòè÷åñêèõ html-ñòðàíèö, ñîäåðæàùèõ èíôîðìàöèþ î ïðîøåäøåì òðàôèêå, î ðàáîòå ñèñòåìû, ñîñòîÿíèè ïîäñèñòåì êâîò, áèëëèíãà, ëîãèíîâ, òåêóùèé êîíôèãóðàöèîííûé ôàéë è ïðî÷åå. Íåîáõîäèìî íàñòðîèòü ëîêàëüíûé âåá-ñåðâåð, ÷òîáû îí áåçîïàñíî ïîêàçûâàë ýòè ñòðàíèöû àäìèíèñòðàòîðó è ïîëüçîâàòåëÿì.
Ñåðâèñ monitor îðãàíèçóåò äåòàëüíûé ìîíèòîðèíã òðàôèêà çàäàííûõ þíèòîâ äëÿ ïîñëåäóþùåãî "ðàçáîðà".
Êàæäûé îáúåêò â ñèñòåìå (ïîëèòèêà, þíèò è ïð.) èìååò ñâîé óíèêàëüíûé íîìåð, òàê íàçûâàåìûé OID, object identificator, êîòîðûé ÿâëÿåòñÿ êëþ÷îì â áàçå äàííûõ. Îí ãåíåðèðóåòñÿ àâòîìàòè÷åñêè ñëó÷àéíûì îáðàçîì ïðè ñîçäàíèè îáúåêòà, òàê ÷òî íå çàáûâàéòå ñîõðàíÿòü êîíôèãóðàöèîííûé ôàéë ïîñëå èçìåíåíèé êîìàíäîé save. Èäåíòèôèêàòîð ïðåäñòàâëÿåòñÿ â âèäå øåñòíàäöàòåðè÷íîãî ÷èñëà, çàïèñàííîãî øåñòüþ ñèìâîëàìè. Íàïðèìåð, çàïèñü äëÿ þíèòà òèïà user âûãëÿäèò ïðèìåðíî âîò òàê:
unit user oid 02628C name r556-2 ip 10.208.209.40
email anton@localhost parent LAN1 acct-policy ip www rus
Êàæäûé þíèò ïîìèìî èäåíòèôèêàòîðà OID, è èìåíè, èìååò ñâåäåíèÿ î ïðèíàäëåæíîñòè êàêîé-ëèáî ãðóïïå (îí òàêæå ìîæåò íå ïðèíàäëåæàòü íèêàêîé ãðóïïå), î ñâîèõ ïàðàìåòðàõ (IP-àäðåñ èëè, íàïðèìåð, ìàñêà ñåòè), ñïèñîê ïîëèòèê ó÷åòà è ôèëüòðàöèè òðàôèêà, ñèñòåìíóþ ïîëèòèêó, ïðèíàäëåæíîñòü ê îïðåäåëåííîìó data-source è ïðî÷.
 òî âðåìÿ êàê ïðåäøåñòâåííèê NeTAMS (aaa+fw) ó÷èòûâàë òîëüêî ip-only òðàôèê, ñåé÷àñ åñòü âîçìîæíîñòü äåëèòü äàííûå ïî äðóãèì ïðèçíàêàì. Îíè îïðåäåëÿþòñÿ ïðè çàäàíèè ïîëèòèêè, policy. Ïîëèòèêà ìîæåò îïðåäåëÿòü ïðàâèëà ôèëüòðàöèè è ó÷åòà.  ëþáîì ñëó÷àå ïîìèìî èìåíè è OID, óêàçûâàåòñÿ òèï ïîëèòèêè è target, ò.å. ïðèíöèï ïî êîòîðîìó áóäåò ïðîâåäåí ó÷åò. Íàïðèìåð:
policy oid 146633 name all-icmp target proto icmp
policy oid 1574B0 name web target proto tcp ports 80 81 3128
policy oid 153333 name server target units oid 0346E8
Ïðè îáðàáîòêå ïàêåòà ñèñòåìîé ïðîèñõîäèò ñëåäóþùàÿ ïîñëåäîâàòåëüíîñòü ñîáûòèé:
- Åñëè ñåðâèñ data-source íàñòðîåí òàê, ÷òî äàííûé ïàêåò "çàâîðà÷èâàåòñÿ" â ïðîãðàììó, òî àíàëèçèðóåòñÿ çàãîëîâîê ïàêåòà
- Ïðîâåðÿåòñÿ, êàêîìó þíèòó èç êîíôèãóðàöèè ñîîòâåòñòâóåò ïàêåò, ïóòåì ñîïîñòàâëåíèÿ âñåé òàáëèöû ñ ïîëÿìè ip_src è ip_dst çàãîëîâêà ïàêåòà. Îäèí è òîò æå ïàêåò ìîæåò ñîîòâåòñòâîâàòü íåñêîëüêèì ó÷åòíûì åäèíèöàì, è îòíîñèòüñÿ ê íåñêîëüêèì âëîæåííûì ãðóïïàì.
- Äëÿ êàæäîãî þíèòà ïðîâåðÿåòñÿ çíà÷åíèå óñòàíîâëåííîé ñèñòåìíîé ïîëèòèêè
- Äëÿ êàæäîãî þíèòà ïîñëåäîâàòåëüíî ïåðåáèðàåòñÿ öåïî÷êà óñòàíîâëåííûõ ïîëèòèê íà ôèëüòðàöèþ òðàôèêà, ïðîâåðÿåòñÿ ñîîòâåòñòâóåò ëè ïàêåò óñòàíîâëåííîé ïîëèòèêå. Åñëè ïîñëå ïîñëåäîâàòåëüíîãî ïåðåáîðà âñåãî ñïèñêà ïàêåò "ïðîïóùåí", àíàëîãè÷íî ïåðåáèðàåòñÿ öåïî÷êà óñòàíîâëåííûõ ïðàâèë ó÷åòà (acct-policy), è åñëè ïàêåò ïîïàäàåò ïîä ñîîòâåòñòâóþùåå ïðàâèëî, äëÿ äàííîãî þíèòà ïðîèñõîäèò óâåëè÷åíèå ñîîòâåòñòâóþùåãî äàííîé ïîëèòèêè ñ÷åò÷èêà, ò.å. bytes in/out. Ïàêåò âîçâðàùàåòñÿ ÿäðó ÎÑ (data-source ip-traffic) èëè óíè÷òîæàåòñÿ (data-source libpcap èëè netflow).
- Åñëè ïàêåò íå ïðîïóùåí ïðàâèëîì fw-policy èëè sys-policy, îí ìîë÷à îòáðàñûâàåòñÿ è ó÷åò òðàôèêà ïî íåìó íå âåäåòñÿ..
Äàííûå î òðàôèêå íàêàïëèâàþòñÿ â âèäå "ïîòîêîâ" (flows), êîòîðûå ïåðèîäè÷åñêè (çà ýòî îòâå÷àåò ïàðàìåòð flow-lifetime ñåðâèñà processor) ñáðàñûâàþòñÿ â áàçó äàííûõ (òàáëèöà raw), äîïîëíèòåëüíî â ñèñòåìå ïîääåðæèâàþòñÿ çíà÷åíèÿ ñ÷åò÷èêîâ î ïðîøåäøåì òðàôèêå ñ íà÷àëà òåêóùåãî ÷àñà, äíÿ, íåäåëè è ìåñÿöà äëÿ êàæäîé êîìáèíàöèè þíèò + ïîëèòèêà ó÷åòà. Ïî èñòå÷åíèè ñîîòâåòñòâóþùåãî âðåìåííîãî èíòåðâàëà äàííûå î òðàôèêå çà ïðîøåäøèé èíòåðâàë âñå ðàâíî îñòàþòñÿ â áàçå (òàáëèöà summary), îáåñïå÷èâàÿ íàäåæíîñòü è öåëîñòíîñòü äàííûõ íà âðåìÿ ñëó÷àéíûé èëè çàïëàíèðîâàííûõ ïåðåçàãðóçîê ñèñòåìû.
Èíôîðìàöèþ î òåêóùåì è ïðîøåäøåì òðàôèêå ìîæíî ïîëó÷èòü, ïîäñîåäèíèâøèñü ê ïðîãðàììå ÷åðåç telnet è íàáðàâ êîìàíäû:
- show list full
- send report to {user_name} on {unit_name} (ïðè íàñòðîåííîì ñåðâèñå alerter)
- html (ïðè íàñòðîåííîì ñåðâèñå html - è ýòî íàèëó÷øèé âàðèàíò)