Skip to main content
Version: NG-3.1

vuSmartMaps – Default Firewalld Whitelisting Configuration

Purpose​

vuSmartMaps installation generally mandates any firewalls on the cluster nodes to be disabled. This is to avoid conflicting rules that block K8S cluster communications managed by iptables. However in some production deployments, firewalld is mandated by organization’s InfoSec compliance. Use the whitelisting configurations mentioned here to ensure vuSmartMaps cluster and external communications are not impacted.

Default Whitelisting Configuration​

Run the following on every node, as root, before or immediately after enabling firewalld:

Trusted Zone — Kubernetes Internal Interfaces​

Move Kubernetes-internal interfaces to the trusted zone (unrestricted) and trust the pod/service CIDRs:

# Trusted zone: K8s internal interfaces -- ACCEPT all, no restrictions
firewall-cmd --permanent --zone=trusted --add-interface=cni0
firewall-cmd --permanent --zone=trusted --add-interface=flannel.1
firewall-cmd --permanent --zone=trusted --add-source=10.32.0.0/20 # pod CIDR
firewall-cmd --permanent --zone=trusted --add-source=10.96.0.0/22 # service CIDR

Public Zone — External Interface​

Bind the public zone only to the real external interface, and allow baseline admin access:

# Public zone: external interface only
# eth0 = real external interface | verify with 'ip a' before applying
firewall-cmd --permanent --zone=public --add-interface=eth0
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --permanent --zone=public --add-service=cockpit
firewall-cmd --permanent --zone=public --add-service=dhcpv6-client

Public Zone — Kubernetes Control Plane Ports​

firewall-cmd --permanent --zone=public --add-port=6443/tcp # Kubernetes API server
firewall-cmd --permanent --zone=public --add-port=2379-2380/tcp # etcd
firewall-cmd --permanent --zone=public --add-port=10250/tcp # kubelet
firewall-cmd --permanent --zone=public --add-port=10257/tcp # controller-manager
firewall-cmd --permanent --zone=public --add-port=10259/tcp # scheduler
firewall-cmd --permanent --zone=public --add-port=8472/udp # Flannel VXLAN
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp # Kubernetes NodePort range

Public Zone — vuSmartMaps Application Ports​

firewall-cmd --permanent --zone=public --add-port=9092/tcp # Kafka
firewall-cmd --permanent --zone=public --add-port=9094/tcp # Kafka TLS
firewall-cmd --permanent --zone=public --add-port=9000/tcp # MinIO S3 API
firewall-cmd --permanent --zone=public --add-port=9001/tcp # MinIO Console
firewall-cmd --permanent --zone=public --add-port=8123/tcp # ClickHouse HTTP
firewall-cmd --permanent --zone=public --add-port=9009/tcp # ClickHouse replication
firewall-cmd --permanent --zone=public --add-port=4317/tcp # OpenTelemetry gRPC
firewall-cmd --permanent --zone=public --add-port=4318/tcp # OpenTelemetry HTTP
firewall-cmd --permanent --zone=public --add-port=8080/tcp # HTTP UI / Keycloak
firewall-cmd --permanent --zone=public --add-port=8443/tcp # HTTPS UI
firewall-cmd --permanent --zone=public --add-port=9444/tcp # vuSmartMaps API
firewall-cmd --permanent --zone=public --add-port=514/udp # Syslog
firewall-cmd --permanent --zone=public --add-port=5514/udp # Syslog (alt)

Masquerade, Forwarding and Anti-Spoofing​

firewall-cmd --permanent --zone=public --add-forward
firewall-cmd --permanent --zone=public --add-masquerade

# Anti-spoofing
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="127.0.0.1" destination not address="127.0.0.1" drop'
firewall-cmd --permanent --add-rich-rule='rule family="ipv6" source address="::1" destination not address="::1" drop'

Apply and Verify​

firewall-cmd --reload
firewall-cmd --zone=public --list-all
firewall-cmd --zone=trusted --list-all

Instructions for CSG / Linux Administrators​

  • Treat Section 2 above as the DEFAULT whitelisting configuration for every vuSmartMaps node that runs firewalld.

  • Verify the actual external NIC name (ip a / ip route) before running Section 2.2 — do not assume eth0 if the environment uses a different NIC name.

  • Apply the same configuration identically on all nodes in the cluster.

  • After applying, restart kube-proxy if the cluster is already running: kubectl rollout restart daemonset kube-proxy -n kube-system.

  • Do not place cni0 / flannel.1 in the public zone — this silently blocks pod-to-API traffic and breaks CoreDNS.

Handling Port Changes in the Target Environment​

note

If any vuSmartMaps component is reconfigured to use a port different from the defaults listed in Section 2, that port must be explicitly whitelisted with firewall-cmd and the firewall must be reloaded. Do not assume a non-default port will work without this step — firewalld default-denies anything not explicitly listed in the public zone.

Example — Adding a Custom TCP Port​

Example: a component originally on 8443/tcp is moved to 8543/tcp.

firewall-cmd --permanent --zone=public --add-port=8543/tcp
firewall-cmd --reload
firewall-cmd --zone=public --list-ports # confirm 8543/tcp is listed

Example — Adding a Custom UDP Port​

Example: syslog is reconfigured from 5514/udp to 6514/udp.

firewall-cmd --permanent --zone=public --add-port=6514/udp
firewall-cmd --reload
firewall-cmd --zone=public --list-ports # confirm 6514/udp is listed

Always use --permanent when adding the port so the rule survives a reboot, and always follow it with firewall-cmd --reload to activate the change.