AnsibleでMineMeldをインストールしてみた
皆さんは、OSINTというものをご存じでしょうか?
OSINTは「Open Source Intelligence」の略で、「一般に公開されている脅威情報」ととらえていただければよいかなと思います。
本日は、そのOSINT情報を集めて、好きな形で出力してくれるツールとして、MineMeldというOSSをAnsibleを使ってインストールしてみます。
Ansible関連の実践記事一覧はこちら。
目的
- Minemeldが仕事でつかえるかどうか判断するため
OSINTの情報を起点にAnsibleをHubにして、セキュリティ製品への設定を自動化したいなと考えています。
MineMeldとは?
セキュリティ機能も活用可能なファイアウォールを出されているPalo Alto NetworksさんがOSSで提供する、OSINT情報蓄積・出力用ツールです。
同様のツールで「MISP」というものもあります。
【参考】MISP公式サイト
公式サイト
MineMeldの公式サイトは以下URLです。
公式インストール手順
以下URLのWikiに記載されています。
User's Guide · PaloAltoNetworks/minemeld Wiki · GitHub
今回は、ソースコードからインストールしますので、以下URLの情報を参考に作業をしています。
GitHub - PaloAltoNetworks/minemeld-ansible: Ansible playbook for installing MineMeld on Linux
環境
全部仮想サーバ、同一ネットワーク内です。
Minemeldをインストールする対象のサーバは、ansibleユーザをwheelに入れてPWなしでsudoできる状態にしたのみです。
作成したPlaybook
公式のインストール手順を参考に、以下のようなPlaybookを作成しました。
install_minemeld.yml --- - hosts: all gather_facts: no become: yes vars: user_name: ansible tasks: - name: Yum update yum: name: "*" state: latest - name: Install packages yum: state: latest name: - wget - gcc - git - python-devel - libffi-devel - openssl-devel - zlib-devel - sqlite-devel - bzip2-devel - name: Get bootstrap get_url: url: https://bootstrap.pypa.io/get-pip.py dest: /home/{{ user_name }}/ - name: Exec bootstrap file command: cmd: python get-pip.py - name: Install ansible pip: name: ansible state: latest - name: Git clone Minemeld git: repo: https://github.com/PaloAltoNetworks/minemeld-ansible.git dest: /$HOME/minemeld-ansible - name: Play ansible playbook command: cmd: ansible-playbook -i 127.0.0.1 /$HOME/minemeld-ansible/local.yml # ↑ここを改善できないものか… - name: Usergroup change user: name: "{{ user_name }}" append: yes groups: minemeld - name: reboot reboot:
インストール手順の中に、MineMeldインストール用のPlaybookをGithubからクローンしてきて、対象サーバ上でPlaybookを実行する、というような項目があります。 Playbookでは、SELINUX用の設定もしっかり実施してくれます。
全体の実行時間では、その項目が最も長くなります。(10分くらい?)
理想はAnsible実行サーバ側からそのタスクの状況をモニタリングできるとよいのですが…include_tasksとかでやろうと思っても上手く行きませんでした。
1個上のダウンロード先でdelegate_toでlocalhostを指定してAnsible実行ホスト側にPlaybookを落としてきても、そのPlaybookの一番上に「hosts: localhost 」が入っているためです。変数指定で上書きとかできるんだっけか…
良いアイディアをお持ちの方は教えていただけると嬉しいです。
インストール用のPlaybookは、以下に公開されています。
作業結果
無事、インストールが完了しました。
インストール実施確認
https://<minemeld_ipaddress>/
httpでアクセスしてもリダイレクトしてくれます。
初期のユーザ名は以下の通り。
項目 | 値 |
---|---|
user | admin |
password | minemeld |
ログイン情報を入力し、ログインしてみます。
ちゃんと動いていることが確認できました。
今後
このMineMeldを使って、セキュリティ製品へのブロックリスト投入などを自動化する検証を進めていこうと思います。
本当はインストール実施確認とかまでPlaybook化できるといいんですよね。もうちょっと考えよ…