Skip to content

fix(analyst): close garuda's SSH to keys, drop GitHub write creds; bu… - #1504

Merged
Gerrrt merged 5 commits into
mainfrom
fix/garuda-audit-hardening
Nov 14, 2026
Merged

Gerrrt merged 5 commits into
mainfrom
fix/garuda-audit-hardening

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Nov 14, 2026

Copy link
Copy Markdown
Owner

…mp its agent pin

An audit of garuda on 2026-11-13 found Kali's stock sshd taking passwords on every address, cloud-init's passwordless sudo for analyst, and an owner-scoped gh login on the box, all on the segment the lab domain's six share.

  • stacks/analyst/ssh/10-garuda.conf: key-only, analyst from Hicks and phoenix alone, no forwarding. build-the-analyst-workstation.md §4 installs it and removes the passwordless sudo; §0 and §9 record and check both.
  • §7 reads the dotfiles release tags without a GitHub login; garuda holds no GitHub write credential.
  • docs/architecture.md no longer describes the cgroup fence ADR-0093 replaced.
  • stacks/soc/linux-agents.yaml: wazuh-agent 4.14.8 -> 4.14.10, the manager's, hash checked against Wazuh's signed apt index. §12 gains the upgrade step.
  • Every Alloy runs with --disable-reporting, as Grafana and Loki already do.

What changed

Why

Blast radius

  • No change to network segmentation or firewall rules
  • No new port published to a VLAN that could not already reach the service
  • No credential added outside secrets/*.sops.yaml

Verification

  • make validate passes
  • Deployed to the lab and confirmed working
  • Docs updated (docs/, service README, or docs/roadmap.md)

…mp its agent pin

An audit of garuda on 2026-11-13 found Kali's stock sshd taking passwords on
every address, cloud-init's passwordless sudo for analyst, and an owner-scoped
gh login on the box, all on the segment the lab domain's six share.

- stacks/analyst/ssh/10-garuda.conf: key-only, analyst from Hicks and phoenix
  alone, no forwarding. build-the-analyst-workstation.md §4 installs it and
  removes the passwordless sudo; §0 and §9 record and check both.
- §7 reads the dotfiles release tags without a GitHub login; garuda holds no
  GitHub write credential.
- docs/architecture.md no longer describes the cgroup fence ADR-0093 replaced.
- stacks/soc/linux-agents.yaml: wazuh-agent 4.14.8 -> 4.14.10, the manager's,
  hash checked against Wazuh's signed apt index. §12 gains the upgrade step.
- Every Alloy runs with --disable-reporting, as Grafana and Loki already do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings November 14, 2026 05:35
@Gerrrt
Gerrrt enabled auto-merge (squash) November 14, 2026 05:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Existing guests retain usable repository-write credentials without a revocation migration, while Unix-domain socket forwarding and usage reporting in both agent deployment paths remain enabled.

3 open issues
What changed in this PR

This PR hardens the analyst workstation’s documented access policy and updates its monitoring configuration following the garuda audit.

Changes:

  • Adds key-only, source-restricted SSH settings and documents password-required sudo and credential-free GitHub access.
  • Updates the Wazuh Linux agent pin to 4.14.10 and adds upgrade instructions.
  • Disables Alloy usage reporting in six Compose stacks and corrects the documented OpenVAS isolation mechanism.
File Description
stacks/​soc/​linux-agents.yaml Updates the Wazuh agent version and checksum.
stacks/​soc/​compose.yaml Disables Alloy usage reporting.
stacks/​sensor/​compose.yaml Disables Alloy usage reporting.
stacks/​observability/​compose.yaml Disables Alloy usage reporting.
stacks/​lab/​compose.yaml Disables Alloy usage reporting.
stacks/​bloodhound/​compose.yaml Disables Alloy usage reporting.
stacks/​analyst/​ssh/​10-garuda.conf Adds SSH authentication, source, and forwarding restrictions.
stacks/​analyst/​README.md Describes the SSH drop-in and sudo hardening.
stacks/​analyst/​compose.yaml Disables Alloy usage reporting.
docs/​security.md Documents garuda’s intended access controls.
docs/​runbooks/​build-the-analyst-workstation.md Adds hardening, verification, anonymous release lookup, and agent upgrade steps.
docs/​changelog.md Records the audit and proposed remediation.
docs/​architecture.md Updates access policy and corrects the OpenVAS fence description.

Review effort: Balanced

Comment thread stacks/analyst/ssh/10-garuda.conf Resolved
Comment thread stacks/observability/compose.yaml Resolved
Gerrrt and others added 2 commits November 14, 2026 05:48
- sshd: DisableForwarding yes in place of the three per-kind options, which
  left Unix-socket forwarding at its default yes; §9 checks it.
- Alloy: --disable-reporting on both of deploy-agent.sh's paths (Docker and
  the native package's CUSTOM_ARGS) and in check_syslog_senders.sh's
  throwaway Alloy, so every Alloy the repo starts opts out.
- Runbook §7: the steps that revoke and remove the gh token and GitHub SSH
  key from a guest built before the no-credential rule.

Refs #921

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Gerrrt
Gerrrt disabled auto-merge November 14, 2026 22:06
@Gerrrt
Gerrrt enabled auto-merge (squash) November 14, 2026 22:08
security.md's row and architecture.md's line stated the hardening as the
running state. It is live only once build-the-analyst-workstation.md §4 and
§7 have run on garuda, so both now say so, as fenrir's row does.

Refs #921

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Gerrrt
Gerrrt merged commit 1a8ebf2 into main Nov 14, 2026
8 checks passed
@Gerrrt
Gerrrt deleted the fix/garuda-audit-hardening branch November 14, 2026 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants