juju4.misp
Rola ansible MISP
Rola Ansible do konfiguracji MISP, platformy do wymiany informacji o zagrożeniach i złośliwym oprogramowaniu.
Alternatywy:
- 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
- rola ansible: https://github.com/MISP/MISP/pull/1413
- rola ansible: https://github.com/MISP/MISP/pull/1495
Wymagania i zależności
Ansible
Testowano na następujących wersjach:
- 2.0
- 2.2
- 2.3
- 2.4
- 2.5
Systemy operacyjne
Testowano na Ubuntu 20.04, 22.04 i CentOS 8-Stream.
Przykład Playbooka
Wystarczy dodać tę rolę do swojej listy. Na przykład:
- hosts: all
roles:
- juju4.MISP
Domyślne dane logowania admina (admin@admin.test / admin)
Zmienne
Na razie nic specyficznego.
Integracja ciągła
Ta rola ma podstawowy test travis (dla github), bardziej zaawansowany z kitchen oraz plik Vagrantfile (test/vagrant). Domyślna konfiguracja kitchen (.kitchen.yml) jest oparta na lxd, podczas gdy (.kitchen.vagrant.yml) jest oparta na vagrant/virtualbox.
Gdy upewnisz się, że wszystkie niezbędne role są obecne, możesz przetestować to używając:
$ 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
lub
$ cd /path/to/roles/juju4.MISP/test/vagrant
$ vagrant up
$ vagrant ssh
Rola ma również konfigurację packer, która pozwala na stworzenie obrazu dla VirtualBox, VMware, a ostatecznie dla DigitalOcean, LXC i innych. Podczas budowy, zaleca się robić to poza katalogiem ról, ponieważ cały katalog zostanie przesłany do boxa podczas budowy, a obecnie nie ma możliwości wykluczenia katalogu packer (https://github.com/mitchellh/packer/issues/1811).
$ cd /path/to/packer-build
$ cp -Rd /path/to/juju4.MISP/packer .
## zaktualizuj packer-*.json swoją aktualną bezwzględną ścieżką do roli ansible
## możesz dodać dodatkowe zależności ról w setup-roles.sh
$ cd packer
$ packer build packer-*.json
$ packer build -only=virtualbox-iso packer-*.json
## jeśli chcesz włączyć dodatkowe logi
$ PACKER_LOG_PATH="packerlog.txt" PACKER_LOG=1 packer build packer-*.json
## dla budowy DigitalOcean musisz wyeksportować TOKEN do środowiska.
## zaktualizuj konfigurację json na swoim setupie i regionie.
$ export DO_TOKEN=xxx
$ packer build -only=digitalocean packer-*.json
## dla Azure
$ . ~/.azure/credentials
$ packer build azure-packer-centos7.json
$ packer build -var-file=variables.json azure-packer-centos7.json
Rozwiązywanie problemów i znane problemy
Rozwiązywanie problemów:
$ tail /var/log/apache2/misp.*
$ tail /var/www/MISP/app/tmp/logs/*.log
$ cd /var/www/MISP/app/Console && ./cake CakeResque.CakeResque tail
Znane błędy:
w /var/www/MISP/app/tmp/logs/error.log Błąd: [MissingTableException] Tabela logs dla modelu Log nie została znaleziona w źródle danych default. sprawdź, czy baza danych MISP istnieje w MySQL i jest uzupełniona
Test curl w MISP curl_tests.sh wykonywany jest jednorazowo, w przeciwieństwie do kitchen verify. Jeśli powtórzysz, ten test nie powiedzie się.
jeśli korzystasz z uprzywilejowanego dockera i hosta z MySQL, możesz napotkać następujący problem:
mysqld[29176]: /usr/sbin/mysqld: błąd podczas ładowania współdzielonych bibliotek: libaio.so.1: nie można uzyskać obiektu: Odmowa dostępu
https://github.com/docker/docker/issues/7512
Docker i Redis mogą mieć również problemy, może być konieczne edytowanie konfiguracji systemd w xenial zobacz zadanie 'docker redis workaround ???'
CI czasami zawodzi przy
Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction
. Wydaje się to być związane z Issue 5004 - OtwarteUbuntu 22.04 wydaje się być nieobsługiwany, ponieważ php8.1, a app/composer.json wymaga php >=7.2.0,<8.0.0
Błąd: Połączenie z bazą danych „Mysql” jest niedostępne lub nie mogło być utworzone.
może być spowodowane, jeśli wiele wersji PHP jest obecnych i nieprawidłowa wersja jest wywoływana z 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/rockylinux8 i 9): przyczyna nie została ustalona, prawdopodobnie związana z kontenerem/docker, ponieważ występuje tylko w molecule/docker, a nie w bazowych obrazach hostowanych przez github.
FAQ
Korzystanie z zależności ról takich jak geerlinguy.{mysql,nginx,apache} nie jest wymagane, ale umożliwia lepsze dostosowanie.
Aby debugować problemy z gpg (zgodnie z Ustawieniami serwera: Diagnostyka), odwołaj się do https://github.com/MISP/MISP/issues/413 Docelowy plik został zmieniony i obecnie jest MISP/app/Model/Server.php
Rola obsługuje MISP jako http. Są inne role do obsługi certyfikatów, takie jak letsencrypt (np. thefinn93.letsencrypt) Nowy moduł letsencrypt Ansible v2.2 umożliwia tworzenie certyfikatów, ale nie odnawianie zadania bez ponownego uruchomienia roli.
Budowa LIEF może zająć trochę czasu (30-60 min) na CentOS 7. Dezaktywuj, jeśli nie jest potrzebne.
Odwołania do RedHat Selinux:
TODO
- Rola nie zarządza aktualizacjami (Praca w toku/git pull między wersjami pomocniczymi)
- Monitoring, chyba że używasz serverspec
- Zabezpieczenie: wzmocnienie Apache i Nginx odbywa się w osobnych rolach (harden-webserver) +Viper https://asciinema.org/a/28808 https://asciinema.org/a/28845
Licencja
BSD 2-klauzulowa
MISP - Malware Information Sharing Platform & Threat Sharing
ansible-galaxy install juju4.misp