• How we work
  • Compliance
  • Pricing
  • Features
LoginSignup
  • How we work
  • Compliance
  • Pricing
  • Features
  • GitHub
LoginSignup
    • our open source approach
    • digital sovereignty at the core
    • how we work
    • services
    • onboarding
    • security & access
    • platform security
    • monitoring & alerts
    • backup strategy
    • restore & disaster recovery
    • pricing & contract
    • SKI 02.22
      • our open source approach
      • digital sovereignty at the core
      • how we work
      • services
      • onboarding
      • security & access
      • platform security
      • monitoring & alerts
      • backup strategy
      • restore & disaster recovery
      • pricing & contract
      • SKI 02.22

      Open-source platform for security, compliance and operations. Runs on any cloud, with no vendor lock-in.

      Products

      • How we work
      • Features
      • Pricing
      • Compliance

      Company

      • About Us
      • Solutions Brief
      • Careers
      • Blog
      • Why Obmondo
      • Logos

      Contact

      • info@obmondo.com
      • sales@obmondo.com
      • Talk to us
      • Contact Us

      © 2026 Obmondo. All rights reserved.

      Terms & ConditionsUnsubscribeCookie Policy
      1. how we work
      2. ·6
      3. ·platform security
      Download as PDF

      Platform security

      The Security & Access chapter covers how our engineers reach your systems. This chapter covers what the platforms themselves do: KubeAid on Kubernetes clusters and LinuxAid on Linux servers. Every control below is configured in Git, and where a control is opt-in rather than on by default, we say so.

      1. Kubernetes clusters (KubeAid)

      Network

      Every cloud and bare-metal cluster kubeaid-cli builds runs Cilium. The kubeaid-addons chart can render a default-deny CiliumNetworkPolicy per namespace, which turns off ingress and egress for every pod in it, apart from DNS to kube-dns. Where a workload needs more, you name the pods that get it. Cilium exports every dropped packet as a Hubble metric.

      Node firewall

      On bare metal you can switch on the Cilium host firewall. It limits what the nodes themselves answer, and SSH from outside the cluster then answers only the sources you list in values-cilium.yaml. On Hetzner bare metal, kubeaid-cli offers to switch it on at the end of the build. On AWS and Azure the provider's security groups do this job, and on cloud clusters the host firewall stays off.

      Runtime

      KubeAid ships two runtime engines, off until you switch one on for a cluster. Tetragon records process execution, kernel module loads and privilege changes as kernel events over eBPF, and follows network and file access once you add a policy for it. KubeArmor can refuse an operation at the Linux Security Module hook before it runs.

      Images and secrets

      When you switch on vulnerability scanning, Trivy Operator scans the images your workloads run and keeps the critical and high findings that have a fix as report objects in the cluster. Kubescape can take its place. Secrets live encrypted in the cluster's Git repository, sealed to the key of the cluster that may open them, and only the controller inside that cluster can decrypt them. kubeaid-cli installs that controller while it builds the cluster.

      Measured enforcement

      A NetworkPolicy whose selector matches nothing looks protected in Git and leaves the pod open. So, where you switch it on, KubeAid reads what Cilium computed for each pod and reports, per workload:

      • whether the application's manifests include a policy
      • whether Cilium enforces ingress on every endpoint
      • whether Cilium enforces egress

      Where Cilium has not filled in the endpoint status, the answer is null, meaning unknown. The collector creates nothing and changes nothing. Where your cluster reports to Obmondo, it sends the snapshot over mTLS, with workload names, the images they run and their findings, but no application data, logs or secret contents.

      2. Linux servers (LinuxAid)

      Once an hour, an OpenVox agent on each server compares the server with its settings in Git and reports what has drifted. The installer sets the agent to report-only. Enforcement is a switch per class, and the hourly run corrects the classes where it is on, plus a few files LinuxAid always keeps in place, such as the SSH server configuration. The firewall, database and web settings have no such switch. They apply only when someone runs linuxaid-cli run-openvox --enforce.

      SSH

      On a fully managed server, the hourly run writes a hardened SSH configuration even while LinuxAid only reports on the rest, and SSH uses it from its next restart:

      • no password logins
      • root limited to forced commands
      • modern ciphers only, except on RHEL 6

      You can add a NetBird or WireGuard VPN to reach your servers over a private network.

      Firewall

      With the firewall switched on, each enforcing run sets the server's IPv4 iptables rules from Git:

      • the rules let in ICMP, loopback, established connections and SSH, and log and drop everything else
      • each role opens the ports it needs, such as 3306 for MariaDB
      • the run removes any rule that is not in Git, and you can leave Docker and NetBird rules in place

      Users and keys

      User accounts, groups, SSH keys and sudo rights for each server live in Git, with password hashes and expiry dates. LinuxAid reports SSH keys that are not in Git, and once it enforces, it removes them from the accounts it manages and from root. pam_access can limit who may log in and from where.

      Metrics

      Each server sends its metrics every 15 seconds over TLS to Obmondo's Prometheus and identifies itself with its OpenVox certificate.

      3. What we do not claim

      Security texts often read as if every switch were already on. Here is where ours are not.

      • Default-deny is opt-in, namespace by namespace. We turn it on with you, because denying egress that nobody has mapped causes the outage it was meant to prevent.
      • Runtime engines start out observing. KubeArmor ships in audit mode and blocks nothing until you set a posture to block.
      • Unknown stays unknown. Calling a null result unprotected inflates the problem, and calling it protected hides one.
      • Scanning covers what runs, not what was pushed. Harbor scans at push time only in projects set to scan on push, and only the images stored in Harbor.
      • Not every cluster we run has Cilium. Some older clusters, set up with kops or on AKS, do not.
      • An empty SSH list leaves SSH open. With no sources listed, the Cilium host firewall lets SSH in from anywhere.
      • A VPN does not close port 22. The LinuxAid firewall lets SSH in from any address, whichever VPN you add.
      • The LinuxAid firewall covers IPv4 only. It starts ip6tables but adds only a rule that rejects forwarded IPv6 traffic, so LinuxAid does not filter incoming IPv6 traffic on a server with an IPv6 address.
      • LinuxAid reports before it enforces. It puts drift back where enforcement is on, and in the few files it always keeps in place.
      Next chapterMonitoring & Alerts

      On this page

      • 1. Kubernetes clusters (KubeAid)
      • Network
      • Node firewall
      • Runtime
      • Images and secrets
      • Measured enforcement
      • 2. Linux servers (LinuxAid)
      • SSH
      • Firewall
      • Users and keys
      • Metrics
      • 3. What we do not claim