AIXray
by PowerTrue Systems · AIX · IBM Power · VIOS · Linux
System Health Check

Posture snapshot — acme-prod-aix01

Host: acme-prod-aix01  ·  Generated: 2026-07-20 17:06 EDT  ·  Reference data: 2026-07-14  ·  READ-ONLY — nothing was changed
63%
Pass rate
58
Pass
22
Warn
12
Fail
5
Not assessed

Start here: top risks

Work these in order: FAIL before WARN, then native severity high, med, and low; original finding order breaks ties.

  1. Error log (7 days)FAIL · high
    Observed: 26 error entries (9 informational ignored) (recurring E18E984F x21)
    Fix: triage 'errpt' now, most recent and most frequent first.
  2. OS backup (mksysb) evidenceFAIL · high
    Observed: /image.data older than 90 days
    Fix: run a mksysb now; schedule it; verify the target is itself backed up.
  3. SSH root loginFAIL · high
    Observed: permitrootlogin yes
    Fix: set 'PermitRootLogin no' (or prohibit-password) in sshd_config and restart sshd.
  4. Trust files (.rhosts)FAIL · high
    Observed: present: /.rhosts
    Fix: remove /.rhosts and /etc/hosts.equiv; rely on key-based ssh instead.
  5. root account controlsFAIL · high
    Observed: rlogin=true + sugroups=ALL (root wide open)
    Fix: restrict both: 'chsec -f /etc/security/user -s root -a rlogin=false' (admins log in as themselves and su/sudo to root) and '-a sugroups=<sysadmin-group>' so only a named group may su to root.
