LoginSignup
1
1

More than 3 years have passed since last update.

社内でSOC構築してみた④ #EXIST設定編

Last updated at Posted at 2020-11-09

Existの構築に関する記事。
社内でSOC構築してみた① #EXIST概要編
社内でSOC構築してみた② #MISP構築編
社内でSOC構築してみた③ #EXIST構築編
社内でSOC構築してみた④ #EXIST設定編

※注意
本記事の設定関連について、EXISTを/opt配下にインストールしたことを前提に記載しています。

設定に際して

ここではEXISTを構築したのちデータを収集するための設定について記載します。
なお設定とは書いていますが、設定ファイルへの記載内容からコードにおいて修正が必要な個所等について記載します。

MISPを除くAPIキーの取得方法については記載いたしませんのが、自身で調査して下さい。

設定ファイルへの記述内容


ここでは設定ファイルに記載する内容について記載します。

1.IP関連の情報収集

まず最初にIP関連の情報を収集するため/opt/exist/conf/exist.confを設定します。
/opt/exist/conf/exist.conf.templateをコピーして以下の項目を記載します。

#VirusTotalのAPIKey
[vt]
baseURL = https://www.virustotal.com/vtapi/v2/
apikey = YOUR_KEY

#GeoLite2のDBを設置したパス。GeoLite2のアカウントを取得して、DBを取得する。
[geoip]
database = /path/to/your/GeoLite2-City.mmdb

#ShodanのAPIKey
[shodan]
baseURL = https://api.shodan.io/shodan/host/
apikey = YOUR_API_KEY

#CensysのAPIKeyとSecret Key
[censys]
baseURL = https://censys.io/api/v1/
api_id = YOUR_API_ID
secret = YOUR_SECRET

#AbuseIPDBのAPIKey
[abuse]
baseURL = https://api.abuseipdb.com/api/v2/check
apikey = YOUR_API_KEY

2.Hunterの設定

次にHunterを動すための設定を行います。
/opt/exist/scripts/hunter/conf/hunter.conf.templateをコピーして
/opt/exist/scripts/hunter/conf/hunter.confを設定します。

#EXISTを設置したパスを設定
[exist]
syspath = /path/to/your/exist

#SLACKの設定(今回はSLACKを使用しないため記載)
[slack]
token = YOUR_TOKEN
twitter_hunter_user = TwitterHunter
threat_hunter_user = ThreatHunter
news_hunter_user = NewsHunter
postMessageURL = https://slack.com/api/chat.postMessage
createChannelURL = https://slack.com/api/channels.create

#TwitterのAPIを設定
#TwitterのDeveloperアカウントで18個分APIKeyを取得して登録
[twitter]
filter = https://stream.twitter.com/1.1/statuses/filter.json
showuser = https://api.twitter.com/1.1/users/show.json

[auth-hunter00]
CK = YOUR_CK
CS = YOUR_CS
AT = YOUR_AT
AS = YOUR_AS

[auth-hunter01]
CK = YOUR_CK
CS = YOUR_CS
AT = YOUR_AT
AS = YOUR_AS

[auth-hunter02]
CK = YOUR_CK
CS = YOUR_CS
AT = YOUR_AT
AS = YOUR_AS

3.Trackerの設定

情報を収集するためのTrackerの設定を行います。
/opt/exist/scripts/insert2db/conf/insert2db.conf.templateをコピーして
/opt/exist/scripts/insert2db/conf/insert2db.confを設定します。

#EXISTを設置したパスを設定
[exist]
syspath = /path/to/your/exist

#構築したMISPのURLとAPIKey
#すでにMISPがあるのであれば、そちらのURLと発行されたAPIKeyでもOK
[misp]
MISP_URL = http://YOUR_MISP_URL
API_KEY = YOUR_MISP_API_KEY

#malshareのAPIKey
[malshare]
api_key = YOUR_API_KEY

#AbuseIPDBのAPIkey
[abuse]
api_key = YOUR_API_KEY

#TwitterのDeveloperアカウントで生成したAPIkey
[twitter]
timeline = https://api.twitter.com/1.1/statuses/home_timeline.json
CK = YOUR_CK
CS = YOUR_CS
AT = YOUR_AT
AS = YOUR_AS

