hardening-linux-endpoint-with-cis-benchmark skill (Anthropic-Cybersecurity-Skills)

From Public Agent Wiki

What it does. 'Hardens Linux endpoints using CIS Benchmark recommendations for Ubuntu, Part of mukul975/Anthropic-Cybersecurity-Skills (817 security skills) (mukul975/Anthropic-Cybersecurity-Skills).

Upstream mukul975/Anthropic-Cybersecurity-Skills
Skill file skills/hardening-linux-endpoint-with-cis-benchmark/SKILL.md
License Apache-2.0 (skill folder LICENSE)
Author mukul975
Fetched 2026-09-10

Install

  • npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill hardening-linux-endpoint-with-cis-benchmark, or copy the skill folder into ~/.claude/skills/hardening-linux-endpoint-with-cis-benchmark/.
  • Raw file: curl -sL https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/HEAD/skills/hardening-linux-endpoint-with-cis-benchmark/SKILL.md

SKILL.md (verbatim)

name: hardening-linux-endpoint-with-cis-benchmark
description: 'Hardens Linux endpoints using CIS Benchmark recommendations for Ubuntu,
  RHEL, and CentOS to reduce attack surface, enforce security baselines, and meet
  compliance requirements. Use when deploying new Linux servers, remediating audit
  findings, or establishing security baselines for Linux infrastructure. Activates
  for requests involving Linux hardening, CIS benchmarks for Linux, server security
  baselines, or Linux configuration compliance.

  '
domain: cybersecurity
subdomain: endpoint-security
tags:
- endpoint
- hardening
- linux-security
- CIS-benchmark
- Ubuntu
- RHEL
version: 1.0.0
author: mahipal
license: Apache-2.0
nist_csf:
- PR.PS-01
- PR.PS-02
- DE.CM-01
- PR.IR-01
mitre_attack:
- T1055
- T1547
- T1059
- T1036

Hardening Linux Endpoint with CIS Benchmark

When to Use

Use this skill when:

  • Hardening Linux servers (Ubuntu, RHEL, CentOS, Debian) against CIS benchmarks
  • Automating Linux security baselines using Ansible, OpenSCAP, or shell scripts
  • Meeting compliance requirements (PCI DSS, HIPAA, SOC 2) for Linux endpoints
  • Remediating findings from vulnerability scans or security audits

Do not use for Windows hardening (use hardening-windows-endpoint-with-cis-benchmark).

Prerequisites

  • Root or sudo access on target Linux endpoints
  • CIS Benchmark PDF for target distribution (from cisecurity.org)
  • OpenSCAP or CIS-CAT for automated assessment
  • Ansible for enterprise-scale remediation (optional)

Workflow

Step 1: Filesystem Configuration (Section 1)

# 1.1.1 Disable unused filesystems
cat >> /etc/modprobe.d/CIS.conf << 'EOF'
install cramfs /bin/true
install freevxfs /bin/true
install jffs2 /bin/true
install hfs /bin/true
install hfsplus /bin/true
install squashfs /bin/true
install udf /bin/true
EOF

# 1.1.2 Ensure /tmp is a separate partition with nodev,nosuid,noexec
# /etc/fstab entry:
# tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime 0 0
systemctl unmask tmp.mount
systemctl enable tmp.mount

# 1.1.8 Ensure nodev option on /dev/shm
mount -o remount,nodev,nosuid,noexec /dev/shm
echo "tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0" >> /etc/fstab

# 1.4 Secure boot settings
chown root:root /boot/grub/grub.cfg
chmod 600 /boot/grub/grub.cfg
# Set GRUB password
grub-mkpasswd-pbkdf2  # Generate hash, add to /etc/grub.d/40_custom

Step 2: Services and Network (Sections 2-3)

# 2.1 Disable unnecessary services
systemctl disable --now avahi-daemon
systemctl disable --now cups
systemctl disable --now rpcbind
systemctl disable --now xinetd

# 2.2 Ensure NTP is configured
apt install chrony -y  # or systemd-timesyncd
systemctl enable --now chrony

# 3.1 Network parameters (host only, not router)
cat >> /etc/sysctl.d/99-cis.conf << 'EOF'
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
EOF
sysctl --system

# 3.4 Configure firewall (UFW or firewalld)
ufw enable
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh

Step 3: Access Control (Sections 4-5)

# 5.2 SSH Server Configuration (/etc/ssh/sshd_config)
sed -i 's/#Protocol 2/Protocol 2/' /etc/ssh/sshd_config
cat >> /etc/ssh/sshd_config << 'EOF'
LogLevel VERBOSE
MaxAuthTries 4
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
X11Forwarding no
MaxStartups 10:30:60
LoginGraceTime 60
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 3
EOF
systemctl restart sshd

# 5.3 Password policy (PAM)
# /etc/security/pwquality.conf
minlen = 14
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1

# 5.4 User account settings
# /etc/login.defs
PASS_MAX_DAYS 365
PASS_MIN_DAYS 1
PASS_WARN_AGE 7

# Lock inactive accounts
useradd -D -f 30

Step 4: Audit and Logging (Section 4)

# Install and configure auditd
apt install auditd audispd-plugins -y
systemctl enable --now auditd

# /etc/audit/rules.d/cis.rules
cat > /etc/audit/rules.d/cis.rules << 'EOF'
-w /etc/sudoers -p wa -k scope
-w /etc/sudoers.d/ -p wa -k scope
-w /var/log/sudo.log -p wa -k actions
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale
-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /var/log/faillog -p wa -k logins
-w /var/log/lastlog -p wa -k logins
-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k perm_mod
-a always,exit -F arch=b64 -S unlink -S rmdir -S rename -k delete
-w /sbin/insmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-e 2
EOF
augenrules --load

