<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hexaxia Labs</title><description>Engineering blog from Hexaxia Labs. Open source infrastructure, security tooling, and technical work from the Hexaxia group.</description><link>https://labs.hexaxia.tech/</link><item><title>389DS SRG Baseline: A Machine-Consumable Hardening Catalog for 389 Directory Server</title><link>https://labs.hexaxia.tech/blog/389ds-srg-baseline-release/</link><guid isPermaLink="true">https://labs.hexaxia.tech/blog/389ds-srg-baseline-release/</guid><description>43 NIST 800-53 and DISA SRG-mapped controls for 389 Directory Server. Machine-consumable, schema-first, and applicable to RHDS and Red Hat IDM. Alpha, honest about it.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;389 Directory Server is one of the most widely deployed LDAP implementations in Linux environments. It underpins identity infrastructure across Red Hat, CentOS, Rocky Linux, and Fedora deployments. If you run Linux at any scale, there is a reasonable chance directory services are somewhere in your stack.&lt;/p&gt;
&lt;p&gt;The hardening guidance for it is scattered. The DISA STIG for 389DS was withdrawn. The official documentation covers configuration but not security posture. If you want to harden a production 389DS instance against NIST 800-53 or DISA SRG requirements today, you are assembling that picture from multiple sources and hoping nothing falls through.&lt;/p&gt;
&lt;p&gt;I started working on this problem about two years ago. At the time, I expected someone else would publish something before I got far enough to make it worth releasing. Nobody did. The gap that existed then still exists now, so I pulled the project out of storage, rebuilt it properly, and decided to push it forward.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://labs.hexaxia.tech/389ds-srg-baseline/&quot;&gt;389DS SRG Baseline&lt;/a&gt; is the result.&lt;/p&gt;
&lt;h2&gt;What It Is&lt;/h2&gt;
&lt;p&gt;43 security controls for 389 Directory Server, organized across 9 domains: network security, logging and monitoring, configuration management, system hardening, identity and access management, data protection, incident response, backup and recovery, and access control.&lt;/p&gt;
&lt;p&gt;Each control is a single markdown file. The file has two parts: a structured YAML frontmatter block and a human-readable rationale section. The frontmatter is the source of truth. It contains the control ID and title, severity rating, control type, framework mappings to NIST 800-53 and DISA SRG, a concrete check command, and a fix command that remediates the finding.&lt;/p&gt;
&lt;p&gt;A sample check looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;check:
  summary: &quot;Confirm security (TLS) is enabled and the minimum protocol is TLS 1.2.&quot;
  command: |
    dsconf &amp;lt;instance&amp;gt; security get | grep -Ei &apos;security|tls-protocol-min&apos;
  expected: &quot;Security is enabled and the minimum TLS protocol is TLS1.2 or higher.&quot;
fix:
  summary: &quot;Enable security and set the minimum TLS protocol version to 1.2.&quot;
  command: |
    dsconf &amp;lt;instance&amp;gt; security set --tls-protocol-min=TLS1.2
    dsconf &amp;lt;instance&amp;gt; security enable
    dsctl &amp;lt;instance&amp;gt; restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The documentation site renders from this frontmatter automatically. Future phases will generate Bash audit scripts, Ansible roles, and OpenSCAP XCCDF content from the same source without re-authoring anything.&lt;/p&gt;
