juju4.misp
MISP ansible ロール
MISP(マルウェア情報共有プラットフォームと脅威共有)を設定するためのAnsibleロール
代替手段
- docker: https://blog.rootshell.be/2016/03/03/running-misp-in-a-docker-container/
- rpm: https://github.com/amuehlem/MISP-RPM
- https://github.com/xme/misp-docker
- ansibleロール: https://github.com/MISP/MISP/pull/1413
- ansibleロール: https://github.com/MISP/MISP/pull/1495
要件と依存関係
Ansible
次のバージョンでテストされました:
- 2.0
- 2.2
- 2.3
- 2.4
- 2.5
オペレーティングシステム
Ubuntu 20.04、22.04およびCentOS 8-Streamでテストされています。
例プレイブック
このロールをリストに含めるだけです。 例えば
- hosts: all
roles:
- juju4.MISP
デフォルトの管理者資格情報 (admin@admin.test / admin)
変数
特にありません。
継続的インテグレーション
このロールにはGitHub用のTravis基本テストがあり、KItchenを使ったより高度なテストとVagrantfile(test/vagrant)もあります。 デフォルトのKItchen設定(.kitchen.yml)はlxdベースであり、(.kitchen.vagrant.yml)はvagrant/virtualboxベースです。
必要なすべてのロールが揃っていることを確認したら、次のコマンドでテストできます:
$ gem install kitchen-ansible kitchen-lxd_cli kitchen-sync kitchen-vagrant
$ cd /path/to/roles/juju4.MISP
$ kitchen verify
$ kitchen login
$ KITCHEN_YAML=".kitchen.vagrant.yml" kitchen verify
または
$ cd /path/to/roles/juju4.MISP/test/vagrant
$ vagrant up
$ vagrant ssh
ロールにはPacker設定も含まれており、VirtualBox、VMware、デジタルオーシャン、LXCなどのイメージを作成できます。 これをビルドする際は、すべてのディレクトリがビルド中にボックスにアップロードされるため、ロールディレクトリの外で行うことをお勧めします。 そして、Packerディレクトリを除外することは現時点ではできません(https://github.com/mitchellh/packer/issues/1811)。
$ cd /path/to/packer-build
$ cp -Rd /path/to/juju4.MISP/packer .
## メインロールの現在の絶対的なAnsibleロールパスでpacker-*.jsonを更新
## setup-roles.sh内で追加のロール依存関係を追加できます
$ cd packer
$ packer build packer-*.json
$ packer build -only=virtualbox-iso packer-*.json
## 追加のログを有効にしたい場合
$ PACKER_LOG_PATH="packerlog.txt" PACKER_LOG=1 packer build packer-*.json
## デジタルオーシャンのビルドの場合、環境にTOKENをエクスポートする必要があります。
## セットアップと地域のjson設定を更新します。
$ export DO_TOKEN=xxx
$ packer build -only=digitalocean packer-*.json
## Azureの場合
$ . ~/.azure/credentials
$ packer build azure-packer-centos7.json
$ packer build -var-file=variables.json azure-packer-centos7.json
トラブルシューティングと既知の問題
トラブルシューティング
$ tail /var/log/apache2/misp.*
$ tail /var/www/MISP/app/tmp/logs/*.log
$ cd /var/www/MISP/app/Console && ./cake CakeResque.CakeResque tail
既知のバグ
/var/www/MISP/app/tmp/logs/error.log に、 エラー: [MissingTableException] データソースdefaultにモデルLogのためのテーブルが見つかりません。 mispデータベースがMySQLに存在し、内容があるか確認してください。
MISP curl_tests.shは一度だけ実行されるように作成されており、繰り返すとこのテストは失敗します。
特権Dockerを使用し、MySQLをホストする場合、次の問題が発生する可能性があります。
mysqld[29176]: /usr/sbin/mysqld: エラーが共有ライブラリの読み込み中に発生しました: libaio.so.1: 共有オブジェクトが見つかりません: 許可が拒否されました
https://github.com/docker/docker/issues/7512
DockerとRedisにも問題がある可能性があり、Xenial上でsystemd設定を編集する必要があります。 タスク 'docker redis workaround ???' を参照してください。
CIが時々
Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction
で失敗します。これは Issue 5004 に関連しているようです。Ubuntu 22.04はサポートされていないようで、php8.1とapp/composer.jsonはphp >=7.2.0,<8.0.0を要求します。
Error: データベース接続 "Mysql" が欠落しているか、作成できませんでした。
は、複数のphpバージョンが存在し、CLIから間違ったバージョンが呼ばれると発生する可能性があります。PHP Fatal error: Uncaught TypeError: Symfony\\Component\\Process\\Process::close()の戻り値がintの型である必要がありますが、nullが返されました
(rhel/rockylinux8および9):根本原因は特定されていませんが、コンテナ/dockerに関連している可能性があります。
FAQ
geerlinguy.{mysql,nginx,apache}のようなロール依存関係は必須ではありませんが、より細かい調整が可能です。
GPGの問題をデバッグするには(サーバー設定:診断に従い)、次のURLを参照してください。 https://github.com/MISP/MISP/issues/413 ターゲットファイルは変更され、現在はMISP/app/Model/Server.phpです。
このロールはMISPをHTTPとして提供します。 証明書を扱うための他のロール(例:thefinn93.letsencrypt)もあります。 新しいAnsibleのv2.2 letsencryptモジュールは証明書の作成を可能にしますが、ロールを再実行せずにタスクの更新はできません。
LIEFのビルドには時間がかかる場合があります(30〜60分)。必要ない場合は無効にしてください。
RedHatのSelinuxに関する参考文献:
TODO
- このロールはアップグレードを管理していません(進行中/gitプルはマイナーリリースの間で行われます)
- モニタリング(serverspecを使用しない限り)
- ハードニング:apacheとnginxのハードニングは別のロール(harden-webserver)で行われます。 +Viper https://asciinema.org/a/28808 https://asciinema.org/a/28845
ライセンス
BSD 2条項
MISP - Malware Information Sharing Platform & Threat Sharing
ansible-galaxy install juju4.misp