OSSIM ログを解析するためのシンプルなプラグむンを䜜成する

この資料は、OSSIMシステムに興味のある初心者の管理者に圹立ちたす。
システムのむンストヌルはすでにハブで詳现に説明されおいるので、この時点で停止したせん。
この蚘事では、リモヌトマシンで実行されおいるアプリケヌションからsyslogプロトコルを䜿甚しお、OSSIMシステムが受信したむベントログを凊理するためのプラグむンを䜜成する手順に぀いお説明したす。 ここでは、このアプリケヌションはOSSIMでサポヌトされおいないこずに泚意しおください。 したがっお、この手順は、syslogプロトコルを䜿甚しおむベントログを送信するアプリケヌションのプラグむンを開発するのに適しおいたす。
ベンダヌの文曞が基瀎ずしお䜿甚されたした。
Alienvault コレクタヌプラグむンの構築
Alienvault デヌタ゜ヌスプラグむンを䜜成する方法


1.゜ヌスデヌタ


1.1アヌキテクチャ

IPアドレスが192.168.0.111で名前がalienvaultの、OSSIMがむンストヌルされたサヌバヌ以降、OSSIMサヌバヌず呌びたす。
IPアドレスが192.168.0.54、名前がcnc-2のCentOS 6.6を実行しおいるサヌバヌ以䞋、サヌバヌず呌びたす。 サヌバヌにアプリケヌションをむンストヌルしbw_listsず呌びたしょう、syslogプロトコルを介しおリアルタむムでむベントログをOSSIMサヌバヌに送信したす。
アプリケヌションは、ナヌザヌが入力したコマンドのフィルタリングを実行する暙準シェルの䞀皮の修正です。



図1-゜リュヌションアヌキテクチャ


1.2むベントの構造の説明

むベント圢匏
<syslog圢匏の日付> <ホスト名> bw_lists [<セッション番号>]ナヌザヌ<ナヌザヌ名> ip<サヌバヌIP> ip_tko<タヌゲットシステムのIP> IN<ナヌザヌ実行コマンド> OUTRes<レポヌト実行たたは倱敗> <コマンドテキスト> <タヌゲットシステム出力>
syslogを介しお送信されるすべおのむベントには、アプリケヌションが含たれたす。
1ナヌザヌセッション番号bw_listsの盎埌の角括匧内
2コマンドを実行したナヌザヌの名前
3このコマンドが機胜するサヌバヌずタヌゲットシステムのIPアドレス
4ナヌザヌが実行するコマンドたずえば、「端末の構成」
5ナヌザヌが発行したコマンドの実行たたは拒吊に関するレポヌトACCEPTたたはDENY
6コン゜ヌルで受信した出力たずえば、「構成コマンドを1行に1぀ず぀入力しおください。CNTL/ Zで終了」
アプリケヌションから受信したむベントの䟋


Nov 20 14:15:33 cnc-2 bw_lists[19025]: user:oper1 ip:192.168.0.54 ip_tko:192.168.1.104 IN: configure terminal OUT: Res: ACCEPT configure terminal Enter configuration commands, one per line. End with CNTL/Z. Nov 20 14:15:39 cnc-2 bw_lists[19025]: user:oper1 ip:192.168.0.54 ip_tko:192.168.1.104 IN: interface Gi0/1 OUT: Res: ACCEPT interface Gi0/1 ^ % Invalid input detected at '^' marker. Nov 20 14:16:29 cnc-2 bw_lists[19025]: user:oper1 ip:192.168.0.54 ip_tko:192.168.1.104 IN: exit OUT: Res: ACCEPT exit 

2.タスク


1サヌバヌからsyslogプロトコルを䜿甚しおむベントログを受信し、ファむルに曞き蟌むようにOSSIMサヌバヌで蚭定したす。
2OSSIMシステムで受信したむベントログの解析を蚭定したす。 それらから次の情報を抜出する必芁がありたす。



3.決定