&lt;h2&gt;RHDS and Red Hat Identity Management&lt;/h2&gt;
&lt;p&gt;If you run Red Hat Directory Server or Red Hat Identity Management, this baseline applies to you too.&lt;/p&gt;
&lt;p&gt;RHDS is the enterprise distribution of 389DS. The same codebase, the same &lt;code&gt;dsconf&lt;/code&gt; tooling, the same configuration surface. The controls in this baseline map directly. Red Hat IDM goes a layer further, wrapping 389DS with FreeIPA, Kerberos, and Dogtag certificate services, but the directory server at its core is still 389DS and the hardening requirements for that layer are the same. If you are running IDM in a NIST 800-53 or SRG-adjacent environment, this baseline covers the directory component of that stack.&lt;/p&gt;
&lt;h2&gt;What It Is Not&lt;/h2&gt;
&lt;p&gt;This is not a certified STIG. It is not an official DISA SRG. The commands were written from 389DS and Red Hat documentation and the &lt;code&gt;dsconf&lt;/code&gt; source, but they have not been validated against a live 389 Directory Server. No control has had an independent review. Every control carries an &lt;code&gt;authored&lt;/code&gt; status, not &lt;code&gt;reviewed&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We are being explicit about this because the alternative is shipping something that looks authoritative before it has earned that. Run every command in a non-production environment first. Confirm attribute names against your specific 389DS version. The alpha warning on the site is not boilerplate.&lt;/p&gt;
&lt;h2&gt;Testing and Getting Involved&lt;/h2&gt;
&lt;p&gt;Validation testing begins shortly. The path to a 1.0 runs through testing every command against a live server and getting each control independently reviewed. Neither of those is a one-person job.&lt;/p&gt;
&lt;p&gt;If you run 389DS, RHDS, or Red Hat IDM in production, that experience is exactly what this project needs. Validating a control means running the check command against a real instance, confirming the expected output matches what you see, and reporting back. If you find a command that is wrong, a severity rating that does not match your environment, or a control that is missing entirely, that is a contribution worth making.&lt;/p&gt;
&lt;p&gt;Issues and pull requests are open at &lt;a href=&quot;https://github.com/Hexaxia-Labs/389ds-srg-baseline&quot;&gt;github.com/Hexaxia-Labs/389ds-srg-baseline&lt;/a&gt;. The control schema and contribution guide are in the repo. If you want to get involved before you are ready to open a PR, open an issue and start a conversation.&lt;/p&gt;
&lt;h2&gt;Roadmap&lt;/h2&gt;
&lt;p&gt;The structure is built around a single source of truth by design. Everything that follows generates from the same control files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Phase 2:&lt;/strong&gt; Bash audit script (checks) and Ansible role (remediation) derived from the frontmatter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phase 3:&lt;/strong&gt; OpenSCAP XCCDF and OVAL content, scannable with &lt;code&gt;oscap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phase 4:&lt;/strong&gt; Contribution to &lt;a href=&quot;https://github.com/ComplianceAsCode/content&quot;&gt;ComplianceAsCode/content&lt;/a&gt;, blocked on a license decision (GPL-3.0 today, ComplianceAsCode is BSD-3-Clause)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Get It&lt;/h2&gt;
&lt;p&gt;Docs: &lt;a href=&quot;https://labs.hexaxia.tech/389ds-srg-baseline/&quot;&gt;labs.hexaxia.tech/389ds-srg-baseline&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://github.com/Hexaxia-Labs/389ds-srg-baseline&quot;&gt;github.com/Hexaxia-Labs/389ds-srg-baseline&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;GPL-3.0. Contributions welcome via GitHub issues and pull requests.&lt;/p&gt;
</content:encoded></item><item><title>Hexaxia Labs: What This Is and Why It Exists</title><link>https://labs.hexaxia.tech/blog/hexaxia-labs-what-this-is-and-why-it-exists/</link><guid isPermaLink="true">https://labs.hexaxia.tech/blog/hexaxia-labs-what-this-is-and-why-it-exists/</guid><description>Labs is where the open source work from across the Hexaxia group lives. HexOps, HexCMS Studio, 389DS SRG Baseline, and what comes next.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hexaxia is a group of companies. &lt;a href=&quot;https://www.hexaxia.tech&quot;&gt;Hexaxia Technologies&lt;/a&gt; does managed IT, infrastructure, and security consulting. &lt;a href=&quot;https://www.hexaxia.ai&quot;&gt;Hexaxia AI&lt;/a&gt; runs AI transformation engagements and builds AI infrastructure products. &lt;a href=&quot;https://www.hexaxia.media&quot;&gt;Hexaxia Media&lt;/a&gt; handles the creative and media side of the group.&lt;/p&gt;
&lt;p&gt;Each division does different work. Some of it is client-specific. Some of it is not.&lt;/p&gt;
&lt;p&gt;Labs is where the second kind lives.&lt;/p&gt;
&lt;p&gt;When a division builds something general enough to be useful outside its own operation, it goes here. Not because we are trying to build a community or grow a following, but because keeping useful tools private when they solve a problem anyone could have is a waste. We work in real infrastructure and real production environments. Things get built. The ones worth sharing, we share.&lt;/p&gt;
&lt;h2&gt;HexOps&lt;/h2&gt;
&lt;p&gt;The first project was &lt;a href=&quot;https://github.com/Hexaxia-Labs/hexops&quot;&gt;HexOps&lt;/a&gt;, a developer operations dashboard that came out of managing too many local projects at once. The specific problem: a CVE drops and you have 15 projects that need patching. The manual path is cd into each one, run the audit, update, commit, repeat, and hope you did not miss one. HexOps handles it from a single interface.&lt;/p&gt;
&lt;p&gt;It scans every project for vulnerabilities and outdated packages concurrently, patches them in batch, and runs a post-patch audit to confirm the advisories are actually gone. It handles transitive dependency issues with automatic override detection, flags collateral downgrades across other projects when a patch lands, and gives you an escalation path when a patch cannot land cleanly: force-override, force-major bump, or accept-risk with an expiry date. There is also a code security scanner with 16 grep-based rules covering hardcoded secrets, command injection, weak crypto, and common misconfigurations.&lt;/p&gt;
&lt;p&gt;v0.13.0, MIT license.&lt;/p&gt;
&lt;h2&gt;HexCMS and HexCMS Studio&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Hexaxia-Labs/hexcms&quot;&gt;HexCMS&lt;/a&gt; is a git-based headless CMS currently in development. Content lives in your repository as markdown files with frontmatter. No database, no vendor lock-in, no SaaS subscription.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/alamb-hex/hexcms-studio&quot;&gt;HexCMS Studio&lt;/a&gt; is the visual editor that runs alongside it and is already released. It runs locally on your machine with direct filesystem access. You get WYSIWYG editing via TipTap and raw markdown mode, a frontmatter editor, live preview, git integration that lets you stage, commit, push, and pull without leaving the UI, and multi-repository support so you can manage content across several projects from one interface. Multiple themes: light, dark, midnight, and sepia.&lt;/p&gt;
&lt;p&gt;HexCMS Studio is v0.2.0, MIT license. HexCMS is AGPL-3.0.&lt;/p&gt;
&lt;h2&gt;389DS SRG Baseline&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://labs.hexaxia.tech/389ds-srg-baseline/&quot;&gt;389DS SRG Baseline&lt;/a&gt; came from Hexaxia Technologies&apos; infrastructure work. 389 Directory Server is widely deployed in Linux environments and there is no good public hardening baseline for it. So we wrote one.&lt;/p&gt;
&lt;p&gt;43 controls across 9 domains: network security, logging and monitoring, configuration management, system hardening, identity and access management, data protection, incident response, backup and recovery, and access control. Each control is a markdown file with structured YAML frontmatter containing a check command, a fix command, framework mappings to NIST 800-53 and DISA SRG, and an in-depth rationale. The frontmatter is the single source of truth: the documentation site renders from it today and future phases will generate Bash audit scripts, Ansible roles, and OpenSCAP XCCDF content from the same files without re-authoring.&lt;/p&gt;
&lt;p&gt;It is v0.1.0-alpha. The commands have not been validated on a live server and no control has had an independent review. We are saying that plainly because the alternative is shipping something that looks authoritative and is not. GPL-3.0, contributions welcome.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;More will come from across the group as work produces them. This blog is where we write about what we are building, the decisions behind it, and what did not go as expected. No release theater. Just the work.&lt;/p&gt;
</content:encoded></item></channel></rss>