【脅威インテリジェンス】第三回 OpenCTIのインストール(2)

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

ジャンルを今迄よりも広げて、脅威インテリジェンス情報をお届けすることを考えています。

今回は、前回に引き続き、立ち上がったOpenCTIの設定の確認から、MISPやAlienVaultからのフィードを設定するところまでを取り上げます。



環境(前回と同様)

  • プラットフォーム:VM(TIME4VPSを使用)。
    • OS: Ubuntu 20.04 (64-bit)
    • Processor: 2 x 2.6 GHz
    • Memory: 16384 MB (つまり16GB!)
    • Storage: 80 GB
    • Bandwidth: 1000 Mbps (Monthly limit: 16 TB)
    • 1 Gbps port speed ( 12.00 EUR )
    TIME4VPSは激安なので、上記のスペックで年間「192EUR = 25,000円程度」になります。使用感としては、スペックは問題ないですし安定しています。ただ、MISPの時に感じたのと同じく、日本からだとネットワークが遅いので、上述の1Gbps port (12.00 EUR)をつけたほうが絶対良いです。

WebUIでの確認

前回までのインストールが上手く行くと、OpenCTIのWebUIがPort:8080で立ち上がっているはずです。これにアクセスしてログイン・設定を行います。本来であればhttps化したいところですが(nginxやapacheなどでhttpsに飛ばせばいいので難しくはないはず)、今回はこのまま勧めたいと思います。

  1. ログイン画面は下記のようになっています。Portainerでのopenctiで
    
    image: opencti/platform:4.5.5
        environment:
          - NODE_OPTIONS=--max-old-space-size=8096
          - APP__PORT=8080
          - APP__ADMIN__EMAIL=hogehoge
          - APP__ADMIN__PASSWORD=fugafuga
    
    となっている部分の"hogehoge"がログインID、"fugafuga"がパスワードとなります。

  2. ログインするとダッシュボードが開きます。左ペインの「Data」を選択し、「Connectors」を選択します。

  3. 接続されているコネクタの状態が確認できます。それぞれのコネクタのアイコンの色が緑の場合には、ちゃんと動作しています。READ OPERATIONS/WRITE OPERATIONSで、コネクタからデータがデータが送られている状況が確認できます。


コネクタの追加

