aws-samples / siem-on-amazon-opensearch-service

A solution for collecting, correlating and visualizing multiple types of logs to help investigate security incidents.
MIT No Attribution
579 stars 191 forks source link

question Dose "ES-loder" supports "OpenSerch original fields"? #319

Closed Nanashi-i closed 2 years ago

Nanashi-i commented 2 years ago

※I know you are not in charge of support. But please tell me the answer to this question.

I have a question about "es-loder". Dose "ES-loder" supports "OpenSerch original fields"? Or does it only support "ECS references"?

■ History: I defined the original index "TEST-TEST0000" fields {"SubType":"text","EventType":"text"~} in OpenSearch. Even if you specify "ECS = SubType EventType ~" in "user.ini" of "es-loder". But it failed.

■user.ini [TEST0000] '# S3の保存場所 s3_key = UserLogs/TEST0000/UTM '# ファイルフォーマット file_format = text '# ESのインデックス名 index_name = TEST-TEST0000 '# 名前付き正規表現でフィールドの抽出 log_pattern = ^.subtype=\"(?Pips)\".eventtype=\"(?P\S+)\".vd=\"(?P\S+)\".eventtime=(?P\d+).srcip=(?P\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}).srccountry=\"(?P.)\".dstip=(?P\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}).action=\"(?P\S+)\".service=\"(?P\S+)\".attack=\"(?P\S+)\".dstport=(?P\d+).attackid=(?P\S+).ref=\"(?P\S+)\".*crlevel=\"(?P\S+)\" '# " ログの生成時刻を抽出 timestamp_key = eventime timestamp_format = epoch '# ECS への正規化 '# 正規化後のフィールドを列挙 ecs = SubType EventType VDOM srcIP SrcCountry dstIP action service attack dstPort attackID ref ClientReputationLevel '# 「正規化後 = オリジナルフィールド」 で定義 SubType=SubType EventType=EventType VDOM=VDOM srcIP=srcIP SrcCountry=SrcCountry dstIP=dstIP action=action service=service attack=attack dstPort=dstPort attackID=attackID ref=ref ClientReputationLevel=ClientReputationLevel

'# GeoIP geoip = source

■OpenSerch index GET result GET TEST-*/_mapping { "TEST-TEST0000" : { "mappings" : { "properties" : { "ClientReputationLevel" : { "type" : "text" }, "EventType" : { "type" : "text" }, "SrcCountry" : { "type" : "text" }, "SubType" : { "type" : "text" }, "VDOM" : { "type" : "text" }, "action" : { "type" : "text" }, "attack" : { "type" : "text" }, "attackID" : { "type" : "text" }, "dstIP" : { "type" : "ip" }, "dstPort" : { "type" : "keyword" }, "eventime" : { "type" : "date", "format" : "epoch_second" }, "ref" : { "type" : "text" }, "service" : { "type" : "text" }, "srcIP" : { "type" : "ip" } } } } }

■log

<185>Oct 19 09:00:00 SQ0000-UTM-FG01 FG: <185>date=2022-10-19 time=09:00:00 devname="aaaaatest" devid="0000000000000011" logid="0419016384" type="utm" subtype="ips" eventtype="signature" level="alert" vd="root" eventtime=1666173600 severity="critical" srcip=255.255.255.255 srccountry="Reserved" dstip=255.255.255.255 srcintf="LAG 1" srcintfrole="wan" dstintf="port16" dstintfrole="lan" sessionid=83046903 action="detected" proto=6 service="HTTPS" policyid=6 attack="Apache.Optionsbleed.Scanner" srcport=50603 dstport=443 hostname="bmmp.ciscospark.com" url="/api/v1/widget?" direction="outgoing" attackid=44633 profile="IPS_01" ref="http://www.fortinet.com/ids/VID44633" incidentserialno=1243618960 msg="apache: Apache.Optionsbleed.Scanner," crscore=30 crlevel="critical" ●日本語訳 「es-loder」について質問です。 OpenSerchのオリジナルフィールドはサポートしていますか。 それとも、ES-LoderはECSリファレンスで定義されたフィールドしか使えませんか? それとも、どこかのソースコードでECSリファレンスの一覧を定義していて、それに追記すれば対応可能ですか? ■経緯: OpenSerchでオリジナルのインデックス「TEST-TEST0000」、フィールド「"SubType":"text","EventType":"text"~」を定義しました。es-loderのuser.inにECS = SubType EventType ~ と指定してもうまく取り込めません。
nakajiak commented 2 years ago

ご質問ありがとうございます。

