linux Linux CIS Vulnerability Reference
Cross-reference the Linux checklist against CIS Benchmark categories.
Source: CIS Ubuntu Linux 24.04 LTS Benchmark v1.0.0 (structure is representative of the whole Debian/Ubuntu family; RHEL/CentOS/Fedora benchmarks use the same 7-section skeleton — Initial Setup / Services / Network / Host Firewall / Access Control / Logging & Auditing / System Maintenance — with distro-specific tooling, e.g. firewalld+nftables instead of ufw, and dnf/yum instead of apt). This is a curated, competition-focused extract, not the full ~400-control benchmark. This document exists to cross-check the Linux Master Checklist for gaps.
1. Initial Setup#
-
1.1.1Unused/exotic filesystem kernel modules not disabled (cramfs,freevxfs,hfs,hfsplus,jffs2,overlayfs,squashfs,udf,usb-storage) — each is a rarely-needed legacy filesystem driver that expands attack surface for local privilege escalation. (L1, mostly Automated) -
1.1.2Partition hardening —/tmp,/dev/shm,/var/tmpshould be separate partitions/mounts withnodev,nosuid,noexec;/home,/var,/var/log,/var/log/auditshould be separate partitions withnodev,nosuid. On a CyberPatriot image these are usually a single partition already, so full remediation may not be realistic — but the mount-option hardening (noexec/nosuid/nodev) can often still be applied viamount -o remounteven without repartitioning. (L1, some Automated some Manual) -
1.2Package Management — GPG keys for repos configured/valid, repo list sane (no unauthorized/malicious repos added), all available security updates installed. (L1) -
1.3Mandatory Access Control — AppArmor installed, enabled in the bootloader, and all profiles in enforce (not just complain) mode — a "complain-mode-only" AppArmor install gives a false sense of security since it logs but doesn't block. (L1) -
1.4Bootloader — GRUB password set, bootloader config file permissions restricted (chmod 600) — without this, physical/console access lets someone edit boot parameters to get a root shell. (L1) -
1.5Process hardening — ASLR enabled (kernel.randomize_va_space=2),ptrace_scoperestricted, core dumps restricted,prelinknot installed (prelink defeats ASLR), Apport/automatic error reporting disabled (can leak sensitive data in crash reports). (L1) -
1.6Command line warning banners — MOTD,/etc/issue,/etc/issue.netconfigured with a generic (non-identifying — no OS/version/kernel info) warning banner, and file permissions on those files restricted. (L1) -
1.7GNOME Display Manager (if a GUI is installed) — login banner set,disable-user-listenabled (don't show a clickable user list on the lock screen), screen auto-locks on idle and that lock setting can't be overridden by the user, automount/autorun of removable media disabled, XDMCP disabled (unencrypted remote X11). (L1)
2. Services#
-
2.1Server services — any unneeded service installed and running:autofs,avahi,dhcp server,dns server,dnsmasq,samba,ftp,message access (dovecot/imap/pop3),nfs,nis,print server (cups),rpcbind,rsync,snmp,tftp,web server (apache/nginx),xinetd,X window system(on a headless server) — this maps directly to the "Disable & Purge Unnecessary Packages" section already in the master checklist; the CIS list is a good completeness check. (L1) -
2.2Client services — obsolete network clients (nis,rsh,talk,telnet,ldapclient utils if unused) shouldn't be installed even if the corresponding server isn't running, since they're an easy path for an attacker who's already got local access to pivot. (L1) -
2.3Time synchronization —chronyorsystemd-timesyncdinstalled and configured (not just installed with defaults) — without a synced clock, Kerberos-style time-sensitive auth and log correlation both break. (L1) -
2.4Cron/at daemon enabled and restricted to authorized users only via/etc/cron.allowand/etc/at.allow(with.denyfiles removed if present). (L1)
3. Network#
-
3.1Kernel network parameters (sysctl) — IP forwarding disabled (unless the box is meant to route), packet redirect sending disabled, bogus ICMP responses ignored, broadcast ICMP requests ignored, source-routed packets not accepted, secure ICMP redirects not accepted, reverse path filtering enabled, TCP SYN cookies enabled. This is exactly what's already in the master checklist's sysctl section — CIS confirms it's high-value, not just community folklore. (L1) -
3.2/3.3Uncommon network protocols disabled (dccp,sctp,rds,tipc) if not required — reduces kernel attack surface from protocols that are rarely audited/used. (L1) -
3.4/3.5Wireless interfaces disabled if not required (ip linkshould show no wireless up on a server image); IPv6 disabled at the kernel level if not in use (fewer competitions grade IPv6, but an unmanaged/unhardened IPv6 stack is still a live attack surface even if "unused"). (L1/L2)
4. Host Based Firewall#
-
4.xA single firewall utility installed and enabled (not multiple conflicting ones — e.g. bothufwand rawiptablesrules active), default-deny policy on input (and ideally forward), loopback traffic explicitly permitted, outbound and established connections permitted, all other inbound denied by default with only required ports explicitly allowed. Maps directly to the firewall section already in the master checklist. (L1)
5. Access Control#
-
5.1SSH Server — file permissions on/etc/ssh/sshd_configrestricted,PermitRootLogin no,PermitEmptyPasswords no, strongCiphers/MACs/KexAlgorithmsonly (disable weak/legacy algorithms),LoginGraceTime≤60s,MaxAuthTries≤4,MaxSessionslimited,X11Forwarding nounless required, banner configured,ClientAliveInterval/ClientAliveCountMaxset (auto-disconnect idle sessions),AllowTcpForwardingandAllowAgentForwardingdisabled unless required. The master checklist's SSH section covers the big ones (PermitRootLogin, X11Forwarding, MaxAuthTries) — the Ciphers/MACs/KexAlgorithms hardening is a common gap. (L1, a couple L2) -
5.2Privilege escalation (sudo) —sudoinstalled and package integrity verified,sudorequires re-authentication (no blanketNOPASSWDfor everything),sudoPTY/logging enabled (Defaults use_pty,Defaults logfile=...),sucommand restricted to a defined group. (L1) -
5.3PAM —pam_faillock/pam_tally2configured for account lockout on repeated failures, password quality module (pam_pwquality) enforcing minlen/complexity, password reuse prevented (remember=), password hashing algorithm is SHA-512 or stronger (never MD5/DES), defaultumaskrestrictive (027 or 077). (L1) -
5.4User accounts and environment — all accounts have a password set or are locked (no accounts with an empty password field), root is the only UID 0 account, root'sPATHdoesn't contain a relative or world-writable directory, all users' home directories exist and are owned/permission-restricted correctly, no.netrc/.forward/.rhostsfiles present (legacy trust files that bypass normal auth), default group for root is GID 0, shell timeout (TMOUT) configured to auto-logout idle interactive sessions. (L1)
6. Logging and Auditing#
-
6.1System logging —journald/rsyslog(or both) configured, log file permissions restricted, logs forwarded to a remote log host if the scenario calls for it,journaldconfigured to persist logs to disk (not just volatile memory — a reboot shouldn't erase your evidence trail), logrotate configured. (L1) -
6.2System auditing (auditd) — installed, enabled, and configured with actual audit rules, not just "installed and running with an empty ruleset." High-value rule categories: changes to date/time, user/group info (/etc/passwd,/etc/group,/etc/shadow), network environment, MAC policy (AppArmor/SELinux), login/logout events, session initiation, permission-change events (chmod/chown/setxattr), unsuccessful unauthorized file access attempts, use of privileged commands, successful mount operations, file deletion events, sudoers changes, kernel module load/unload. The master checklist'sauditctl -e 1step only turns auditd on — it doesn't add any of these rules by itself, which is the actual gap CIS calls out. (L1) -
6.3Integrity checking — AIDE (or equivalent) installed and a periodic cron job configured to run it, not just a one-time install. (L1/L2)
7. System Maintenance#
-
7.1System file permissions — permissions on/etc/passwd,/etc/passwd-,/etc/group,/etc/group-,/etc/shadow,/etc/shadow-,/etc/gshadoware correctly restrictive; no world-writable files exist anywhere on the filesystem; no unowned/ungrouped files exist; SUID/SGID files on the system match an expected baseline (flag anything unexpected). (L1) -
7.2Local user/group settings — no duplicate UIDs/GIDs/usernames/group names, shadow group is empty, all users' primary group exists, no legacy+entries in passwd/shadow/group (an ancient NIS artifact that can bypass auth if present), all home directories exist with correct ownership/permissions, root path integrity confirmed.
How to use this against the Master Checklist#
Cross-check each [ ] item above against Linux_Master_Checklist.md. The two areas most often under-covered in community checklists are 5.1 SSH cipher/MAC/KexAlgorithm hardening and 6.2 actual auditd rule content (vs. just enabling the daemon) — pay extra attention there.