1. Connector for MISPの追加

  1. まず、MISP側で設定を行います。最初にMISPに管理者権限でログインして、接続用のユーザを作成します。

  2. MISPのAuth Keysを作成します。タブのAdministrationから、「List Auth Keys」を選択します。

  3. Authentication Key Indexが開くので、「Add authentication key」を選択します。

  4. ユーザを選択します。先に作成したユーザを選択します。

  5. Authkeyが表示されるのでコピーしておきます。こちらをOpenCTIサーバの方に設定します。

  6. OpenCTIサーバの設定を変更します。PortainerにログインしてStackとして「OpenCTI」を選択します。Editorのタブを選択します。

  7. Editorのタブを選択すると、OpenCTIのdocker.ymlファイルが編集できます。このymlを修正します。

  8. MISPコネクタ用のymlファイルですが、OpenCTIのコネクタのGitHubから設定を持ってきます。こちらのconnectors/external-import/以下に外部から情報をOpenCTIにインポートするコネクタがありますので、この中のOpenCTI MISP Connectorを使用します。

    connectors/external-import/misp/docker-compose.yml の設定を殆どそのまま持ってきます。3行目の「connector-misp:」以降をコピーします。

  9. 他のコネクタ類の設定に続けてMISPコネクタの設定を追記します。下記のような感じになります(volumes:以降は元々の設定です)。
    
    version: '3'
    services:
      redis:
        image: redis:6.0.10
        restart: always
        volumes:
          - redisdata:/data
    --省略--
      connector-history:
        image: opencti/connector-history:4.5.5
        environment:
          - OPENCTI_URL=http://hogehoge.secureoss.jp:8080
          - OPENCTI_TOKEN=804ab986-cca2-4fb2-a6fe-0dc4a6d02409
          - CONNECTOR_ID=1f304606-c83e-4ff1-817d-21ef75d254a0 # Valid UUIDv4
          - CONNECTOR_TYPE=STREAM
          - CONNECTOR_NAME=History
          - CONNECTOR_SCOPE=history
          - CONNECTOR_CONFIDENCE_LEVEL=3
          - CONNECTOR_LOG_LEVEL=info
        restart: always
      connector-export-file-stix:
        image: opencti/connector-export-file-stix:4.5.5
        environment:
          - OPENCTI_URL=http://hogehoge.secureoss.jp:8080
    --省略--
        restart: always
      connector-misp:
        image: opencti/connector-misp:4.5.5
        environment:
          - OPENCTI_URL=http://hogehoge.secureoss.jp:8080
          - OPENCTI_TOKEN=【OpenCTIのToken】
          - CONNECTOR_ID=20f73488-abbc-40e7-b47f-e6052f3447fa
          - CONNECTOR_TYPE=EXTERNAL_IMPORT
          - CONNECTOR_NAME=MISP
          - CONNECTOR_SCOPE=misp
          - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
          - CONNECTOR_UPDATE_EXISTING_DATA=false
          - CONNECTOR_LOG_LEVEL=info
          - MISP_URL=https://hogehoge.secureoss.jp # Required
          - MISP_REFERENCE_URL= # Optional, will be used to create external reference to MISP event (default is "url")
          - MISP_KEY=XXXXXXXXXXXXXXXXXXXXXXXX【上述のMISPで共有専用で作成したユーザに設定したAuthKey】
          - MISP_SSL_VERIFY=False # Required
          - MISP_DATETIME_ATTRIBUTE=timestamp # Required, filter to be used in query for new MISP events
          - MISP_CREATE_REPORTS=True # Required, create report for MISP event
          - MISP_CREATE_INDICATORS=True # Required, create indicators from attributes
          - MISP_CREATE_OBSERVABLES=True # Required, create observables from attributes
          - MISP_CREATE_OBJECT_OBSERVABLES=True # Required, create text observables for MISP objects
          - MISP_REPORT_CLASS=MISP Event # Optional, report_class if creating report for event
          - MISP_IMPORT_FROM_DATE=2000-01-01 # Optional, import all event from this date
          - MISP_IMPORT_TAGS=opencti:import,type:osint # Optional, list of tags used for import events
          - MISP_IMPORT_TAGS_NOT= # Optional, list of tags to not include
          - MISP_IMPORT_CREATOR_ORGS= # Optional, only import events created by this ORG (put the identifier here)
          - MISP_IMPORT_OWNER_ORGS= # Optional, only import events owned by this ORG (put the identifier here)
          - MISP_IMPORT_DISTRIBUTION_LEVELS=0,1,2,3 # Optional, only import events with the given distribution levels
          - MISP_IMPORT_THREAT_LEVELS=1,2,3,4 # Optional only import events with the given threat levels
          - MISP_IMPORT_ONLY_PUBLISHED=False
          - MISP_IMPORT_WITH_ATTACHMENTS=False # Optional, try to import a PDF file from the attachment attribute
          - MISP_IMPORT_TO_IDS_NO_SCORE=40 # Optional, use as a score for the indicator/observable if the attribute to_ids is no
          - MISP_INTERVAL=1 # Required, in minutes
        restart: always
    volumes:
      esdata:
      s3data:
      redisdata:
      amqpdata:
    

  10. ymlの修正が終わったら、「Update the stack」をクリックします。

  11. 左ペインで「Service」をクリックすると、Dockerで起動しているサービスの状態がわかります。安定するのにだいたい(環境に依存しますが)30分以上かかりますので、しばらく待ちましょう。OpenCTI_connector-mispがサービスがGreen(running)になり、replicatedが1 / 1の状態になったら、うまく動いているはずです。

  12. MISP Connectorが上手く動かないときには、まずcurlでMISPのAuthKeyを使ってアクセスできるかを確認します。この辺は、以前こちらの記事「OpenCTIとMISPの接続でハマった話(備忘録)」で紹介しましたが、最初にcurlでMISPにAPI接続できるか否かを確認したほうが良いと思います。

