Source profileQuality 93/100

event4u-app/agent-config/src/skills/server-hardening/SKILL.md

server-hardening

Use when hardening a Linux host you operate — SSH posture, a default-deny firewall baseline, and unattended security upgrades, each verified on the box rather than assumed from a config file.

Source repository stars
9
Declared platforms
0
Static risk flags
0
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

Use when hardening a Linux host you operate — SSH posture, a default-deny firewall baseline, and unattended security upgrades, each verified on the box rather than assumed from a config file.

Best for

  • The workload runs on a managed runtime with no host you control — there is no
  • Auditing application code for vulnerabilities (use security-audit)
  • Application-level auth and authorization (use security, authz-review)

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/server-hardening"
Safe inspection promptEditorial

Inspect the Agent Skill "server-hardening" from https://github.com/event4u-app/agent-config/blob/6a5670b7881a676c0da90d2afb950298087c4ccb/src/skills/server-hardening/SKILL.md at commit 6a5670b7881a676c0da90d2afb950298087c4ccb. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Procedure: Harden a host

    1. Confirm the host is yours to harden. Managed runtime with no shell → stop; there is no posture here, and that is a recordable unavailable. 2. Open a second session and keep it open for the whole SSH and firewall work. This is the entire rollback mechanism. 3. Set the SSH post…

    Confirm the host is yours to harden. Managed runtime with no shell → stop;Open a second session and keep it open for the whole SSH and firewallSet the SSH posture, then verify with sshd -T from the second session —
  2. 02

    When to use

    Use when a host is yours to operate — a VPS, a bare-metal box, a long-lived VM — and its own security posture is the question. Three surfaces: who may log in, what may reach the network, and how patches arrive.

    The workload runs on a managed runtime with no host you control — there is noAuditing application code for vulnerabilities (use security-audit)Application-level auth and authorization (use security, authz-review)
  3. 03

    The three surfaces

    The one remote-entry door. Harden in this order, and keep an open session while you change it — a mistake here locks you out of the machine you are fixing.

    The one remote-entry door. Harden in this order, and keep an open session while you change it — a mistake here locks you out of the machine you are fixing.Verify from a second connection before closing the first:sshd -T prints the effective configuration. A file under sshdconfig.d/ or a Match block can override what you just edited, so the file you wrote is not evidence — the effective dump is.
  4. 04

    1. SSH posture

    The one remote-entry door. Harden in this order, and keep an open session while you change it — a mistake here locks you out of the machine you are fixing.

    The one remote-entry door. Harden in this order, and keep an open session while you change it — a mistake here locks you out of the machine you are fixing.Verify from a second connection before closing the first:sshd -T prints the effective configuration. A file under sshdconfig.d/ or a Match block can override what you just edited, so the file you wrote is not evidence — the effective dump is.
  5. 05

    2. Firewall baseline

    Default-deny inbound, allow-list outbound where the workload permits.

    Default-deny inbound, allow-list outbound where the workload permits.Two traps worth naming. A container runtime can write its own forwarding rules that bypass the host firewall entirely — check the actual rule table (sudo iptables -S / sudo nft list ruleset), not just the friendly front…Optionally add an SSH brute-force throttle (fail2ban or equivalent). It is noise reduction and a small real gain once password auth is already off — never a substitute for it.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars9SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
event4u-app/agent-config
Skill path
src/skills/server-hardening/SKILL.md
Commit
6a5670b7881a676c0da90d2afb950298087c4ccb
License
MIT
Collected
2026-08-28
Default branch
main
View the original SKILL.md

server-hardening

When to use

Use when a host is yours to operate — a VPS, a bare-metal box, a long-lived VM — and its own security posture is the question. Three surfaces: who may log in, what may reach the network, and how patches arrive.

Do NOT use when:

  • The workload runs on a managed runtime with no host you control — there is no host posture to set, and operational-readiness records that as unavailable with that reason
  • Auditing application code for vulnerabilities (use security-audit)
  • Application-level auth and authorization (use security, authz-review)
  • Provisioning cloud infrastructure (use terraform, aws-infrastructure)
  • Container image hardening (use docker)

The three surfaces

1. SSH posture

The one remote-entry door. Harden in this order, and keep an open session while you change it — a mistake here locks you out of the machine you are fixing.

SettingTargetWhy
PasswordAuthenticationnoEnds credential-stuffing against the host outright
PubkeyAuthenticationyesThe replacement must work before passwords are removed
PermitRootLoginno (or prohibit-password)Forces an audit trail through a named account
AllowUsers / AllowGroupsExplicit allow-listDefault is every account on the box
PortNon-default is optionalCuts log noise, not risk — never the primary control

