Firewall Anpassungen für Monitoring von OLVM Implementierungen

Nicht jeder betreibt einen OEM – Oracle Enterprise Manager – nur um seine OLVM Landschaft zu monitoren. Da Oracle LVM eine eigene Firewall-Konfiguration mitbringt, und diese bei Patches und Upgrades jeweils erneut einspielt, muss man einige kleiner Hürden umgehen, um ein 3rd Party Monitoring Tools wie CheckMK nutzen zu können.

Gleich vorweg: OLVM hat in den letzten Jahren die Firewall-Konfigurationen nicht mehr geändert. Das bedeutet jedoch nicht, dass das in Zukunft auch so sein wird. Wenn man dieser Anleitung folgt, wird als einer der notwendigen Schritte der OLVM Firewall Manager deaktiviert. Das ist notwendig, da sonst der nächst Patch alles wieder auf den Default zurücksetzen würde – und die gemachten Anpassungen somit verloren gehen würden. Daher ist es zumindest bei Upgrades auf eine neue Version wichtig, dass man in der Dokumentation prüft, ob es Änderungen an den benötigten Ports und Firewall-Regeln gibt.

OLVM Firewall Anpassungen für CheckMK Agent

Hier ein Beispiel wie man das persistent auf der OLVM Landschaft durchführt. In dem Beispiel stellen wir die Voraussetzungen für die Nutzung eine CheckMK Agents um.

Was benötigt der CheckMK Agent in der Firewall Konfiguration auf den zu überwachenden Hosts?

  • eingehende Verbindungen
    • Port 6556/TCP
      • muss auf dem OLVM Manager und den OLVM Hosts freigeschaltet werden

OLVM Manager Host

Damit die Freischaltung im OLVM Manager persistent (auch nach einem engine-setup mit Firewall Config) vorhanden ist, muss folgendes gemacht werden.

vi /etc/firewalld/services/checkmk-agent.xml
	<?xml version="1.0" encoding="utf-8"?>
	<service>
	  <short>Checkmk Agent and ICMP</short>
	  <description>Eingehender Checkmk Zugriff (Port 6556 und Ping)</description>
	  <port protocol="tcp" port="6556"/>
	</service>

vi /etc/ovirt-engine-setup.conf.d/20-disable-firewall-manager.conf
	[environment:default]
	OVESETUP_CONFIG/firewallManager=none:None

Mit dieser Änderung greift OLVM beim engine-setup die Firewall nicht mehr an, d.h. man kann die Firewall selbst verwalten. Ohne diese Einstellung überschreibt der OLVM Manager bei jedem Patching die Konfiguration und die „fremden“ Konfigurationen. Das ist die einzige sichere Möglichkeit, dass diese Änderung auch persistent wird.

Jetzt manuell setzen:

# Holt die aktive Zone des Managers (meistens 'public' oder 'ovirt')
ACTIVE_ZONE=$(firewall-cmd --get-default-zone)

# Schaltet den Port 6556 permanent frei
firewall-cmd --permanent --zone="$ACTIVE_ZONE" --add-port=6556/tcp

# Lädt die Firewall neu, um die Änderung sofort zu aktivieren
firewall-cmd --reload

Wenn man jetzt ein engine-setup mit configure Firewall durchführt, bleibt der Port erhalten.

OLVM Hosts

Damit die Freischaltung auf den OLVM Hosts persistent (auch nach einem reinstall) vorhanden ist, muss folgendes am OLVM Manager Engine Host gemacht werden.

OLVM Manager Engine Host

Am OLVM Manager müssen die Ansible Scripts erweitert werden, damit diese bei Wartungsarbeiten immer entsprechend ausgerollt werden und diese Freischaltungen dadurch nicht verloren gehen.
Damit wird sichergestellt, dass die Konfiguration auch auf neue OLVM Hosts ausgerollt wird und auch nach Updates wieder eingespielt wird.

vi /etc/ovirt-engine/ansible/ovirt-host-deploy-post-tasks.yml

Achtung: Bei dem yml File muss die Syntax exakt passen, sonst funktioniert es nicht – am besten das Example File im gleichen Ordner als Vergleich hernehmen

- name: Checkmk-Agent Port dauerhaft auf KVM-Hosts freischalten
  ansible.posix.firewalld:
    port: 6556/tcp
    permanent: true
    immediate: true
    state: enabled
  vars:
    ansible_python_interpreter: /usr/bin/python3

Dieses Script führt der Manager automatisch aus, wenn die Ansible Scripts angewendet werden. Das passiert z.b.:

  • reinstall Host
  • Update Host via OLVM Webportal

Testen der Einstellungen

vi /tmp/test-olvm-deployment.yml

Achtung: Bei dem yml File muss die Syntax exakt passen, sonst funktioniert es nicht – am besten das Example File im gleichen Ordner als Vergleich hernehmen

- hosts: all
  gather_facts: no
  tasks:
    - name: Simuliere OLVM Post-Tasks
      include_tasks: /etc/ovirt-engine/ansible/ovirt-host-deploy-post-tasks.yml

Damit kann man mal einen dry-run durchführen:

ansible-playbook -i "olvmhost1,olvmhost2," -u root -k \
                 -e "ansible_python_interpreter=/usr/bin/python3" \
                 /tmp/test-olvm-deployment.yml --check

Die Änderung für die OLVM Hosts umsetzen

Wenn alles passt, kann man mit dem folgenden Befehl die Konfiguration ausrollen:

ansible-playbook -i "olvmhost1,olvmhost2," -u root -k \
                 -e "ansible_python_interpreter=/usr/bin/python3" \
                 /tmp/test-olvm-deployment.yml

Überprüfung der Firewall Einstellung auf allen Hosts

Auf dem OLVM Manager und den OLVM Hosts prüfen ob die gewünschten Ports freigeschaltet sind:

firewall-cmd --list-ports | grep 6556

Damit ist jetzt alles vorbereitet, dass der CheckMK Agent via TCP Port 6556 den OLVM Manager Engine Host sowie alle OLVM Hosts erreichen und damit überwachen kann.