2. Connector for AlienVaultの追加

  1. Connector for MISPと同じ様に、PortainerのymlをEditします。まず、https://otx.alienvault.comのAPIキーを取得します。Alienvaultのデモサイト(otx.alienvault.com)のアカウントを登録し、ログインします。上のタブの「API Integration」をクリックします。

  2. DirectConnect API UsageとしてOTX Key:内にAPI接続のためのキーが表示されています。右側のアイコンをクリックするとコピーできますので、これをコピーしておきます。

  3. AlienVaultコネクタ用のymlファイルですが、MISPと同様にOpenCTIのコネクタのGitHubから設定を持ってきます。こちらのconnectors/external-import/以下に外部から情報をOpenCTIにインポートするコネクタがありますので、この中のOpenCTI AlienVault Connector を使用します。

    connectors/external-import/alienvault/docker-compose.yml の設定を殆どそのまま持ってきます。3行目の「connector-misp:」以降をコピーします。

  4. 他のコネクタ類の設定に続けてAlienVaultコネクタの設定を追記します。下記のような感じになります(volumes:以降は元々の設定です)。
    
    version: '3'
    --省略--
          - MISP_INTERVAL=1 # Required, in minutes
        restart: always
      connector-alienvault:
        image: opencti/connector-alienvault:4.5.5
        environment:
          - OPENCTI_URL=http://hogehoge.secureoss.jp:8080
          - OPENCTI_TOKEN=【OpenCTIのToken】
          - CONNECTOR_ID=e062610a-fbcf-4542-a4f5-8374a4060f12
          - CONNECTOR_TYPE=EXTERNAL_IMPORT
          - CONNECTOR_NAME=AlienVault
          - CONNECTOR_SCOPE=alienvault
          - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
          - CONNECTOR_UPDATE_EXISTING_DATA=false
          - CONNECTOR_LOG_LEVEL=info
          - ALIENVAULT_BASE_URL=https://otx.alienvault.com
          - ALIENVAULT_API_KEY=xxxxxxxxxxxxxxxxxxx【前述のようにhttps://otx.alienvault.comからコピーしてきたキー】
          - ALIENVAULT_TLP=White
          - ALIENVAULT_CREATE_OBSERVABLES=true
          - ALIENVAULT_CREATE_INDICATORS=true
          - ALIENVAULT_PULSE_START_TIMESTAMP=2020-05-01T00:00:00                  # BEWARE! Could be a lot of pulses!
          - ALIENVAULT_REPORT_TYPE=threat-report
          - ALIENVAULT_REPORT_STATUS=New
          - ALIENVAULT_GUESS_MALWARE=false                                        # Use tags to guess malware.
          - ALIENVAULT_GUESS_CVE=false                                            # Use tags to guess CVE.
          - ALIENVAULT_EXCLUDED_PULSE_INDICATOR_TYPES=FileHash-MD5,FileHash-SHA1  # Excluded Pulse indicator types.
          - ALIENVAULT_ENABLE_RELATIONSHIPS=true                                  # Enable/Disable relationship creation between SDOs.
          - ALIENVAULT_ENABLE_ATTACK_PATTERNS_INDICATES=true                      # Enable/Disable "indicates" relationships between indicators and attack patterns
          - ALIENVAULT_INTERVAL_SEC=1800
        restart: always
    volumes:
      esdata:
      s3data:
      redisdata:
      amqpdata:
    

  5. ymlの修正が終わったら、「Update the stack」をクリックします。

  6. 左ペインで「Service」をクリックすると、Dockerで起動しているサービスの状態がわかります。安定するのにだいたい(環境に依存しますが)30分以上かかりますので、しばらく待ちましょう。OpenCTI_connector-alienvaultがサービスがGreen(running)になり、replicatedが1 / 1の状態になったら、うまく動いているはずです。

フィードの確認

以上でMISP、AlienVaultの設定が終わりました。しばらくすると(システムに依りますが一晩ぐらい放置しておくと)、データが色々入ってきます。下図のように、AlienVaultのReport等も入ってきます(MISPのものはキャプチャできませんでしたが入ってきています)。

次回予告

次回は実際にOpenCTIでレポート等の検索を紹介します。


セキュリティ系連載案内

日々のメモを更新しています。

セキュリティ関係ニュースを更新しています。個別で情報出せるようになる前の簡単な情報・リンクなんかも載せていきます。

セミナー情報1

コンピュータセキュリティシンポジウム(CSS)2021併設のワークショップ、 OSSセキュリティ技術ワークショップ(OWS) 2021の企画講演セッション及び、 一般論文セッションをさせていただきます。

今年もオンラインでの開催となり、OWSトラックの一般論文セッションと企画セッションを行いますので,ご参加よろしくお願いいたします。

https://www.iwsec.org/ows/2021/


OSSに関するお困りごとは サイオス OSSよろず相談室まで

サイオスOSSよろず相談室 では、OSSを利用する中で発生する問題に対し、長年培ってきた技術力・サポート力をもって企業のOSS活用を強力に支援します。Red Hat Enterprise Linux のほか、CentOS をご利用されている環境でのサポートも提供いたします。

前へ

Linux Kernelの脆弱性(Important:CVE-2021-43057)

次へ

Linux Kernelの脆弱性(CVE-2021-43267)