Verify from a second connection before closing the first:

sudo sshd -t                                  # config parses; do this before reload
sudo systemctl reload ssh                     # or sshd, per distro
sudo sshd -T | grep -Ei 'passwordauth|permitrootlogin|pubkeyauth'

sshd -T prints the effective configuration. A file under sshd_config.d/ or a Match block can override what you just edited, so the file you wrote is not evidence — the effective dump is.

2. Firewall baseline

Default-deny inbound, allow-list outbound where the workload permits.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH                        # before enabling, or you are locked out
sudo ufw enable
sudo ufw status verbose                       # the verification, not the intent

Two traps worth naming. A container runtime can write its own forwarding rules that bypass the host firewall entirely — check the actual rule table (sudo iptables -S / sudo nft list ruleset), not just the friendly front-end. And a cloud security group sits in front of the host: both must agree, and the narrower one is the effective policy.

Optionally add an SSH brute-force throttle (fail2ban or equivalent). It is noise reduction and a small real gain once password auth is already off — never a substitute for it.

3. Unattended security upgrades

Patches that require a human are patches that arrive late.

sudo apt install unattended-upgrades          # Debian/Ubuntu family
sudo dpkg-reconfigure -plow unattended-upgrades
sudo unattended-upgrade --dry-run --debug     # proves it would act

Decide and record two things, because the default is silence: whether the host reboots automatically when a patch needs it, and where the failure notification goes. An upgrade timer that has been failing for six weeks is indistinguishable from one that is working, unless something reports it.

Security patches only. Automatic feature upgrades change behaviour under you, which is a different risk with a different owner.

Procedure: Harden a host

  1. Confirm the host is yours to harden. Managed runtime with no shell → stop; there is no posture here, and that is a recordable unavailable.
  2. Open a second session and keep it open for the whole SSH and firewall work. This is the entire rollback mechanism.
  3. Set the SSH posture, then verify with sshd -T from the second session — effective config, not the file.
  4. Set the firewall baseline, allowing SSH before enabling. Verify with ufw status verbose and against the raw rule table.
  5. Enable unattended security upgrades, then prove with --dry-run that it would act. Record the reboot policy and the failure destination.
  6. Re-verify from a fresh connection. Close every old session and reconnect. A posture that only holds inside an already-authenticated session is unverified.
  7. Report each surface as met, unmet or uninspected. Uninspected is not met — operational-readiness reads an uninspected host posture as a red.

Validate

  • Verify sshd -T reports passwordauthentication no.
  • Verify sshd -T reports permitrootlogin no or prohibit-password.
  • Verify a key-based login succeeds from a fresh connection.
  • Verify the firewall default is deny-inbound and SSH is explicitly allowed.
  • Verify the raw rule table agrees with the front-end.
  • Verify unattended-upgrade --dry-run reports it would act.
  • Confirm the reboot policy and the failure-notification destination are recorded.

Output format

  1. One row per surface — SSH, firewall, unattended upgrades — with met / unmet / uninspected and the verifying command's output.
  2. The reboot policy and where upgrade failures are reported.
  3. Anything left unmet, with what would close it.

Gotcha

  • Changing SSH without a second open session is how a host becomes unreachable.
  • The config file is not the posture. sshd -T is; a drop-in or Match block silently wins.
  • Enabling a firewall before allowing SSH locks you out immediately.
  • A container runtime's own rules can bypass the host firewall.
  • A cloud security group and the host firewall must both allow a port; the narrower wins.
  • A silently failing upgrade timer looks exactly like a working one.
  • A non-default SSH port reduces log volume, not risk.

Do NOT

  • Do NOT disable password authentication before a key login is proven to work.
  • Do NOT enable the firewall before allowing SSH.
  • Do NOT enable automatic feature upgrades — security patches only.
  • Do NOT treat an installed package as an enabled control; prove it acts.
  • Do NOT report an uninspected surface as met.
  • Do NOT rely on a non-default port as a control.

Auto-trigger keywords

  • server hardening
  • host hardening
  • ssh hardening
  • firewall baseline
  • unattended upgrades
  • fail2ban

Frequently asked questions

What to verify before installation and use

What does the server-hardening source document cover?

Use when hardening a Linux host you operate — SSH posture, a default-deny firewall baseline, and unattended security upgrades, each verified on the box rather than assumed from a config file.

How do I install server-hardening?

The source record exposes this install command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/server-hardening". Inspect the command and pinned source before running it.

Alternatives

Compare before choosing

Computed 10045,960

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 10029,236

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10025,136

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 1005,277

dotnet/skills

migrate-vstest-to-mtp

Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing