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)
变量
目前没有特别的变量。
持续集成
该角色有一个 Travis 基本测试(用于 GitHub),更高级的测试使用 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、DigitalOcean、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
## 对于 DigitalOcean 构建,您需要在环境中导出 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] 在默认数据源中未找到模型 Log 的表。 请检查 MySQL 中是否存在 MISP 数据库并是否已填充。
MISP curl_tests.sh 是一次性运行的,与 kitchen verify 不同。如果重复运行,该测试将失败。
如果使用特权 Docker 和具有 MySQL 的主机,可能会遇到以下问题:
mysqld[29176]: /usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot stat shared object: Permission denied
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
。似乎与 问题 5004 相关 - 开放中。Ubuntu 22.04 似乎不被支持,因为 php8.1 而 app/composer.json 要求 php >=7.2.0,<8.0.0。
Error: Database connection "Mysql" is missing, or could not be created.
可能是由于存在多个 PHP 版本并从 CLI 调用了错误版本造成的。PHP Fatal error: Uncaught TypeError: Return value of Symfony\\Component\\Process\\Process::close() must be of the type int, null returned in phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:1466
(RHEL/RockyLinux 8 和 9):根本原因尚未识别,可能与容器/docker 相关,因为它仅在 molecule/docker 中失败,而在裸 GitHub 托管的映像中未失败。
常见问题
使用 geerlinguy.{mysql,nginx,apache} 的角色依赖不是必需的,但允许更细致的调整。
要调试 GPG 问题(如服务器设置:诊断),请参考: https://github.com/MISP/MISP/issues/413 目标文件已更改,现在是 MISP/app/Model/Server.php。
该角色以 HTTP 提供 MISP。 还有其他角色处理证书,例如 letsencrypt(例如 thefinn93.letsencrypt)。 新的 Ansible v2.2 letsencrypt 模块允许证书创建,但不支持在不重新运行角色的情况下续订。
LIEF 构建在 CentOS7 上可能需要一段时间(30-60 分钟)。如果不需要,请禁用。
RedHat Selinux 参考:
待办事项
- 该角色不管理升级(进行中/在小版本之间进行 git pull)。
- 监控除非使用 serverspec。
- 加固:apache 和 nginx 的加固在单独的角色中完成(harden-webserver)。 +Viper https://asciinema.org/a/28808 https://asciinema.org/a/28845
许可证
BSD 2-clause
MISP - Malware Information Sharing Platform & Threat Sharing
ansible-galaxy install juju4.misp