ログのオリジナルフィールドはそのまま取り込めます。ECSフィールドの定義は不要であればしなくても問題ありません。 恐らくまだログが取り込めていない段階なので、ecs =を外してログは取り込めるかをチャレンジしてもらえますか?

また、CloudWatch Logsの /aws/lambda/es-loaderにログが吐かれています。ERROR か WARNING ログがあると思うので確認してもらえますか?ERRORログは、CloudWatchのダッシュボードからすぐに見つけることができます。

Nanashi-i commented 2 years ago

大変お忙しい中ご回答ありがとうございます。 また、本来ここで聞くべき事ではないにもかかわらずありがとうございます。 もし気になった点がありアドバイスいただけるなら助かります。

結論: user.iniを書き換えましたが、エラーで弾かれました。

前提として、gitに上がっているCloud formationでAWS on SIEMを立ち上げたにも かかわらずIAMで弾かれているように見えてます。 (ただし、昨日何度もuser.iniの書き換えを行っておりましたが、途中から発生しております)

・気になった点として 1.user.iniをい編集するさ、rootアカウントを使用しております。 2.昨日、上記条件でdeployした際も、途中から同じようなIAMのエラーが出てました。  ⇒そのため、OpenSerchのきめ細かなアクセスコントロールのところでマスターユーザの再設定を行った経緯があります。  ※あくまでも途中からIAMのエラーが出るようになったためです。

■ナレッジとして残すために以下ERROR文も記載しておきます。  ERRORは三つ出ておりました。 1.一つ目のERROR:IAMで弾かれているように見えます。  ⇒es-loaderのIAMポリシーにすべてのサービスに対する許可(ALL-Allow)を付与しましたが同じERRORでした { "level": "ERROR", "message": "1 of logs were NOT loaded into OpenSearch Service", "location": "process_record:441", "timestamp": "2022-10-21 04:02:02,566+0000", "service": "es-loader", "cold_start": true, "function_name": "aes-siem-es-loader", "function_memory_size": "2048", "function_arn": "arn:aws:lambda:ap-northeast-1:000000000000:function:aes-siem-es-loader", "function_request_id": "1b3dd904-238c-49f9-ad31-1950faa63d2f", "s3_key": "UserLogs/TEST0000/UTM/FG_sample.txt", "s3_bucket": "aes-siem-000000000000-log", "message_error": [ { "type": "security_exception", "reason": "no permissions for [indices:admin/create] and User [name=arn:aws:iam::000000000000:role/TEST-TEST-SIME-LambdaEsLoaderServiceRoleFFD43869-ZT3L14ER0BUQ, backend_roles=[arn:aws:iam::000000000000:role/TEST-TEST-SIME-LambdaEsLoaderServiceRoleFFD43869-ZT3L14ER0BUQ], requestedTenant=null]", "log_number": 1 } ], "xray_trace_id": "1-635219b5-3c0d8c89372bfe7543f1c82b" }

2.2つ目のERROR:単に失敗したと記載されているように見えます。 { "level": "ERROR", "message": "Aborted. It may be retried", "location": "process_record:443", "timestamp": "2022-10-21 04:02:02,566+0000", "service": "es-loader", "cold_start": true, "function_name": "aes-siem-es-loader", "function_memory_size": "2048", "function_arn": "arn:aws:lambda:ap-northeast-1:000000000000:function:aes-siem-es-loader", "function_request_id": "1b3dd904-238c-49f9-ad31-1950faa63d2f", "s3_key": "UserLogs/SQ0000/UTM/FG_sample.txt", "s3_bucket": "aes-siem-000000000000-log", "xray_trace_id": "1-635219b5-3c0d8c89372bfe7543f1c82b" }

3.3つ目のERROR: [ERROR] RuntimeError: No active exception to reraise Traceback (most recent call last): File "/var/task/aws_lambda_powertools/metrics/metrics.py", line 184, in decorate response = lambda_handler(event, context) File "/var/task/aws_lambda_powertools/logging/logger.py", line 354, in decorate return lambda_handler(event, context, *args, *kwargs) File "/var/task/index.py", line 329, in decorator return func(args, **kwargs) File "/var/task/index.py", line 365, in lambda_handler main(event, context) File "/var/task/index.py", line 376, in main process_record(record) File "/var/task/index.py", line 444, in process_record raise

Nanashi-i commented 2 years ago

何度もご対応ありがとうございました。 事象は解決しました。

OpenSerch側のロールにEsLoaerのIAMロールの設定を行うことで解決しました。 登録したロール名:「(省略) LambdaEsLoaderServiceRoleFFD43869-ZT3L14ER0BUQ」

いろいろアドバイスありがとうございました。 助かりました。