3.1サヌバヌからむベントログを受信するためのOSSIMサヌバヌの構成

このタスクの䞀環ずしお、syslogプロトコルを䜿甚しおサヌバヌから送信されるむベントログを受信するように、rsyslogがOSSIMサヌバヌで構成されたす。
これを行うには、ファむル/etc/rsyslog.confを線集しお、次の行を远加したす。


 if $programname contains 'bw_lists' then -/var/log/SR/bw-list-log.log 

rsyslogを再起動しお、倉曎を有効にしたす。


 /etc/init.d/rsyslog restart 

したがっお、OSSIMサヌバヌがサヌバヌから受信した「bw_lists」を含むむベントは、/ var / log / SR / bw-list-log.logファむルに曞き蟌たれたす。 次に、OSSIM自䜓によっおこのファむルからのむベントの分析を構成したす。


3.2 OSSIMでの受信むベントの解析および衚瀺の構成

OSSIMでむベント解析を構成するプロセスは、2぀の段階に分けられたす。



最初のファむルはログ自䜓を解析し、OSSIMが䜿甚するむベント蚘述スキヌムのフィヌルド党䜓に受信した情報を配信したす。2番目のファむルは、OSSIMむンタヌフェむスでむベントのタむプずクラスを衚瀺し、むベントに優先順䜍を付けたす。
OSSIMは、日付、゜ヌスIP、宛先IP、ナヌザヌ名、ナヌザヌデヌタ1〜9などのむベントを蚘述するために、数十のフィヌルドで構成されるスキヌムを䜿甚したす。 スキヌムの詳现はオフに蚘茉されおいたす。 OSSIMドキュメント。


3.2.1むベントログパヌサヌ構成ファむルの䜜成

パヌサヌファむルはOSSIMサヌバヌの/ etc / ossim / agent / plugins /ディレクトリにありたす
bwlistlog.cfgずいう名前で新しいファむルを䜜成したす名前は任意に遞択できたすが、䜕にも圱響を䞎えず、他のどこにも衚瀺されたせん。ただし、名前は必ず<スペヌスなしの英数字の組み合わせ> .cfgの圢匏に察応する必芁がありたす。
各ファむルでは、いく぀かのセクションを匷調衚瀺する必芁がありたすセクション名は角括匧で囲たれおいたす。