Remediation Action List34 action(s) · complete · worst first
Work from top to bottom. Every FAIL and WARN is its own line; PASS and NOT_ASSESSED findings remain summarized in the detail below.
PriorityFindingObserved evidenceFixSeverityCIS L1 checkCVE tier
1Error log (7 days)
errpt_recent — FAIL
26 error entries (9 informational ignored) (recurring E18E984F x21)triage 'errpt' now, most recent and most frequent first.high
2OS backup (mksysb) evidence
mksysb_age — FAIL
/image.data older than 90 daysrun a mksysb now; schedule it; verify the target is itself backed up.high
3SSH root login
ssh_rootlogin — FAIL
permitrootlogin yesset 'PermitRootLogin no' (or prohibit-password) in sshd_config and restart sshd.high
4Trust files (.rhosts)
rhosts — FAIL
present: /.rhostsremove /.rhosts and /etc/hosts.equiv; rely on key-based ssh instead.high
5root account controls
privileged_access — FAIL
rlogin=true + sugroups=ALL (root wide open)restrict both: 'chsec -f /etc/security/user -s root -a rlogin=false' (admins log in as themselves and su/sudo to root) and '-a sugroups=<sysadmin-group>' so only a named group may su to root.high
6STIG file permissions
stig_fileperms — FAIL
7 of 11 rules compliant, 0 not applicable; failing: V-215269 /etc/inetd.conf (0664), V-215281 /etc/ntp.conf (0664), V-245559 /etc/hosts (0664), V-245563 /etc/syslog.conf (0644)chmod/chown the failing files to the required mode/owner per the rule list (chmod <maxmode> <path>; chown <owner>:<group> <path>); the compliance report lists every rule and its evidence.high4.1.1.3 FAIL
4.1.1.2 PASS
7STIG account policy
stig_secattr — FAIL
5 of 12 rules compliant, 1 n/a; failing: V-215171 loginretries=0 (needs le 3), V-215220 mindiff=0 (needs ge 8), V-215223 maxage=13 (needs le 8), V-215224 histsize=4 (needs ge 5), V-215226 minlen=10 (needs ge 15), +2 moretighten the failing attributes with chsec (chsec -f <file> -s default -a <attr>=<value>); the compliance report lists every rule, the required value, and the observed value.high
8STIG network tunables
stig_nettune — FAIL
3 of 4 rules compliant, 0 n/a; failing: V-215399 clean_partial_conns=0 (needs eq 1)set the failing tunables with 'no -p -o <tunable>=<value>' (nfso for NFS options) so the change persists across reboot; the compliance report lists every rule, the required value, and the observed value.high4.5.6 PASS
4.5.7 PASS
4.5.3 FAIL
4.5.2 PASS
9STIG disabled services
stig_svcoff — FAIL
34 of 37 rules compliant, 0 n/a; failing: V-215353 sendmail, V-215354 snmpd, V-215365 snmpmibdcomment the service out of /etc/inetd.conf and 'refresh -s inetd' (inetd services), or 'stopsrc -s <subsystem>' and disable it at boot (SRC subsystems); the compliance report lists every rule and its evidence.high
10Other filesystems
fs_other — FAIL
/opt 94%; repo (informational): /usr/sys/inst.images 100%free space or extend them; add monitoring.med
11SNMP community strings
snmp_community — FAIL
default community in usereplace public/private with a strong community in /etc/snmpd.conf and refresh snmpd.med
12Time synchronization (NTP)
ntp — FAIL
xntpd inoperative, 0 server(s)configure /etc/ntp.conf with a server and start xntpd ('startsrc -s xntpd'; enable at boot).med
13System firmware currency
firmware — WARN
VL950_168 — family FW950 current; hardware support ended 2026-01-31; firmware UAK valid through 2026-09-16review IBM FLRT/Fix Central for machine type 9008, renew a near-expiry UAK, and schedule the supported firmware/hardware path named above.high
14rootvg redundancy
rootvg_mirror — WARN
1 disk, unmirroredmirror rootvg (mirrorvg + bosboot + bootlist) or document the storage-level protection.high
15Alternate rootvg clone
alt_disk — WARN
status=NOT_APPLICABLE; usable=null; volume_group=null; disks=[]; reason=lspv reported no altinst_rootvg or old_rootvg; source_commands=[lspv]create and regularly refresh an alt_disk_copy clone of rootvg on a platform-bootable alternate disk; verify it with alt_rootvg_op and bootlist.high
16Default password policy
pw_policy — WARN
weak: loginretries=0tighten the /etc/security/user default stanza (maxage 1-13wk, minlen>=8, loginretries>0, histsize>0).high
17Audit subsystem
audit_active — WARN
auditing offconfigure and start audit ('audit start'; set it to start at boot).high
18Monitoring agent
monitoring_agent — WARN
no KNOWN monitoring agent detected (checked: Zabbix agent, Nagios NRPE, Prometheus node_exporter, IBM Tivoli/ITM kuxagent, collectd, njmon/nimon, Datadog agent)confirm monitoring coverage; if none exists, install and point a monitoring agent at this LPAR.high
19Hardware generation
hw_gen — WARN
9008-22L (POWER9) — hardware support ended 2026-01-31 (fully-virtual LPAR)confirm who owns the hardware (IBM on PowerVS; your team on-prem), then plan or request a host refresh to current-generation IBM Power11 hardware; the host change is outside this LPAR.med
20JFS2 filesystem-buffer blocking
fsbuf_blocking — WARN
blocked since boot: jfs2 fsbuf 1656, external-pager 370, client 0re-read 'vmstat -v' after a busy period: if the number is still climbing, raise JFS2 buffers with 'ioo -p -o j2_dynamicBufferPreallocation=<n>' (default 16, in 16KB units) and/or 'ioo -p -o numfsbufs=<n>'; a static non-zero count from a past burst is usually benign.med
21Dump copy directory
dump_copy_dir — WARN
copy dir /var/adm/ras has 215 MB free, estimated dump 1359 MBfree space in /var/adm/ras or point the copy directory at a filesystem with room for the dump ('sysdumpdev -D <dir>'), sized to 'sysdumpdev -e'.med
22Failed login attempts
failed_logins — WARN
16539 recorded (lifetime total)review recency ('who /etc/security/failedlogin | tail') and rotate the log; lock or investigate the source accounts/hosts.med
23Network exposure vs filtering
network_exposure — WARN
12 external listener(s) on ports 22,25,111,199,657,1334,2049,32768 +3 more; host IP filtering INACTIVEreduce the surface first (stop services you do not need — see the listeners and cleartext-inetd checks), then, if the box must self-defend, define rules with 'genfilt'/'mkfilt' and activate host filtering with 'mkfilt -v4 -u'.med
24NFS exports
nfs_exports — WARN
exportfs: nothing exportedadd an explicit access= host list and use ro unless the clients genuinely require writes; re-export only through the normal approved change process.med4.4.1.6 PASS
25Error notification
errpt_notify — WARN
26 errnotify stanzas (defaults only)add an errnotify ODM stanza that emails or pages on PERM hardware and disk errors.med
26Scheduled backup job
backup_job — WARN
no backup in crontabschedule mksysb/savevg in root's crontab, or confirm NIM/central backup owns it.med
27Error-logging daemon
errdemon_health — WARN
errdemon running; errlog capped at 8192 bytes (below the 1048576-byte default)raise the errlog size as root: '/usr/lib/errdemon -s 1048576' (or larger); it takes effect immediately.low
28Error notification methods
errnotify_methods — WARN
default errnotify only (diagela call-home present, no site paging)add an errnotify ODM stanza (odmadd) whose en_method pages/mails on class=H PERM and disk labels (e.g. SC_DISK_ERR*, LVM_SA_QUORCLOSE).low
29Trusted Execution
trusted_exec — WARN
TE=OFFconsider enabling TE ('trustchk -p TE=ON') if your change control supports it.low
30Login banner
login_banner — WARN
no herald setset a herald in the /etc/security/login.cfg default stanza (chsec -a herald=...).low
31Kernel tunables (nextboot)
tunables — WARN
1 changed tunable line(s)review /etc/tunables/nextboot; record why each change exists, or revert to default.low
32Host self-resolution
host_resolves — WARN
acme-prod-aix01 does not self-resolve locally — no matching /etc/hosts entry; resolution order not declared/readableadd acme-prod-aix01 to /etc/hosts with the system's intended local address.low
33Remote syslog
remote_syslog — WARN
no remote targetadd an '@loghost' line to /etc/syslog.conf and 'refresh -s syslogd'.low
34Performance history
perf_history — WARN
none runningenable topas recording ('topasrec'/xmwlm) so history exists when you need it.low
CVE exposure ladder
NOT ASSESSED — not assessed — no flrtvc.ksh invocation or report supplied. No zero counts are inferred from an uncompleted run.
A. Lifecycle & supportAMBER 3 pass · 2 warn · 0 fail
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
AIX release supportPASSlow7300-04-00-2546 — no announced end of supportThis AIX release is in active support and still receives security fixes.
Fix: n/a
Technology Level currencyPASSlow7300-04 (latest TL)This Technology Level is current for its release.
Fix: n/a
Firmware Update Access KeyPASSlowvalid through 2026-09-16The firmware Update Access Key is current — firmware released before its expiry date can be applied.
Fix: n/a
AIX Update Access KeyNOT_APPLICABLElown/a (Power10+ only)The AIX Update Access Key is a Power10+ entitlement; this hardware/level does not report one.
Fix: n/a
Hardware generationWARNmed9008-22L (POWER9) — hardware support ended 2026-01-31 (fully-virtual LPAR)This hardware generation is past IBM support, but this LPAR has no physical I/O adapters — the hardware is the host provider's to maintain (PowerVS or your VIOS estate). Confirm whose problem this is.
Fix: confirm who owns the hardware (IBM on PowerVS; your team on-prem), then plan or request a host refresh to current-generation IBM Power11 hardware; the host change is outside this LPAR.
System firmware currencyWARNhighVL950_168 — family FW950 current; hardware support ended 2026-01-31; firmware UAK valid through 2026-09-16The measured firmware lifecycle evidence has one or more currency constraints: family FW950 current; hardware support ended 2026-01-31; firmware UAK valid through 2026-09-16.
Fix: review IBM FLRT/Fix Central for machine type 9008, renew a near-expiry UAK, and schedule the supported firmware/hardware path named above.
VIOS level currencyNOT_APPLICABLElowrole=aix — /usr/ios/cli/ioscli absent (ls rc=2); ioslevel not applicableThe VIOS marker command positively proved this is a plain AIX LPAR, so a VIOS level does not apply.
Fix: n/a
B. Patch & vulnerability currencyINCOMPLETE 7 pass · 0 warn · 0 fail · 3 not assessed
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
Installed build agePASSlowbuilt week 2546 (~8 months ago)The installed build is reasonably current.
Fix: n/a
Fileset consistencyPASSlow698 filesets, 0 brokenAll installed filesets are in a consistent state.
Fix: n/a
Fileset dependency consistency (lppchk -v)PASSlowconsistent'lppchk -v' AND the independent 'lppchk -m3 -v' escalation both returned a genuinely confirmed clean result (rc=0, stdout and stderr both empty), and the fileset inventory itself (698 filesets) is a real, populated AIX system, not an empty/truncated capture.
Fix: n/a
Update-time space preview (informational)NOT_ASSESSEDlownot run this scan (requires a specific lpp_source)This scan's own filesystem-fullness findings are a general steady-state signal, not the authoritative 'will the next update fit' answer. IBM's own preview-mode check against your ACTUAL lpp_source is the one that matters before an update — this tool has not run it and cannot run it as a general scan.
Fix: before the next update, run 'smitty update_all' with 'PREVIEW only? = yes' (or 'installp -p -a -d <lpp_source> all|<filesets>') and review its 'Estimated system resource requirements' table (Needed vs Free per filesystem) — this is read-only/non-committing and is the real pre-flight check, distinct from this tool's own general df -g findings.
Interim fixes (ifixes)PASSlownone installedNo interim fixes — updates will not be blocked by leftover efixes.
Fix: n/a
Tracked security APARsNOT_ASSESSEDhighnot assessed — no bundled security APAR rows apply to 7300-04Absence of a bundled row provides no evidence that the system has no CVE exposure.
Fix: run current IBM flrtvc.ksh with a current apar.csv and pass the report via --flrtvc-report; review IBM PSIRT.
OpenSSH / OpenSSL levelsPASSlowopenssh 9.9.3015.2000, openssl 3.0.16.1000The OpenSSL 3.x line is current for AIX; keep both current via security bulletins.
Fix: n/a
IBM SDK Java lifecyclePASSlowJava 8 installed (Java8_64.jre 8.0.0.851, Java8_64.sdk 8.0.0.851)Java 8 is the last IBM SDK on AIX — track its service window (standard support ended 2025-04-30; extended runs to 2030-12-31 with an AIX SWMA contract).
Fix: n/a
FLRT APAR exposure scanNOT_ASSESSEDhighnot assessed — no flrtvc.ksh invocation or report suppliedFull CVE/APAR exposure was NOT evaluated — the embedded security-APAR seed above covers only a small curated set, not IBM's own FLRTVC engine. Absence of a result must never read as clean.
Fix: fetch apar.csv + flrtvc.ksh (tools/refresh-data.py) and re-run with --flrtvc-ksh + --flrtvc-apar-csv (preferred), or supply a pre-generated --flrtvc-report.
Reference data freshnessPASSlowreference data 6 day(s) oldreference data 6 day(s) old — EOS dates, APARs and firmware levels reflect IBM data as of 2026-07-14.
Fix: n/a
C. Storage & capacityRED 19 pass · 0 warn · 1 fail · 1 not assessed
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
Filesystem /PASSlow35% usedHealthy free space.
Fix: n/a
Filesystem /varPASSlow48% usedHealthy free space.
Fix: n/a
Filesystem /tmpPASSlow2% usedHealthy free space.
Fix: n/a
Other filesystemsFAILmed/opt 94%; repo (informational): /usr/sys/inst.images 100%One or more non-system filesystems are critically full.
Fix: free space or extend them; add monitoring.
Inode usage (JFS2)PASSlowno filesystem above 90% inodesJFS2 inode usage has headroom on every filesystem.
Fix: n/a
Paging spacePASSlow1 space(s), 3% usedMemory pressure is low.
Fix: n/a
LV mirror syncPASSlowno stale partitionsAll logical volume copies are in sync.
Fix: n/a
Volume group disksPASSlowall PVs activeEvery volume group disk is present and active.
Fix: n/a
Boot logical volume (hd5) sizePASSlow64MB (2 LP x 32MB), contiguous on hdisk0hd5 meets IBM's current 64MB boot-image sizing guidance and its physical partitions are contiguous on disk (every copy checked: hdisk0).
Fix: n/a
multibos/alt_disk standby-BOS residuePASSlownoneNo leftover multibos standby-BOS state (bos_-prefixed LVs or a mounted /bos_inst).
Fix: n/a
Volume group free spacePASSlowworst: rootvg 8% freeEvery online volume group has room to extend a filesystem.
Fix: n/a
MPIO path healthPASSlow8 paths / 1 disks, all enabledFull path redundancy.
Fix: n/a
MPIO health-check probingPASSlowMPIO disks=1; showing 1 of 1; applicable=1; attribute not applicable=0; unreadable=0; table: disk interval mode | hdisk0 60 nonactiveEvery applicable multipath disk reports a nonzero health-check interval no greater than 300 seconds.
Fix: n/a
Fibre Channel adapter errorsNOT_ASSESSEDlowfcs0: counters not reported (virtual FC); fcs1: counters not reported (virtual FC); fcs2: counters not reported (virtual FC); fcs3: counters not reported (virtual FC)Virtual FC adapters do not expose error counters inside the LPAR, so CRC/link-failure health could not be observed from here at all — this is not evidence of a clean adapter, just an architectural blind spot. Check path health on the VIOS side.
Fix: n/a
Volume group geometryPASSlowrootvg 32MB PP, 639 PP/diskPhysical-partition geometry is sane on every online VG — the PP size fits the VG size, so the allocation map is neither bloated (tiny PP) nor wasteful (huge PP).
Fix: n/a
LV mirror placementPASSlowno mirrored LVsNo logical volume is mirrored in-LPAR — single-copy LVs here rely on the SAN/VIOS for redundancy (in-LPAR mirroring is separate and not configured).
Fix: n/a
Filesystem vs LV sizingPASSlowno filesystem lags its LV by 512MB+Every JFS2 filesystem is grown into the logical volume it sits on — no allocated-but-unusable slack between the LV and the filesystem.
Fix: n/a
Legacy JFS filesystemsPASSlowall filesystems are JFS2No legacy JFS filesystems — everything is JFS2, the current AIX filesystem.
Fix: n/a
Mount optionsPASSlow/tmp separate; 9 jfs2 mount(s), all logged; 9 using default atimeMount hygiene is sound: /tmp is its own filesystem and every JFS2 mount has a log. Performance options (noatime for read-heavy mounts, cio/dio for databases, rbrw) are workload-specific and left to the app owner — atime-on is the AIX default and fine unless a mount is known read-heavy.
Fix: n/a
Paging space parityPASSmedsingle paging space defined; multi-space parity not applicableOnly one paging space is defined, so there is no second space whose size or active state could be out of parity.
Fix: n/a
Paging space layoutPASSlow1 paging space(s), no single-disk contention Total paging 512MB vs 4096MB RAM.Paging-space placement is fine — no two paging spaces share a disk, and there is no cross-VG contention to relieve. (Utilisation is checked separately under Paging space.)
Fix: n/a
D. Performance & sizingAMBER 9 pass · 1 warn · 0 fail
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
LPAR CPU entitlementPASSlowshared Uncapped, ent 0.25, physc 0.02 (9.4% entc), 1 VP SMT-8, idle 99.2%Shared-pool CPU entitlement looks reasonable for this sample: consuming 9.4% of the 0.25-core guarantee, uncapped so it can burst. A small entitlement plus uncapped is efficient design. Snapshot, not a trend.
Fix: n/a
Memory compositionPASSlowcomputational 67%, file/numperm 12%, 1218MB avail (29%)Memory has headroom: 67% computational, 1218MB available; no composition red flags in this snapshot.
Fix: n/a
VMM cache tuningPASSlowminperm 3% / maxperm 90% / maxclient 90% (AIX defaults); numperm 12.6%VMM cache tuning is at AIX defaults and the file cache is not pinned at its ceiling.
Fix: n/a
JFS2 filesystem-buffer blockingWARNmedblocked since boot: jfs2 fsbuf 1656, external-pager 370, client 0Filesystem I/O has been blocked waiting for JFS2 filesystem buffers (fsbuf) 2026 time(s) since boot — the buffer pool ran dry under I/O load and requests had to wait, adding latency that CPU/memory graphs never reveal. The count is cumulative since boot.
Fix: re-read 'vmstat -v' after a busy period: if the number is still climbing, raise JFS2 buffers with 'ioo -p -o j2_dynamicBufferPreallocation=<n>' (default 16, in 16KB units) and/or 'ioo -p -o numfsbufs=<n>'; a static non-zero count from a past burst is usually benign.
LVM/paging buffer blockingPASSlow0 pbuf and 0 psbuf blocksNo LVM pbuf or paging psbuf starvation since boot — buffer pools have kept up with disk and paging I/O.
Fix: n/a
I/O pacing (maxpout/minpout)PASSlowmaxpout=8193, minpout=4096 (paced)System-wide I/O pacing is configured, so a runaway writer cannot monopolize a disk and starve interactive I/O.
Fix: n/a
CPU headroom (snapshot)PASSlowidle 92%, physc 0.07, run queue r=1 vs 8 logical CPUsCPU has headroom in this sample: idle 92% with a short run queue for 8 logical CPUs (point-in-time snapshot, not a trend).
Fix: n/a
Paging activity (snapshot)PASSlowpi=0, po=0 in this sampleNo active paging in this sample — memory demand is being met from RAM (this is the activity read; paging-space capacity is checked separately under storage).
Fix: n/a
Adapter healthPASSlowen0 20000Mb(virt) 0err; en1 20000Mb(virt) 0errAll ethernet interfaces are up with zero transmit/receive/CRC/buffer errors (counters cumulative since boot).
Fix: n/a
Process limits (maxuproc)PASSlowbusiest user 'root' 42 procs vs maxuproc 128 (32%)Per-user process headroom is fine — the busiest user is well under the maxuproc fork ceiling.
Fix: n/a
E. Errors & eventsRED 6 pass · 2 warn · 1 fail
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
Error log (7 days)FAILhigh26 error entries (9 informational ignored) (recurring E18E984F x21)A noisy error log — something is actively wrong or flapping.
Fix: triage 'errpt' now, most recent and most frequent first.
Permanent hardware errors (30 days)PASShighnoneNo permanent hardware errors logged.
Fix: n/a
System dump devicePASSlowprimary: /dev/lg_dumplvA panic here can be diagnosed.
Fix: n/a
Recent crash evidencePASSlownone in 30 daysNo recent crash dumps found.
Fix: n/a
Error-logging daemonWARNlowerrdemon running; errlog capped at 8192 bytes (below the 1048576-byte default)The error daemon is up, but the circular error log is capped below the 1 MB default — on a chatty box the oldest entries roll off sooner, so a fault that logged a few days ago may already be gone when you look.
Fix: raise the errlog size as root: '/usr/lib/errdemon -s 1048576' (or larger); it takes effect immediately.
Decoded error labelsPASSlow26 non-informational error(s); most frequent: SRC x21; none match a known-critical labelThere are non-informational errors, but none decode to a known-critical hardware or LVM label — most are software or operator events. (Counts and triage are under 'Error log' above; this check is the label decode.)
Fix: n/a
Pre-failure signaturesPASShighnone in 7 daysNone of the classic pre-failure patterns a veteran hunts for — disk/adapter errors, SAN/SCSI path faults, EPOW power or thermal events, memory ECC errors, LVM disk loss, or dump-device faults — appear in the error log for the last 7 days.
Fix: n/a
Error notification methodsWARNlowdefault errnotify only (diagela call-home present, no site paging)The default diagela stanzas forward hardware errors to the diagnostics / Service Focal Point path (call-home, if enabled on the HMC/service processor), but no stanza runs a site alert script — nothing pages or mails your on-call on a critical or disk error.
Fix: add an errnotify ODM stanza (odmadd) whose en_method pages/mails on class=H PERM and disk labels (e.g. SC_DISK_ERR*, LVM_SA_QUORCLOSE).
System dump historyPASSlowno system dump ever recordedThe dump device has never captured a dump — expected on a box that has not panicked. It does mean the dump path is configured but unproven; only a real dump proves it works. (Whether a device is configured at all is checked separately under 'System dump device'.)
Fix: n/a
F. Availability & resilienceRED 2 pass · 3 warn · 1 fail
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
OS backup (mksysb) evidenceFAILhigh/image.data older than 90 daysNo recent OS backup evidence on this box — a rootvg loss means rebuild-from-scratch. (Local evidence only; confirm where mksysb lands and when it last ran.)
Fix: run a mksysb now; schedule it; verify the target is itself backed up.
rootvg redundancyWARNhigh1 disk, unmirroredThe OS lives on one disk — a single point of failure unless the backing storage is RAID/SAN-protected. Verify which.
Fix: mirror rootvg (mirrorvg + bosboot + bootlist) or document the storage-level protection.
Alternate rootvg cloneWARNhighstatus=NOT_APPLICABLE; usable=null; volume_group=null; disks=[]; reason=lspv reported no altinst_rootvg or old_rootvg; source_commands=[lspv]No alternate rootvg clone is configured, so this system has no measured fast-rollback path.
Fix: create and regularly refresh an alt_disk_copy clone of rootvg on a platform-bootable alternate disk; verify it with alt_rootvg_op and bootlist.
Dump device sizingPASSlowdevice 4096 MB covers estimated dump 1359 MBThe primary dump device (lg_dumplv, 4096 MB) is comfortably larger than the estimated dump for this LPAR (1359 MB), so a panic can capture a complete image. Re-check 'sysdumpdev -e' after any memory increase — the estimate tracks RAM.
Fix: n/a
Dump copy directoryWARNmedcopy dir /var/adm/ras has 215 MB free, estimated dump 1359 MBThe dump device can capture the dump, but the copy directory (/var/adm/ras, 215 MB free) is too small to hold a dump of the estimated size (1359 MB). On reboot the copy off the device fails, so the image is lost before anyone can analyze it — the same forensic loss as an undersized device, one step later.
Fix: free space in /var/adm/ras or point the copy directory at a filesystem with room for the dump ('sysdumpdev -D <dir>'), sized to 'sysdumpdev -e'.
Boot image currencyPASSlowbooted Jul 12, after kernel bos.mp64 install 11/21/25The system last booted AFTER the running kernel (bos.mp64) was installed, so the running kernel matches what is on disk and no kernel-update reboot is outstanding. (AIXray is read-only: it cannot inspect the hd5 boot image directly, so this compares the kernel install date to the last boot as a proxy for boot-image currency.)
Fix: n/a
G. Security & hardeningRED 9 pass · 7 warn · 8 fail · 1 not assessed
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
SSH ciphersPASShighaes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.comsshd offers only strong ciphers.
Fix: n/a
SSH root loginFAILhighpermitrootlogin yesDirect SSH root login is open — a single brute-forceable credential with no accountability.
Fix: set 'PermitRootLogin no' (or prohibit-password) in sshd_config and restart sshd.
Default password policyWARNhighweak: loginretries=0The default password rules are weaker than any standard requires — every new account inherits them.
Fix: tighten the /etc/security/user default stanza (maxage 1-13wk, minlen>=8, loginretries>0, histsize>0).
Password hashing algorithmPASShigh5.2.8 PASSssha256The configured password hashing algorithm avoids the legacy DES crypt default and its 8-character password limit.
Fix: n/a
UID 0 accountsPASSmedroot onlyroot is the only UID 0 account.
Fix: n/a
Failed login attemptsWARNmed16539 recorded (lifetime total)A high lifetime total of failed logins — someone has been knocking, whether a misconfigured app or a brute-force attempt. This log is never auto-trimmed, so review recency, not just the count.
Fix: review recency ('who /etc/security/failedlogin | tail') and rotate the log; lock or investigate the source accounts/hosts.
Cleartext inetd servicesPASSmednone enabledNo cleartext remote-access services are enabled in inetd.
Fix: n/a
Trust files (.rhosts)FAILhighpresent: /.rhostsHost-trust files allow passwordless login from named hosts — a classic lateral-movement path.
Fix: remove /.rhosts and /etc/hosts.equiv; rely on key-based ssh instead.
World-writable filesPASSlownone in /etc, /usr/local/binNo world-writable files in the scanned directories (scope bounded to /etc and /usr/local/bin).
Fix: n/a
SNMP community stringsFAILmeddefault community in useSNMP uses a default community string (public/private) — anyone on the network can read, or write, system data.
Fix: replace public/private with a strong community in /etc/snmpd.conf and refresh snmpd.
Audit subsystemWARNhighauditing offNo audit trail — you cannot answer 'who did what' after an incident.
Fix: configure and start audit ('audit start'; set it to start at boot).
Trusted ExecutionWARNlowTE=OFFTrusted Execution is off (informational) — no runtime binary-integrity enforcement.
Fix: consider enabling TE ('trustchk -p TE=ON') if your change control supports it.
Login bannerWARNlowno herald setNo legal login banner is set — auditors ask for one and it deters casual access.
Fix: set a herald in the /etc/security/login.cfg default stanza (chsec -a herald=...).
Account password agingPASSlowno non-system account with maxage=0 (1 locked)Every non-system account has password aging set.
Fix: n/a
Unexpected setuid/setgid filesPASSlownone in /home /tmp /var/tmp /usr/localNo setuid/setgid files outside the system paths.
Fix: n/a
Listening network socketsPASSlow12 listening socket(s)Each listening socket is attack surface — review anything you do not recognize.
Fix: n/a
root account controlsFAILhighrlogin=true + sugroups=ALL (root wide open)root can log in directly over the network (rlogin=true) AND any user may attempt su to root (sugroups=ALL) — the classic 'root wide open' pair. Either alone is a gap; together, root is one guessed password away from a network login with no accountability. This is the OS account gate in /etc/security/user, separate from sshd's PermitRootLogin.
Fix: restrict both: 'chsec -f /etc/security/user -s root -a rlogin=false' (admins log in as themselves and su/sudo to root) and '-a sugroups=<sysadmin-group>' so only a named group may su to root.
Stale privileged accountsPASSlow1 privileged account(s), none staleEvery privileged account has been used within 90 days (or is locked); no dormant standing-privilege accounts with non-expiring passwords.
Fix: n/a
Privilege delegation (sudo/RBAC)NOT_ASSESSEDmednot assessed — lslpp sudo capture failed (rc=1)Privilege delegation could not be assessed because the sudo package, sudoers file list, or active-rule capture failed, was empty, or was unparseable.
Fix: verify sudo installation and inspect every active sudoers file with visudo before treating delegation as scoped.
Network exposure vs filteringWARNmed12 external listener(s) on ports 22,25,111,199,657,1334,2049,32768 +3 more; host IP filtering INACTIVE12 services listen on non-loopback addresses (reachable from the network) and AIX host packet filtering (IP Security) is not active — the box relies entirely on the upstream network/firewall. One perimeter mistake, VLAN change, or misrouted subnet exposes every one of these ports directly.
Fix: reduce the surface first (stop services you do not need — see the listeners and cleartext-inetd checks), then, if the box must self-defend, define rules with 'genfilt'/'mkfilt' and activate host filtering with 'mkfilt -v4 -u'.
STIG file permissionsFAILhigh4.1.1.3 FAIL
4.1.1.2 PASS
7 of 11 rules compliant, 0 not applicable; failing: V-215269 /etc/inetd.conf (0664), V-215281 /etc/ntp.conf (0664), V-245559 /etc/hosts (0664), V-245563 /etc/syslog.conf (0644)One or more files mandated by the DISA STIG for IBM AIX 7.x are more permissive, or wrong-owned, than the rule allows — each is a documented hardening gap an auditor will flag.
Fix: chmod/chown the failing files to the required mode/owner per the rule list (chmod <maxmode> <path>; chown <owner>:<group> <path>); the compliance report lists every rule and its evidence.
STIG account policyFAILhigh5 of 12 rules compliant, 1 n/a; failing: V-215171 loginretries=0 (needs le 3), V-215220 mindiff=0 (needs ge 8), V-215223 maxage=13 (needs le 8), V-215224 histsize=4 (needs ge 5), V-215226 minlen=10 (needs ge 15), +2 moreOne or more account/password-policy attributes in /etc/security are weaker than the DISA STIG for IBM AIX 7.x mandates — each is a documented hardening gap an auditor will flag, and it applies to every account inheriting the default stanza.
Fix: tighten the failing attributes with chsec (chsec -f <file> -s default -a <attr>=<value>); the compliance report lists every rule, the required value, and the observed value.
STIG network tunablesFAILhigh4.5.6 PASS
4.5.7 PASS
4.5.3 FAIL
4.5.2 PASS
3 of 4 rules compliant, 0 n/a; failing: V-215399 clean_partial_conns=0 (needs eq 1)One or more kernel network options are set to a value the DISA STIG for IBM AIX 7.x flags — e.g. IP forwarding on a non-router, or TCP half-open connection cleanup disabled. Each is a documented hardening gap an auditor will flag.
Fix: set the failing tunables with 'no -p -o <tunable>=<value>' (nfso for NFS options) so the change persists across reboot; the compliance report lists every rule, the required value, and the observed value.
STIG disabled servicesFAILhigh34 of 37 rules compliant, 0 n/a; failing: V-215353 sendmail, V-215354 snmpd, V-215365 snmpmibdOne or more legacy network services the DISA STIG for IBM AIX 7.x requires disabled are still enabled or running — each is an unneeded, often unauthenticated, network-facing daemon an auditor will flag.
Fix: comment the service out of /etc/inetd.conf and 'refresh -s inetd' (inetd services), or 'stopsrc -s <subsystem>' and disable it at boot (SRC subsystems); the compliance report lists every rule and its evidence.
NFS exportsWARNmed4.4.1.6 PASSexportfs: nothing exportedOne or more exports are writable by default and have no access= client restriction, so any client that can reach the NFS service can attempt to mount them.
Fix: add an explicit access= host list and use ro unless the clients genuinely require writes; re-export only through the normal approved change process.
H. Config hygieneRED 3 pass · 2 warn · 1 fail
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
Time synchronization (NTP)FAILmedxntpd inoperative, 0 server(s)No working time sync — clock drift breaks log correlation, Kerberos and TLS.
Fix: configure /etc/ntp.conf with a server and start xntpd ('startsrc -s xntpd'; enable at boot).
DNS resolverPASSlow1 nameserver(s)At least one DNS resolver is configured.
Fix: n/a
Default routePASSlowdefault route presentA default route is configured.
Fix: n/a
Kernel tunables (nextboot)WARNlow1 changed tunable line(s)Kernel tunables are changed from default for next boot — deliberate tuning or archaeology? document each.
Fix: review /etc/tunables/nextboot; record why each change exists, or revert to default.
Timezone (TZ)PASSlowTZ=EST5EDTThe system timezone is set explicitly.
Fix: n/a
Host self-resolutionWARNlowacme-prod-aix01 does not self-resolve locally — no matching /etc/hosts entry; resolution order not declared/readableTools and certs can misbehave when the box has no local entry for its own hostname; AIXray deliberately did not query DNS.
Fix: add acme-prod-aix01 to /etc/hosts with the system's intended local address.
I. Monitoring & operational readinessAMBER 0 pass · 5 warn · 0 fail
CheckStatusSevCIS L1 checkObservedWhat it means & how to fix
Monitoring agentWARNhighno KNOWN monitoring agent detected (checked: Zabbix agent, Nagios NRPE, Prometheus node_exporter, IBM Tivoli/ITM kuxagent, collectd, njmon/nimon, Datadog agent)AIXray checked only the listed known agents and found none; other monitoring may still be present.
Fix: confirm monitoring coverage; if none exists, install and point a monitoring agent at this LPAR.
Error notificationWARNmed26 errnotify stanzas (defaults only)Errors log locally and tell no one — the error log only helps if someone happens to read it.
Fix: add an errnotify ODM stanza that emails or pages on PERM hardware and disk errors.
Remote syslogWARNlowno remote targetNo remote syslog target — logs die with the box, exactly when you need them.
Fix: add an '@loghost' line to /etc/syslog.conf and 'refresh -s syslogd'.
Performance historyWARNlownone runningNo performance-history collection — sizing and incident forensics become guesswork.
Fix: enable topas recording ('topasrec'/xmwlm) so history exists when you need it.
Scheduled backup jobWARNmedno backup in crontabNo scheduled backup in root's crontab — where does the mksysb come from?
Fix: schedule mksysb/savevg in root's crontab, or confirm NIM/central backup owns it.
Free engineer review: email your report to review@powertruesystems.com — a principal engineer replies within 2 business days.