My Server Health Check Scripts, and config repository

The primary purpose of these scripts is to perform server audit checks. There are only two scripts, one to collect data from a server which should be sent to another server for processing, and the actual processing script. The processing script will build html reports for all servers that had collector output sent to the procesing server.

The config part is simply because it has an option to record installed packages as part of the data collection so I have a record of what is needed to rebuild a server. It also collects a full hardware listing (if hardware display packages are installed).

The scripts support rhel family servers (Rocky, Alma etc) and Debian servers. It also now handles SunOS (OpenIndiana) for all checks except two, the firewall port open checks (IPF firewall checks not implemented, only iptables and netfilter) and as SunOS/OpenIndiana does not use SeLinux that of course is not implemeneted for SunOS.
[note: working on Debian does not mean it includes Ubuntu or derivitives as they digress too much from Debian :-)];

Processing script notes

All reporting against the collected information should be done on a dedicated machine with a web server running on it to make it easy to view the reports as the reports produced are html pages starting with an overview page of all servers status and total exception counts and drill down to details of the exceptions found for each server.
The processing script is also very CPU intensive.

As each server is likely to need different defaults individual customisation files can be created per server named custom/hostname.custom (with a default ALL.custom used if no explicit server customisation file exists).
These customisation files support include files, so for hostname.custom files the first include line would be something like "INCLUDE ../custom_includes/sever_Debian13|Debian12|Alma|OpenIndiana" etc. to set a decent base default ruleset for the server.
And then include applications unique to the server that do not belong in a full default ruleset, such as "INCLUDE ../custom_includes/mariadb_server" may only be needed on a few servers so would not be included in a base ruleset or alerts would be raise on servers not running mariadb; some include files are provided.

Important: the most recent stable version of this toolkit is most likely to be the one in my shell scripts repository on github, not on this webserver. Incremental changes/fixes and enhancements are pushed there more frequently than the files here are updated.

The latest dowload tarball (version 0.28) (released 31 May 2026) is available if you are interested. A copy of the documentation for the toolkit is available online here, this documentation is for the old version 0.25.

No matter how tightly you think you have locked down your server(s) I would be supprised if there were not at least hundreds if not thousands of exceptions found when using these scripts for the first time.

After processing there is a menu for all servers with a summary of insecurities found, permitting drill-down to each individual servers summary results be check section.
From version 0.08 onward this page also shows (dates in yellow) servers that have new collected data files available since the last processing was done for the server; which can be also be displayed with the '--checkchanged=list' option and processed with the '--checkchanged=process' option
From version 0.11 onward servers that have not had fresh data collected in the last 14 days are alerted on, as you should have automated collection/processing of these checks. From version 0.12 onward the 14 days limit has been made customisable per server and shown on the main index page in the snapshot date column.
Below is an example of the 0.28 index page.
Of note is where in the alerts column there is a (n) listed that is a configured exact match of alerts to expect (that will not be corrected) and if there is only those matched the alerts field in the main index will be green [OK], only if there are unexpected alerts will the number of alerts in that column be red.

From the main index page you just click on the link of the server name to look at each server. From each individual server summary page you can see a summary of insecurities found for each section of the checks, and drill-down to a detailed report for each section.

Please note this is being actively maintained, the latest will always be on github not here. This copy was last updated on 31May2026.

It should also be noted that as a general rule each new version will take longer to run than the previous version as additional checks are added; although obviously this depends on what your servers are used for (a web server with 200,000+ files to be checked obviously takes longer than a tftpboot server with 25,000 files to be checked so you probably won't notice much difference on servers with a large number of files).

You should always use the latest version for bug-fixes and enhancements. Upgrading to a new processing version will always require a full re-processing of all servers (although existing old collector files can be used for the re-processing although some information for a server will be unavailable in that case so there is the probability of false alerts due to data expected in later versions not present in files collected by older collector versions).