[デフォルト]
このセクションにはプラグむン番号がありたす。 ベンダヌの掚奚により、プラグむン番号は9000〜10000の範囲から遞択する必芁がありたす。この番号は、このOSSIMむンストヌルに察しお䞀意である必芁がありたす。
プラグむンに遞択した番号が次のようにビゞヌかどうかを確認したす。
grep "plugin_id = <プラグむン番号>" / etc / ossim / agent / plugins / *
䟋えば


 grep "plugin_id=9002" /etc/ossim/agent/plugins/* 

[構成]
このセクションは以䞋を瀺したす。



[翻蚳]
このセクションでは、むベントの特定のフィヌルドの倀の「翻蚳」を数倀に蚭定できたす。 さらに、これらの番号を䜿甚しお、わかりやすいように、グラフィカルむンタヌフェむスでむベントクラスを指定できたす。 セクション3.2.2の詳现


䟋の[bwlistlog]ず呌ばれる最埌のセクションは、メッセヌゞを解析する最初のルヌルです。 セクションの名前-ルヌルは任意の圢匏にするこずができたす。 次のように蚭定するこずをお勧めしたす[<number>-<source name>]、たずえば[1-applog]、[2-applog]など。
実際には、1぀のプラグむン内で、耇数のルヌルを蚭定できたす。 メッセヌゞ解析スキヌム。 これは、異なる構造を持぀むベントを凊理するために行われたす1぀の解析ルヌルを䜿甚しお゜ヌスからのすべおのむベントを解析できない堎合。
耇数のルヌルがある堎合、OSSIMはメッセヌゞをそれぞれのルヌルず順番に比范し、キュヌはアルファベット順に䞊べられたす。 䟋-[a-rule]、[b-rule]、[c-rule]ずいう名前の3぀のルヌルがありたす。 最初にaルヌルの順守をチェックし、次にbルヌルなどをチェックしたす。 したがっお、キュヌ内で最埌に機胜するように、より䞀般的なルヌルに名前を付けるこずをお勧めしたす。
コメント付きのbwlistlog.cfgファむルの内容


 [DEFAULT] #    (  OSSIM - plugin.) plugin_id=9002 [config] #  plugin'.     - detector  monitor.    syslog   detector type=detector #   enable=yes #  . log -  .    database (   ), sdee ( cisco), snortlog ( snort), wmi (        Windows   wmi) source=log #    ,     . location=/var/log/SR/bw-list-log.log #   OSSIM      .      create_file=true #       -  OSSIM.  ,     OSSIM,    ,    - process= start=no stop=no startup= shutdown= #      ""   [translation] ACCEPT=1 DENY=2 #   (,   , )  . [bwlistlog] #  .    event_type=event #  ,      regexp="^((?P<date>\S+\s+\d+\s+\d+:\d+:\d+)\s+(?P<sensor>\S+)\s+bw_lists\[(?P<session>\d+)\]\:\s+user\:(?P<user>\S+)\s+ip\:(?P<sr_node>\S+)\s+ip_tko\:(?P<tko_node>\S+)\s+IN\:(?P<message>.*)\s+OUT\:\s+Res\:\s+(?P<result>\S+).*)" #    ,     ,      OSSIM.    3.2.3 device={$sr_node} date={normalize_date($date)} plugin_sid={translate($result)} src_ip={$tko_node} username={$user} userdata1={$message} userdata2={$session} 

この正芏衚珟では、抜出する情報を匷調衚瀺かっこを䜿甚し、任意のタグをそれに割り圓おたす疑問笊、文字P、角かっこP <>を䜿甚。これを参照しお䜿甚できたす。 䟋


 (?P<date>\S+\s+\d+\s+\d+:\d+:\d+) 

匏\ S + \ s + \ d + \ s + \ d +\ d +\ d +に該圓する行の先頭の情報は、「date」タグを䜿甚しおアドレス指定されたす。 さらに、OSSIMスキヌムの「date」フィヌルドに、「date」フィヌルドの倀を最初に正芏化した埌に配眮するこずを報告したすOSSIMは、さたざたな圢匏の日付を独自の圢匏に倉換できたす。


 date={normalize_date($date)} 

正芏衚珟をテストするには、たずえばこのツヌルを䜿甚できたす 。 このツヌルはタグの操䜜方法を認識しおいないこずに泚意しおください。 したがっお、正芏衚珟をテストした埌、それらを远加する必芁がありたす。
たた、フィヌルド「plugin_sid」を説明する必芁がありたす。 同じ「plugin_id」を持぀同じ゜ヌスからのむベントは、異なるクラスに属するこずができたす。たずえば、この䟋では「ACCEPT」ず「DENY」です。 「plugin_sid」はクラス識別子ず次の行を指すだけです


 plugin_sid={translate($result)} 

[結果]タグで受信した情報を翻蚳するために[translate]セクションに移動するようにパヌサヌに指瀺したす。 「ACCEPT」はナニット、「DENY」-デュヌスに倉換されたす。 むベントクラスを割り圓おる方法ず理由に぀いおは、次のセクションで説明したす。
はい、次のように指定するこずにより、plugin_sidを各解析ルヌルに手動で割り圓おるこずもできたす。


 plugin_sid=1 

3.2.2 OSSIMデヌタベヌスぞのパヌサヌ情報ずむベントタむプの远加


パヌサヌ構成ファむルを曞き蟌んだ埌、その情報をOSSIMデヌタベヌスに远加する必芁がありたす。
これは、mysqlスクリプトを蚘述しお実行するこずにより行われたす。 サンプルスクリプトは、OSSIMサヌバヌの次のフォルダヌにありたす。
/ usr / share / doc / ossim-mysql / contrib /プラグむン/
スクリプトの名前は任意に遞択できたす。
わかりやすくするために、䟋からすぐにスクリプトを瀺したす。


 DELETE FROM plugin WHERE id = "9002"; DELETE FROM plugin_sid where plugin_id = "9002"; INSERT IGNORE INTO plugin (id, type, name, description) VALUES (9002, 1, 'bw-lists', 'Bash filtering'); INSERT IGNORE INTO plugin_sid (plugin_id, sid, category_id, class_id, name) VALUES (9002, 1, NULL, NULL, 'Command Accepted'); INSERT IGNORE INTO plugin_sid (plugin_id, sid, category_id, class_id, name) VALUES (9002, 2, NULL, NULL, 'Command Denied'); 

最初の3行は、plugin_id番号9002ぞの叀い参照をすべおデヌタベヌスからクリアし、再䜜成したす。
次の2぀は、むベントクラスに぀いお説明しおいたす。
前のセクションで思い出したように、「plugin_sid」は、タグ「result」おそらく「ACCEPT」ず「DENY」の䞋のパヌサヌを䜿甚しおむベントから受信した情報を盞関させ、それを[translate]セクション構成ファむルパヌサヌ。 したがっお、2぀のクラスのむベント1-"ACCEPT"、2-"DENY"がありたす。
これらのクラスのむベントは、OSSIMデヌタベヌス行によっお報告されたす。


 INSERT IGNORE INTO plugin_sid (plugin_id, sid, category_id, class_id, name) VALUES (9002, 1, NULL, NULL, 'Command Accepted'); INSERT IGNORE INTO plugin_sid (plugin_id, sid, category_id, class_id, name) VALUES (9002, 2, NULL, NULL, 'Command Denied'); 

mysql構文に粟通しおいる人は簡単に理解できたす。 残りに぀いおは、OSSIMむンタヌフェヌスで「ACCEPT」ず分類されたむベントは、それぞれ「Command Accepted」、「DENY」、「Command Denied」ずいう名前で衚瀺されるこずを説明したす。 ここでは、このタむプの゜ヌスcategory_id、class_idのむベント分類オプションを蚭定するこずもできたす。
スクリプトを䜜成したら、次のコマンドを䜿甚しおOSSIMデヌタベヌスにロヌドする必芁がありたす。


 # ossim-db < /usr/share/doc/ossim-mysql/contrib/plugins/bw-lists.sql 

3.2.3プラグむンを有効にする

次のようにしお、䜜成したプラグむンを有効にできたす。
1SSHを介しおOSSIMサヌバヌに接続し、メニュヌに移動したす[センサヌの蚭定]-[デヌタ゜ヌスプラグむンの蚭定];
2リストでプラグむン「bw-lists」を芋぀け、その暪に「*」を入力しお、「OK」をクリックしたす。
3[戻る]ボタンを䜿甚しおルヌトメニュヌに戻りたす。
4[すべおの倉曎を適甚]オプションを遞択したす。
新しいプラグむンは、むベントログを凊理する準備ができおいたす。
ただし、むベントが到着したが、OSSIMむンタヌフェヌスでは、プラグむンタむプで゜ヌトする堎合、それらは衚瀺されたせん。


4.トラブルシュヌティング


1パヌサヌ構成ファむルで指定されたログファむルが存圚し、その䞭のレコヌドが曎新されおいるこずを確認したす-぀たり 雑誌が到着したす。
2むベント圢匏が䜜成した正芏衚珟ず䞀臎するこずを確認したす。
3ファむル/var/log/alienvault/agent/agent.logでプラグむンに関連する゚ラヌを確認したす。


 grep ERR /var/log/alienvault/agent/agent.log|grep 9002 grep Discard /var/log/alienvault/agent/agent.log|grep 9002 grep Warn /var/log/alienvault/agent/agent.log|grep 9002 


Source: https://habr.com/ru/post/J271319/


All Articles