mondoo.client

Mondoo Paket Ansible Rolle

Mondoo Ansible Rolle Illustration

Überblick

Diese Rolle installiert cnquery und cnspec auf Linux- und Windows-Servern.

Sie macht:

  • Installiert die signierten Binaries cnquery und cnspec
  • Registriert cnquery und cnspec bei der Mondoo-Plattform
  • Aktiviert den cnspec-Dienst auf Linux und Windows

Unterstützt werden:

  • Amazon Linux
  • Debian
  • Red Hat Enterprise Linux und Derivate (CentOS/AlmaLinux/Rocky Linux)
  • SUSE & openSUSE
  • Ubuntu
  • Windows 10, 11, 2016, 2019, 2022

Die Rolle ist im Ansible Galaxy veröffentlicht: Mondoo/Client Rolle.

Anforderungen

  • Ansible > 2.5

Rollenvariablen

Name Standardwert Beschreibung
registration_token_retrieval manuell manuell erfordert die Einstellung von ``registration_token`
registration_token n/a Manuell den Registrierungs-Token der Mondoo-Plattform festlegen, der zur Registrierung von cnquery und cnspec verwendet wird
force_registration false Erzwingt die erneute Registrierung bei jedem Durchlauf

Abhängigkeiten

Diese Rolle hat keine Rollenabhängigkeiten

Beispiel: Ansible-Playbook auf Amazon EC2 Linux-Instanz anwenden

Dieses Playbook zeigt, wie man die Mondoo-Paketrolle verwendet, um cnquery und cnspec auf mehreren Instanzen zu installieren:

  1. Erstelle ein neues hosts Inventar. Füge deinen Host zur Gruppe hinzu.
[linux_hosts]
54.172.7.243  ansible_user=ec2-user
  1. Erstelle eine playbook.yml und ändere das registration_token:
---
- hosts: linux_hosts
  become: yes
  roles:
    - role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
      vars:
        registration_token: "changeme"

Zusätzlich unterstützen wir folgende Variablen:

Variable Beschreibung
force_registration: true auf true setzen, wenn du cnquery und cnspec erneut registrieren möchtest
ensure_managed_client: true stellt sicher, dass die konfigurierten Clients in Mondoo als verwaltete Clients konfiguriert sind
proxy_env['https_proxy'] Setze den Proxy für den cnspec-Client
annotations Setze Annotationen/TAGS für den Knoten
update_linux_enabled auf true setzen, wenn du die Aktualisierungsaufgabe für Linux über Cron aktivieren möchtest
update_linux_cron_day Definiere das Aktualisierungsintervall in Tagen für das cnspec-Update, Beispiel */3 für alle 3 Tage
update_linux_cron_hour Definiere die Stunde, zu der die Aufgabe durchgeführt werden soll
update_linux_cron_minute Definiere die Minute, zu der die Aufgabe durchgeführt werden soll
update_windows_enabled auf true setzen, wenn du die Aktualisierungsaufgabe für Windows aktivieren möchtest
update_windows_interval Definiere das Aktualisierungsintervall in Tagen für das cnspec-Update
update_windows_time Definiere die Zeit, zu der die Aufgabe durchgeführt werden soll
timer Definiere den Timer, um ein Scanintervall in Minuten festzulegen. Der Standardwert ist 60.
splay Definiere die Verzögerung bei der Scanzeit
---
- hosts: linux_hosts
  become: yes
  roles:
    - role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
        annotations: "[email protected],env=production"

Wenn du cnspec hinter einem Proxy verwenden möchtest:

---
- hosts: linux_hosts
  become: yes
  vars:
    proxy_env:
      http_proxy: "http://192.168.56.1:3128"
      https_proxy: "http://192.168.56.1:3128"

  roles:
    - role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
      environment: "{{proxy_env}}"

Wenn du die Windows-Aktualisierungsaufgabe nutzen möchtest:

---
- hosts: windows_hosts
  become: yes

  roles:
    - role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
        update_windows_enabled: true
        update_windows_interval: "1"
        update_windows_time: "15:04"

Wenn du die Linux-Aktualisierungsaufgabe nutzen möchtest:

---
- hosts: linux_hosts
  become: yes

  roles:
    - role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: true
        ensure_managed_client: true
        update_linux_enabled: true
        update_linux_cron_day: "*"
        update_linux_cron_hour: "11"
        update_linux_cron_minute: "40"
  1. Führe das Playbook mit der lokalen Hosts-Datei aus:
# Mondoo-Rolle von GitHub herunterladen
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git

# (Alternative) Mondoo-Rolle von Ansible Galaxy herunterladen
ansible-galaxy install mondoo.client

# wende das Playbook an
ansible-playbook -i hosts playbook.yml
  1. Melde dich bei der Mondoo-Konsole an, um die Scanergebnisse zu sehen.

Ansible-Playbook auf Amazon EC2 Windows-Instanz anwenden

Wenn du Windows verwendest, lies die Ansible-Dokumentation zum WinRM-Setup oder zum SSH-Setup.

  1. Erstelle ein neues hosts Inventar. Füge deinen Host zur Gruppe hinzu.
[windows_hosts]
123.123.247.76 ansible_port=5986 ansible_connection=winrm ansible_user=Administrator ansible_password=changeme ansible_shell_type=powershell ansible_winrm_server_cert_validation=ignore

oder wenn du SSH verwenden möchtest:

3.235.247.76 ansible_port=22 ansible_connection=ssh ansible_user=admin ansible_shell_type=cmd
  1. Erstelle eine playbook.yml und ändere das registration_token:

Wenn du Windows anvisierst, ist die Konfiguration etwas anders, da become deaktiviert werden muss:

- hosts: windows_hosts
  roles:
    - role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
      vars:
        registration_token: "changeme"
        force_registration: false
  1. Führe das Playbook mit der lokalen Hosts-Datei aus:
# Mondoo-Rolle von GitHub herunterladen
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git

# (Alternative) Mondoo-Rolle von Ansible Galaxy herunterladen
ansible-galaxy install mondoo.client

# wende das Playbook an
ansible-playbook -i hosts playbook.yml

Testen

Für Tests verwendet diese Rolle Molecule. Du kannst die Abhängigkeiten über:

pip install molecule
pip install docker
pip install 'molecule-plugins[docker]'

Die molecule CLI deckt den Testzyklus ab:

# Molecule zurücksetzen
molecule reset
# Maschinen mit Ansible zusammenführen
image=geerlingguy/docker-ubuntu2204-ansible molecule converge
# Molecule-Tests mit cnspec ausführen
image=geerlingguy/docker-ubuntu2204-ansible molecule verify
# Zum Debuggen kannst du dich bei einzelnen Hosts anmelden
molecule login --host ubuntu
# Testaufbau zerstören
molecule destroy
image=geerlingguy/docker-ubuntu2204-ansible molecule test
image=rsprta/opensuse-ansible molecule test

HINWEIS: Um auf MacOS M1 testen zu können, benötigst du ARM-kompatible Docker-Images wie oben zu sehen.

Für das Linting verwenden wir ansible-lint:

pip3 install ansible-lint

Dann kannst du alle lokalen Probleme mit:

ansible-lint

Autor

Mondoo, Inc

FAQ

Fehler 'module' Objekt hat kein Attribut 'HTTPSHandler'

TASK [mondoo : Mondoo RPM-Schlüssel herunterladen] ********************************
    fatal: [suse]: FEHLER! => {"changed": false, "module_stderr": "Verbindung zu 127.0.0.1 geschlossen.\r\n", "module_stdout": "Traceback (most recent call last):\r\n  Datei \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", Zeile 113, in <module>\r\n    _ansiballz_main()\r\n  Datei \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", Zeile 105, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  Datei \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", Zeile 48, in invoke_module\r\n    imp.load_module('__main__', mod, module, MOD_DESC)\r\n  Datei \"/tmp/ansible_get_url_payload_103dVU/__main__.py\", Zeile 308, in <module>\r\n  Datei \"/tmp/ansible_get_url_payload_103dVU/ansible_get_url_payload.zip/ansible/module_utils/urls.py\", Zeile 346, in <module>\r\nAttributeError: 'module' Objekt hat kein Attribut 'HTTPSHandler'\r\n", "msg": "MODULFEHLER\nSiehe stdout/stderr für den genauen Fehler", "rc": 1}
sudo zypper install python python2-urllib3 python3 python3-urllib3

Fehler ansible.legacy.setup auf Windows mit SSH

fatal: [123.123.247.76]: FEHLER! => {"ansible_facts": {}, "changed": false, "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "Parameterformat nicht korrekt - ;\r\n", "module_stdout": "", "msg": "MODULFEHLER\nSiehe stdout/stderr für den genauen Fehler", "rc": 1}}, "msg": "Folgende Module konnten nicht ausgeführt werden: ansible.legacy.setup\n"}

Ansible funktioniert in Kombination mit Win32-OpenSSH-Versionen älter als v7.9.0.0p1-Beta nicht, wenn powershell der Shell-Typ ist. Setze den Shell-Typ auf cmd.

Fehler: Du musst 'jmespath' installieren, bevor du den json_query-Filter ausführst"

Stelle sicher, dass jmespath in derselben Python-Umgebung wie Ansible installiert ist:

pip install jmespath

Ich möchte es mit einem nicht unterstützten Betriebssystem testen

Füge Folgendes zu main.yml hinzu und drucke die ansible_facts aus, um zu sehen, was verwendet wird und passe die when-Bedingungen an:

- name: Alle verfügbaren Fakten drucken
  ansible.builtin.debug:
    var: ansible_facts

Trete der Community bei!

Tritt den Mondoo Community GitHub-Diskussionen bei, um über Policy as Code und Sicherheitsautomatisierung zu diskutieren.

Über das Projekt

Install and configure cnquery and cnspec

Installieren
ansible-galaxy install mondoo.client
GitHub Repository
Lizenz
other
Downloads
12.4k
Besitzer
Cloud-Native Security & Vulnerability Management