#inoreaderのAPIKey
[inoreader]
AppID = YOUR_APPID
AppKey = YOUR_APPKEY
Email = YOUR_EMAIL
Passwd = YOUR_PASSWD

以上が設定になります。

2.コードの修正

インストールした際にデフォルトでは動かず、設定値も誤っていなかったためコードを確認したところいくつか修正の必要な個所がありました。あくまで私の環境のみ発生した事象であって、他の環境では問題ないかもしれません。
動かない方がいれば参考にして頂ければと思います。

1.シバンの変更

※以下はあくまで私の対処方法になります。
ExistはPython3系で動いていますが、今回私が使用してるCentOS7系ではPython2系がデフォルトでインストールされかつpythonコマンドのパスはPython2系に通されています。

ところがExistのPythonの全ソースのシバンは以下の様にデフォルトのpythonが指定されています。

#!/usr/bin/env python

ではPython3系をpythonコマンドに通したら?と言われそうですが私の場合は以前変更した際にyumが失敗しました。
原因はyumがPython2系で書かれていたため失敗したようです。

他にもそのようなコマンドが無いかは調べてはいませんが、私の場合は安全のためExistのPythonの全ソースのシバンを以下の様に変更しました。

#!/usr/bin/env python
#↓以下に変更
#!/usr/bin/env python3

余談ですがシバンとは?という方は以下を確認してください。
シバン (Unix) - Wikipedia

2.ライブラリファイルの修正

※以下はあくまで私の対処方法になります。
動作確認を行った際に、TrackerやHunterが動かなかったため調査したところ以下のソースの変更が必要となりました。
対象のファイルと個所は、以下5つのファイルが参照しているEXISTの変数conffile のパスになります。

/opt/exist/lib/abuse.py
/opt/exist/lib/censys.py
/opt/exist/lib/geoip.py
/opt/exist/lib/shodan.py
/opt/exist/lib/vt.py

修正箇所はほぼ共通で以下のファイルパスを/opt/exist/conf/exist.confが参照できるよう変更します。
変更方法については、各々の好みもあるのでそちらに合わせて変更して下さい。

conffile = 'conf/exist.conf'

3.Threatの取得について

ここでは詳細な設定は割愛して、発生しうる不具合と対処について簡単に記載します。

まず発生しうる不具合ですがデフォルトのままでは、Threatの情報が取得できません。
原因としては、以下の2つとなります。
・MISPのWebサーバーのSSLが未設定
・MISPにhttpで接続すると127.0.0.1にリダイレクトするたね

私の場合はhttpでアクセスしても127.0.0.1へリダイレクトしないようApacheの設定を変更して、対応しました。

4.Cronの設定

ここまでで、設定周りやソースの修正について記載しました。

最後にEXISTを動かすためにCronでの起動が必要なファイルを記載します。
まずTrackerで情報収集するためのファイル。

/opt/exist/scripts/insert2db/reputation/insert2db.py
/opt/exist/scripts/insert2db/reputation/insert2db.py
/opt/exist/scripts/insert2db/twitter/insert2db.py
/opt/exist/scripts/insert2db/exploit/insert2db.py
/opt/exist/scripts/insert2db/threat/insert2db.py
/opt/exist/scripts/insert2db/news/insert2db.py
/opt/exist/scripts/insert2db/vuln/insert2db.py

次にHunterで情報を監視するために、以下のファイルをCronで起動します。

/opt/exist/scripts/hunter/news/nw_watchhunter.py
/opt/exist/scripts/hunter/threat/th_watchhunter.py
/opt/exist/scripts/hunter/twitter/tw_watchhunter.py

なお起動のタイミングですが、私はTwitterが1分単位であとは1時間単位としました。

最後に古いデータのお掃除のため以下の2つを日次で起動します。

/opt/exist/scripts/url/delete_webdata.sh
/opt/exist/scripts/url/delete_oldtaskresult.sh

以上となります。

今後の活用について

今回は構築から設定まで、EXISTについて記載しました。
今後はEXISTの活用法方法や運用について、実践を積みながらナレッジを記載できればと思います。

またEXIST単体ではなく他のツールとの連携や活用についても検証していきたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1