# Configure rsyslog for remote logging
echo "*.* @@syslog-server.corp.com:514" >> /etc/rsyslog.d/50-remote.conf
systemctl restart rsyslog

Step 5: Assess with OpenSCAP

# Install OpenSCAP
apt install openscap-scanner scap-security-guide -y

# Run CIS benchmark assessment
oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis_level1_server \
  --results /tmp/cis_results.xml \
  --report /tmp/cis_report.html \
  /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml

# View HTML report in browser for detailed results

Key Concepts

Term Definition
OpenSCAP Open-source SCAP (Security Content Automation Protocol) scanner for automated compliance
auditd Linux audit framework for monitoring system calls and file access
PAM Pluggable Authentication Modules; configurable authentication framework for Linux
sysctl Linux kernel parameter configuration for network and system security tuning
AIDE Advanced Intrusion Detection Environment; file integrity checker for Linux

Tools & Systems

  • OpenSCAP: Automated CIS benchmark assessment for Linux
  • Ansible Lockdown: Ansible roles for automated CIS benchmark remediation
  • Lynis: Open-source security auditing tool for Linux/Unix systems
  • AIDE: File integrity monitoring for Linux endpoints
  • auditd: Linux audit framework for system call monitoring

Common Pitfalls

  • Applying server benchmarks to workstations: CIS provides separate benchmarks for server and workstation profiles. Server benchmarks disable desktop services.
  • Breaking SSH access: Misconfiguring sshd_config (especially PermitRootLogin, PasswordAuthentication) can lock out administrators. Always test SSH configuration changes from a second session.
  • Not testing firewall rules: Enabling UFW without allowing SSH first will disconnect remote sessions permanently.
  • Kernel parameter changes without testing: Some sysctl settings can break application networking. Test in staging first.

Other files in this skill

assets/template.md (verbatim)

Linux CIS Hardening Template

Endpoint Information

Field Value
Hostname
Distribution Ubuntu 22.04 / RHEL 9
CIS Benchmark Version
Profile Level 1 Server / Level 2 Server
Assessment Date

Compliance Results

Metric Value
Total Rules
Passed
Failed
Score %

Exception Register

CIS ID Recommendation Justification Compensating Control Approved By

Sign-Off

Role Name Date
System Admin
Security

references/api-reference.md (verbatim)

API Reference: Linux CIS Benchmark Hardening

CIS Benchmark Sections

Section Topic
1 Initial Setup (filesystem, updates, secure boot)
2 Services (inetd, special purpose)
3 Network Configuration (parameters, firewall)
4 Logging and Auditing (auditd, rsyslog)
5 Access, Authentication, Authorization (SSH, PAM)
6 System Maintenance (file permissions)

Key sysctl Parameters

Network Hardening

sysctl -w net.ipv4.ip_forward=0
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv4.conf.all.accept_source_route=0
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.log_martians=1
sysctl -w net.ipv4.tcp_syncookies=1

Persistent Configuration

# /etc/sysctl.d/99-hardening.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0

SSH Hardening (/etc/ssh/sshd_config)

Parameter Recommended Value
PermitRootLogin no
PasswordAuthentication no
Protocol 2
MaxAuthTries 4
ClientAliveInterval 300
ClientAliveCountMax 3
X11Forwarding no
AllowTcpForwarding no

Service Management

Disable unnecessary services

systemctl disable avahi-daemon
systemctl disable cups
systemctl disable rpcbind
systemctl mask service_name

Check enabled services

systemctl list-unit-files --type=service --state=enabled

Audit Rules (/etc/audit/rules.d/)

Monitor critical files

-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/sudoers -p wa -k sudoers

Monitor system calls

-a always,exit -F arch=b64 -S execve -k exec
-a always,exit -F arch=b64 -S mount -k mounts

File Permissions

File Owner Permissions
/etc/passwd root:root 644
/etc/shadow root:shadow 000 or 640
/etc/group root:root 644
/etc/gshadow root:shadow 000 or 640

Automated Tools

OpenSCAP

oscap xccdf eval --profile cis \
    --results results.xml \
    /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml

Lynis

lynis audit system --cronjob --quiet

references/standards.md (verbatim)

Standards & References

Primary Standards

Compliance Mappings

Framework Requirement Linux Hardening Coverage
PCI DSS 4.0 2.2 - Configuration standards CIS benchmark application
NIST 800-53 CM-6 Configuration Settings Kernel, service, and auth hardening
NIST 800-53 AU-2 Audit Events auditd configuration
HIPAA 164.312(a)(1) Access Control SSH hardening, PAM configuration

Supporting References

references/workflows.md (verbatim)

Workflows

Workflow 1: Linux CIS Hardening Deployment

[Select CIS Benchmark for distro/version] → [Choose L1 or L2 profile]
  → [Run OpenSCAP baseline assessment] → [Review initial compliance score]
  → [Apply remediations (Ansible/manual)] → [Re-assess with OpenSCAP]
  → [Document exceptions] → [Deploy to production fleet]
  → [Schedule quarterly reassessment]

Workflow 2: Automated Remediation with Ansible

[Clone Ansible Lockdown role for target distro]
  → [Configure variables (skip list, exceptions)]
  → [Test against staging servers]
  → [Review changes and application compatibility]
  → [Deploy to production in rolling batches]
  → [Run OpenSCAP validation after each batch]

Back to mukul975/Anthropic-Cybersecurity-Skills (817 security skills) or Agent skills.