misp
Ansible роль для MISP
Ansible роль для установки MISP, Платформы обмена информацией о вредоносном ПО и угрозами.
Альтернативы
- 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 .
## обновите packer-*.json с вашим текущим абсолютным путем к роли ansible для главной роли
## вы можете добавить дополнительные зависимости роли в 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] Таблица logs для модели Log не найдена в источнике данных по умолчанию. Проверьте, существует ли база данных MISP в mysql и заполнена ли она.
Скрипт curl_tests.sh для MISP выполняется один раз, в отличие от kitchen verify. Если его повторить, этот тест провалится.
если вы используете привилегированный docker и хост с mysql, вы можете столкнуться со следующей проблемой
mysqld[29176]: /usr/sbin/mysqld: ошибка при загрузке разделяемых библиотек: libaio.so.1: не удается получить доступ к разделяемому объекту: доступ запрещён
https://github.com/docker/docker/issues/7512
docker и redis тоже могут вызывать проблемы, и может потребоваться редактирование конфигурации systemd на xenial. См. задачу '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.
Ошибка: Подключение к базе данных "Mysql" отсутствует или не может быть создано.
может возникнуть, если присутствует несколько версий php, и из cli вызывается неверная версия.PHP Фатальная ошибка: Необработанный TypeError: Возвращаемое значение Symfony\\Component\\Process\\Process::close() должно быть типа int, возвращено null в phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:1466
(rhel/rockylinux8 и 9): коренная причина не установлена, возможно, связана с контейнерами/docker, так как ошибка возникает только в molecule/docker и не в чистых образах, размещенных на github.
Вопросы и ответы
Использование зависимостей ролей, таких как geerlinguy.{mysql,nginx,apache}, не является обязательным, но позволяет более точно настроить конфигурацию.
Для отладки проблем с gpg (в соответствии с настройками сервера: диагностика) смотрите https://github.com/MISP/MISP/issues/413 Целевой файл изменен и теперь MISP/app/Model/Server.php.
Роль предоставляет MISP через http. Есть другие роли для обработки сертификатов, такие как letsencrypt (например, thefinn93.letsencrypt). Новый модуль letsencrypt ansible v2.2 позволяет создавать сертификаты, но без возможности продления задачи без повторного выполнения роли.
Сборка LIEF может занять некоторое время (30-60 минут) на Centos7. Отключите, если не требуется.
Рекомендуется ознакомиться с документацией RedHat по вопросам Selinux:
Запланировано
- Роль не управляет обновлениями (в разработке/git pull между минорными версиями).
- Мониторинг, если не используется 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/ansible-MISP