Complete Guide
Linux Patch Management: Everything You Need to Know
Patching is the single most effective security control you have. It is also the one most likely to be neglected, deferred, or done inconsistently. This guide covers the entire landscape of Linux patch management: how package managers work, how to build a patching process that scales, how to stay compliant, and how to choose between manual control and automation.
Written for sysadmins, DevOps engineers, and security teams managing production Linux and FreeBSD infrastructure.
What Is Linux Patch Management
Linux patch management is the process of identifying, testing, and applying software updates to Linux-based systems. These updates include security patches that fix vulnerabilities, bug fixes that resolve stability issues, and feature updates that add new functionality. The term “patch” comes from the Unix tradition of applying small changes (diffs) to source code, though modern patching typically means upgrading entire packages through a distribution's package manager.
At its core, patch management answers three questions: What needs to be updated? Is it safe to update? Has the update been applied successfully? In a single-server environment, you can answer these with a terminal and ten minutes. At scale — dozens, hundreds, or thousands of servers across multiple distributions — the answers require tooling, process, and discipline.
Why Patching Matters: The Cost of Falling Behind
The consequences of unpatched systems are not theoretical. They are documented, quantified, and in many cases, catastrophic.
The 2017 Equifax breach exposed the personal data of 147 million people. The root cause was CVE-2017-5638, a remote code execution vulnerability in Apache Struts. A patch had been available for two months before the breach. The cost to Equifax exceeded $1.4 billion in settlements, remediation, and regulatory fines.
WannaCry, also in 2017, exploited CVE-2017-0144 (EternalBlue) in Windows SMB. Microsoft had released the patch (MS17-010) 59 days before the attack. Over 200,000 systems across 150 countries were affected. The UK's National Health Service cancelled 19,000 appointments and diverted ambulances from five hospitals.
More recently, the Log4Shell vulnerability (CVE-2021-44228) in December 2021 demonstrated how a single unpatched dependency in a widely-used Java logging library could expose millions of systems to remote code execution. The vulnerability scored a perfect 10.0 on the CVSS scale.
These are the high-profile examples. For every Equifax, there are thousands of smaller breaches that never make headlines but still result in data loss, ransomware payments, and regulatory penalties. The common thread: a known vulnerability with an available patch that was not applied in time.
The Linux-Specific Challenge
Linux patch management is harder than it sounds because “Linux” is not one thing. It is hundreds of distributions, each with its own package manager, repository structure, release cadence, and security advisory format. A fleet running Ubuntu 22.04 LTS, RHEL 9, Alpine 3.19, and Arch Linux uses four different package managers with four different update mechanisms and four different ways of flagging security updates.
Most enterprise patch management tools were designed for Windows first and adapted for Linux as an afterthought. They often support only a handful of distributions, ignore FreeBSD entirely, and assume a level of homogeneity that does not exist in real infrastructure. This is the gap that cross-platform patch management tools need to fill.
The Patch Management Process
Effective patch management is a cycle, not a one-time task. Each phase builds on the previous one, and skipping steps is how systems break in production.
1. Discovery and Inventory
You cannot patch what you cannot see. The first step is maintaining an accurate inventory of every system, its operating system version, installed packages, and current patch level. This sounds obvious, but in practice, infrastructure drifts. VMs get spun up for testing and forgotten. Containers run images built months ago. A developer sets up a server for a demo and it quietly becomes production.
Automated inventory is not optional at any meaningful scale. Agents reporting installed packages and available updates on a regular cadence give you a live view of your fleet instead of a stale spreadsheet that was last updated during the last audit.
2. Assessment and Prioritisation
Not all patches are equal. A critical remote code execution vulnerability in OpenSSH needs to be applied immediately. A minor version bump in a development library can wait for the next maintenance window. Assessment means classifying updates by severity, risk, and relevance to your environment.
Security updates from distribution maintainers typically include CVSS scores and severity ratings. But raw scores are only part of the picture. A high-CVSS vulnerability in a package that is installed but not exposed to the network is lower priority than a medium-CVSS issue in a public-facing service. Context matters.
3. Testing
Applying patches directly to production without testing is a gamble. The patch that fixes a security vulnerability might also change a configuration default, deprecate a flag, or introduce a regression. Testing in a staging environment that mirrors production catches these issues before they cause outages.
For Linux systems, dry-run capabilities are invaluable. Most package managers support a simulation mode that shows exactly what will change without actually changing it:
# APT (Debian/Ubuntu) - simulate upgrade
apt-get upgrade --dry-run
# DNF (RHEL/Fedora) - assume no to all prompts
dnf upgrade --assumeno
# APK (Alpine) - simulate upgrade
apk upgrade --simulate
# Pacman (Arch) - print targets without performing
pacman -Syu --printDry-run output tells you exactly which packages will be upgraded, from which version to which version, and how much disk space will be used. This is the information you need to make an informed decision about whether to proceed.
4. Deployment
Deployment is applying the patches to target systems. In a well-run environment, this happens during defined maintenance windows, follows a staged rollout (dev, then staging, then production), and includes explicit approval gates for critical systems.
The deployment method depends on scale. A team managing five servers might SSH in and run updates manually. A team managing five hundred needs automation with policy-driven scheduling and centralised control.
5. Verification
After deployment, you need to confirm the patch was actually applied. Package manager exit codes can be misleading — a partial upgrade might exit 0 even though some packages failed to update. Verification means checking that the expected package versions are installed and that services are running correctly.
# Check specific package version (APT)
dpkg -l | grep openssl
# Check for remaining updates (DNF)
dnf check-update
# Verify service is running after update
systemctl status nginx
# Check if reboot is required (Debian/Ubuntu)
cat /var/run/reboot-required 2>/dev/null && echo "Reboot required" || echo "No reboot needed"6. Reporting and Documentation
Every patch operation should produce a record: what was patched, when, by whom, and what changed. This is not just a compliance requirement (though it is that too) — it is essential for troubleshooting. When a service breaks three days after a maintenance window, the first question is “what changed?” Without an audit trail, the answer is guesswork.
Linux Package Managers: APT, DNF, APK, and Pacman
The package manager is the foundation of Linux patch management. It handles dependency resolution, version tracking, cryptographic verification of packages, and the actual installation of updates. Understanding how each one works is essential for managing a mixed fleet.
APT (Debian, Ubuntu, and Derivatives)
APT (Advanced Package Tool) manages .debpackages and is the default on Debian, Ubuntu, Linux Mint, and their derivatives. It is arguably the most widely deployed package manager in server environments, given Ubuntu's dominance in cloud infrastructure.
# Refresh package index from repositories
sudo apt update
# List all upgradable packages
apt list --upgradable
# List only security updates (Ubuntu/Debian with unattended-upgrades)
apt list --upgradable 2>/dev/null | grep -i security
# Upgrade all packages (with confirmation)
sudo apt upgrade
# Full upgrade (handles dependency changes, may remove packages)
sudo apt full-upgrade
# Upgrade a specific package
sudo apt install --only-upgrade openssl
# Show package details and installed version
apt show openssl
dpkg -l openssl
# View changelog before upgrading
apt changelog openssl
# Simulate upgrade without applying
apt-get upgrade --dry-runAPT distinguishes between upgrade (never removes packages) and full-upgrade(may remove packages to resolve new dependencies). For production systems, understanding this distinction matters — a full-upgrade that removes a dependency can break applications.
Ubuntu and Debian maintain separate security repositories. Packages in the -security pocket contain only fixes for CVEs, making it possible to apply security patches independently of feature updates. This is a critical capability for production environments where stability is paramount.
DNF and YUM (RHEL, CentOS, Fedora, AlmaLinux, Rocky Linux)
DNF (Dandified YUM) is the default package manager for Red Hat-based distributions. It replaced YUM in Fedora 22 and RHEL 8, though the yum command still works as an alias. DNF manages .rpm packages and uses repository metadata to resolve dependencies.
# Check for available updates
dnf check-update
# List security-only updates
dnf updateinfo list security
# View advisory details for a specific CVE
dnf updateinfo info --cve CVE-2024-6387
# Apply all updates
sudo dnf upgrade
# Apply only security updates
sudo dnf upgrade --security
# Apply updates for a specific advisory
sudo dnf upgrade --advisory RHSA-2024:4312
# Rollback to a previous transaction
sudo dnf history list
sudo dnf history undo <transaction-id>
# View transaction history
dnf history info <transaction-id>DNF's standout feature for patch management is its advisory system. Red Hat publishes security advisories (RHSA), bug fix advisories (RHBA), and enhancement advisories (RHEA), each with severity ratings and CVE references. The dnf upgrade --security flag applies only security-classified updates, which is exactly what you want for production systems that need vulnerability remediation without feature churn.
DNF's transaction history and undo capability also make rollbacks straightforward, which is a significant advantage when a patch causes unexpected issues.
APK (Alpine Linux)
APK (Alpine Package Keeper) is the package manager for Alpine Linux, the distribution that dominates container base images due to its minimal footprint. Alpine's popularity in Docker environments means APK patch management is increasingly relevant, even for teams that do not run Alpine on bare metal.
# Update repository index
apk update
# List available upgrades
apk upgrade --simulate
# Upgrade all packages
apk upgrade
# Upgrade a specific package
apk add --upgrade openssl
# Show installed package version
apk info openssl
# List all installed packages
apk list --installed
# Check for security fixes (Alpine security advisories)
apk upgrade --availableAPK is fast and lightweight, but it lacks some of the granularity of APT and DNF. There is no built-in distinction between security and non-security updates at the package manager level. Alpine publishes security advisories separately, and identifying which updates are security-related requires cross-referencing with the Alpine security tracker.
Pacman (Arch Linux and Derivatives)
Pacman is the package manager for Arch Linux, Manjaro, and EndeavourOS. Arch follows a rolling release model, meaning there are no version-based releases — packages are continuously updated. This creates a fundamentally different patching dynamic compared to point-release distributions like Ubuntu LTS or RHEL.
# Sync package database and upgrade all packages
sudo pacman -Syu
# Check for available updates without installing
checkupdates
# Upgrade a specific package
sudo pacman -S openssl
# View package information
pacman -Qi openssl
# List recently installed/upgraded packages
grep -i "upgraded|installed" /var/log/pacman.log | tail -20
# Downgrade a package (from cache)
sudo pacman -U /var/cache/pacman/pkg/openssl-3.2.0-1-x86_64.pkg.tar.zstArch's rolling model means you are always on the latest version of everything. This eliminates the backporting complexity of LTS distributions but introduces risk: every update is a potential breaking change. Arch is less common in production server environments, but it appears in development workstations, CI/CD runners, and specialised deployments.
Managing Multiple Package Managers
The real challenge is not learning each package manager individually — it is managing them all simultaneously. When your fleet includes Ubuntu web servers, RHEL database hosts, Alpine containers, and an Arch-based build server, you need either a lot of shell scripts or a tool that normalises the output across all of them.
This is where unified patch management platforms earn their value. Instead of SSH-ing into each host and running distribution-specific commands, you get a single dashboard that shows pending updates across APT, DNF, APK, and Pacman in a consistent format.
FreeBSD Patch Management
FreeBSD is the forgotten child of patch management. Most commercial tools ignore it entirely. Most open-source automation tools treat it as a second-class citizen. Yet FreeBSD runs critical infrastructure across the internet: Netflix serves video from FreeBSD, WhatsApp built their messaging infrastructure on it, and pfSense — one of the most widely deployed open-source firewalls — is FreeBSD-based.
If you run pfSense, OPNsense, TrueNAS, or any FreeBSD-based appliance, you need patch management for it. Ignoring it because your tools do not support it is not a valid security strategy.
How FreeBSD Package Management Differs
FreeBSD uses pkg for third-party package management (analogous to APT or DNF) and freebsd-update for base system patches. This two-layer model is an important distinction: the base system (kernel, userland utilities, system libraries) is updated separately from installed packages.
# Update package repository catalogue
pkg update
# List available package upgrades
pkg upgrade --dry-run
# Upgrade all packages
pkg upgrade
# Check for base system updates
freebsd-update fetch
freebsd-update install
# Audit installed packages for known vulnerabilities
pkg audit -F
# Show package details
pkg info openssl
# Lock a package to prevent upgrades
pkg lock opensslThe pkg audit -Fcommand is particularly useful — it checks all installed packages against the FreeBSD VuXML vulnerability database and reports known CVEs. This gives you an immediate view of your vulnerability exposure without external scanning tools.
Why FreeBSD Gets Neglected
The problem is not FreeBSD itself — its package management is mature and well-designed. The problem is tooling. Ansible has FreeBSD modules, but they are less maintained than their Linux equivalents. Foreman does not support FreeBSD. Most commercial patch management vendors do not list it as a supported platform. Teams end up managing their FreeBSD systems separately, often with manual SSH sessions and ad-hoc scripts.
This is a security gap. PatchMon treats FreeBSD as a first-class platform, with the same agent, the same dashboard, and the same reporting as Linux and Windows hosts. If it runs pkg, it is supported.
Patch Management Best Practices
The difference between “we patch our servers” and “we have a patch management process” is the difference between hope and confidence. These practices come from operating production infrastructure, not from vendor whitepapers.
Use Staging Environments
Never apply patches to production first. Maintain at least one staging environment that mirrors your production configuration. Apply patches there first, run your test suite, verify application behaviour, and only then promote to production. The staging environment does not need to be the same scale as production, but it needs to run the same OS version, the same application stack, and the same configuration.
Define Maintenance Windows
Patches should be applied during defined maintenance windows, not whenever someone has time. Maintenance windows should be documented, communicated to stakeholders, and consistent. “Tuesday nights at 22:00 UTC” is a maintenance window. “Whenever we get around to it” is not.
Exception: critical security patches for actively exploited vulnerabilities. These warrant emergency maintenance outside the regular window, with appropriate change management documentation.
Dry-Run Before You Apply
Every package manager supports some form of dry-run or simulation mode. Use it. Before every production patch operation, run the dry-run equivalent and review the output. Look for unexpected package removals, major version jumps, and dependency changes. This takes two minutes and has prevented countless outages.
Have a Rollback Plan
Before patching, know how you will undo it if something goes wrong. For RPM-based systems, DNF's transaction history makes rollbacks straightforward. For Debian-based systems, you may need to downgrade specific packages manually. For immutable infrastructure, rollback means redeploying the previous image.
# DNF: undo the last transaction
sudo dnf history undo last
# APT: downgrade a specific package
sudo apt install openssl=3.0.13-0ubuntu3.1
# Snapshot-based rollback (if using LVM or ZFS)
# Take snapshot before patching
sudo lvcreate --size 10G --snapshot --name pre-patch /dev/vg0/root
# If something goes wrong, revert
sudo lvconvert --merge /dev/vg0/pre-patchBetter yet, take filesystem snapshots before patching if your infrastructure supports LVM, ZFS, or cloud-provider snapshots. A snapshot taken 30 seconds before patching is the most reliable rollback mechanism available.
Implement Approval Workflows
For production systems, patches should require explicit approval before deployment. This does not mean bureaucratic change advisory boards that meet once a month. It means a clear record of who reviewed the patch list, who approved the deployment, and when. A lightweight approval workflow built into your patch management tooling is worth more than a lengthy change management policy that nobody follows.
Maintain an Audit Trail
Every patch operation should be logged: what was patched, when, by whom, what policy triggered it, and what the output was. This is not just for compliance — it is for troubleshooting. When a service fails three days after a maintenance window, the audit trail is the first place you look.
Package manager logs (/var/log/apt/history.log, /var/log/dnf.log) provide some of this, but they are local to each host and lack context about who initiated the update and why. Centralised audit trails that capture the full lifecycle — from policy creation through dry-run to approval to execution — are what auditors actually want to see.
Separate Security Patches from Feature Updates
When possible, apply security patches independently of feature updates. Security patches are typically small, well-tested, and focused on fixing a specific vulnerability. Feature updates may change behaviour, add new dependencies, or introduce regressions. Distributions that maintain separate security repositories (Debian, Ubuntu, RHEL) make this straightforward.
Handle Kernel Updates and Reboots
Kernel updates require a reboot to take effect. This is the most disruptive type of patch and the one most likely to be deferred indefinitely. Track which systems are running a kernel that does not match the installed version — this means a kernel update was applied but the system was never rebooted.
# Currently running kernel
uname -r
# Installed kernel packages (Debian/Ubuntu)
dpkg -l | grep linux-image
# Installed kernel packages (RHEL/CentOS)
rpm -qa kernel
# Check if reboot is needed (Debian/Ubuntu)
[ -f /var/run/reboot-required ] && echo "Reboot needed" || echo "No reboot needed"
# Check if reboot is needed (RHEL - needs needs-restarting from yum-utils)
needs-restarting -rCompliance and Patching
Compliance frameworks do not just recommend patching — they require it, with specific timelines, documentation, and evidence. If your organisation is subject to SOC 2, ISO 27001, PCI-DSS, or HIPAA, patch management is not optional and hand-waving will not satisfy an auditor.
SOC 2
SOC 2 Trust Services Criteria CC7.1 requires organisations to “detect and monitor changes to the configuration of information technology infrastructure.” In practice, this means you need evidence that: vulnerabilities are identified in a timely manner, patches are evaluated and applied according to a defined process, and the process is documented with audit trails. Most SOC 2 auditors expect critical patches to be applied within 30 days and high-severity patches within 90 days, though specific timelines depend on your stated policies.
ISO 27001
ISO 27001 Annex A control A.12.6.1 (Technical vulnerability management) requires organisations to “obtain timely information about technical vulnerabilities of information systems being used, evaluate the organisation's exposure to such vulnerabilities and take appropriate measures to address the associated risk.” This maps directly to patch management: you need a vulnerability identification process, a risk-based approach to prioritisation, a defined remediation timeline, and evidence that the process is being followed.
PCI-DSS
PCI-DSS is the most prescriptive. Requirement 6.3.3 mandates that “critical and high-security patches/updates are installed within one month of release.” Requirement 6.3.1 requires identification and management of security vulnerabilities using reputable outside sources. Requirement 11.3 requires regular vulnerability scans. PCI auditors will ask for specific evidence: a list of all systems in scope, their current patch levels, dates patches were applied, and any exceptions with documented risk acceptance.
CIS Benchmarks
CIS (Center for Internet Security) Benchmarks provide specific, actionable hardening guidelines for individual operating systems. Each benchmark includes controls related to patch management: ensuring automatic updates are configured, verifying GPG keys for package repositories, and checking that only approved software sources are configured.
PatchMon's compliance scanning feature runs OpenSCAP CIS benchmark scans directly on your hosts, giving you a compliance score with rule-level results and remediation guidance. This is the evidence auditors want: not a claim that you follow best practices, but measurable proof with timestamps.
What Auditors Actually Want to See
Across all these frameworks, auditors are looking for the same things:
- A documented patch management policy with defined timelines for different severity levels
- Evidence that the policy is being followed (not just that it exists)
- Timestamped records of when patches were identified, approved, and applied
- Evidence of testing before production deployment
- A process for handling exceptions (systems that cannot be patched and why)
- Regular vulnerability scanning results showing patch coverage
Spreadsheets and manual logs can satisfy these requirements, but they do not scale and they are easy to falsify. Automated patch management with built-in audit trails provides the same evidence with less effort and more credibility.
Automation vs Manual Patching
The automation debate in patch management is not binary. The right answer is usually a combination: automate what you can, maintain manual control where you must, and use dry-run validation as the bridge between the two.
When to Automate
Automation makes sense for systems and updates where the risk of applying the patch is lower than the risk of delaying it:
- Development and staging environments. These should be patched aggressively and automatically. They serve as your canary for production patches.
- Security patches for critical vulnerabilities. When CISA adds a CVE to the Known Exploited Vulnerabilities catalogue, the clock is ticking. Automated deployment of security patches with a short delay (hours, not days) reduces your exposure window.
- Homogeneous fleets. If you have 200 Ubuntu 22.04 servers running the same application stack, automated patching with staged rollout (10% first, wait, then the rest) is efficient and low-risk.
- Immutable infrastructure.If you rebuild servers from images, “patching” means building a new image with updated packages and deploying it. This is inherently automated and inherently testable.
When to Approve Manually
Manual approval is appropriate for systems where a failed patch has significant consequences:
- Production databases. A PostgreSQL or MySQL version upgrade that changes replication behaviour, query planning, or storage format needs human review.
- Customer-facing services. Updates to web servers, load balancers, or application runtimes that could cause downtime should be reviewed and approved.
- Systems with complex dependencies. Hosts running custom-compiled software or applications pinned to specific library versions need careful evaluation.
- Kernel updates requiring reboots. These need scheduling, coordination with application teams, and verification that services restart correctly.
The Dry-Run Approach
The most effective approach combines both: automate the detection and dry-run phases, then require human approval before applying changes to critical systems. This gives you the speed of automation for discovery and assessment while maintaining human judgement for the decision to deploy.
The workflow looks like this:
- Agents automatically detect available updates and report them to the central dashboard
- A scheduled dry-run executes against target hosts, showing exactly what will change
- An administrator reviews the dry-run results and approves (or rejects) the patch run
- Approved patches are deployed during the configured maintenance window
- Results are verified and recorded in the audit trail
This is the model that PatchMon's patch policies support: automated detection, dry-run validation, approval gates, and scheduled deployment with full audit logging.
Unattended Upgrades: A Note of Caution
Debian and Ubuntu ship unattended-upgrades, a package that automatically installs security updates. RHEL has dnf-automatic. These are useful for systems that would otherwise never be patched, but they have limitations: no dry-run preview, no approval workflow, no centralised visibility, and no audit trail beyond local log files. They are a safety net, not a strategy.
Open Source vs Commercial Patch Management Tools
There is no single best tool for Linux patch management. The right choice depends on your fleet size, distribution mix, compliance requirements, and budget. Here is an honest comparison of the approaches.
Configuration Management Tools (Ansible, Puppet, Chef, Salt)
Ansible, Puppet, Chef, and Salt can all manage package updates as part of their configuration management role. Ansible is the most popular choice, with modules for APT, DNF, APK, and Pacman.
Strengths: Flexible, widely adopted, infrastructure-as-code model, strong community. If you are already using Ansible for configuration management, adding patch management playbooks is a natural extension.
Limitations: Configuration management tools manage desired state, not patch workflows. They do not natively provide dry-run previews, approval workflows, scheduled maintenance windows, or audit trails. You can build these features around them, but you are assembling a patch management system from components rather than using one. Reporting requires additional tooling (AWX/Tower, Foreman, or custom dashboards).
Foreman and Katello
Foreman (with the Katello plugin) provides lifecycle management for RHEL-based systems. It manages content views, repository syncing, and host group-based patching.
Strengths: Deep Red Hat integration, content views for controlling which updates are available, host group management, errata tracking.
Limitations: Primarily designed for RHEL and CentOS. Debian/Ubuntu support exists but is less mature. FreeBSD is not supported. The setup is complex (Foreman + Katello + Candlepin + Pulp) and resource-heavy. The learning curve is steep.
Spacewalk / Uyuni
Spacewalk was Red Hat's open-source systems management tool. It was discontinued, with Uyuni (from SUSE) carrying on as the community successor.
Strengths: Comprehensive systems management (not just patching), content management, configuration management.
Limitations: Heavy infrastructure requirements, complex setup, limited distribution support outside SUSE and RHEL ecosystems. Development activity has decreased significantly.
Commercial Patch Management Platforms
Commercial options (Automox, Ivanti, ManageEngine, BigFix) offer polished interfaces, vendor support, and compliance reporting. They are typically priced per-endpoint per-month.
Strengths: Managed infrastructure (SaaS), professional support, pre-built compliance reports, integrations with ITSM tools.
Limitations:Per-host pricing scales linearly with fleet size. Most were designed for Windows first and added Linux support later. FreeBSD support is rare. You are trusting a third party with privileged access to your infrastructure. Vendor lock-in is real — migrating away from a commercial platform means rebuilding your entire patch management process.
For teams that want the control of open source with the workflow features of commercial tools, there is a middle ground. PatchMon is open source under AGPLv3with a self-hosted deployment model, but includes the workflow features — dry-run validation, approval gates, scheduled policies, audit trails — that you would normally only find in commercial platforms.
Choosing the Right Approach
| Criteria | Config Mgmt (Ansible) | Foreman/Katello | Commercial SaaS | PatchMon |
|---|---|---|---|---|
| Multi-distro support | Good | RHEL-focused | Varies | APT, DNF, APK, Pacman, pkg |
| FreeBSD support | Limited | No | Rare | Yes (first-class) |
| Dry-run validation | Manual | No | Varies | Built-in |
| Approval workflows | DIY | No | Yes | Built-in |
| Audit trail | DIY | Partial | Yes | Full lifecycle |
| Setup complexity | Low-Medium | High | Low (SaaS) | Low (single binary) |
| Per-host pricing | No | No | Yes | No (Community) |
| Self-hosted option | Yes | Yes | Rarely | Yes |
How PatchMon Handles Linux Patch Management
PatchMon was built specifically for the problems described in this guide. Not as a configuration management tool with patching bolted on, not as a Windows platform with Linux added as an afterthought, but as a purpose-built patch management platform for mixed Linux, FreeBSD, and Windows environments.
Agent-Based Discovery
A lightweight agent runs on each host and automatically detects the package manager, installed packages, and available updates. The agent supports APT, DNF/YUM, APK, Pacman, FreeBSD pkg, and Windows Update Agent. It uses an outbound-only connection model— the agent connects to the server, not the other way around. No inbound ports, no SSH keys to manage, no firewall rules to maintain.
Unified Dashboard
All hosts appear in a single dashboard regardless of their operating system. Pending updates from an Ubuntu server, a RHEL database host, a FreeBSD firewall, and a Windows domain controller are displayed in the same consistent format. Security updates are flagged so you can prioritise what matters.
Patch Policies and Scheduling
Patch policies define how and when updates are applied. Policies support three scheduling modes: immediate deployment, delayed by a configurable number of minutes, or at a fixed time in a specific timezone. Policies can be assigned to individual hosts or host groups, with per-host exclusions for systems that need special handling.
Dry-Run and Approval Workflow
Every patch run can start with a dry-run phase that simulates the update and reports exactly what will change. An administrator reviews the dry-run output and either approves or rejects the patch. The dry-run results are preserved alongside the actual run as audit evidence. This is the “automation with human judgement” model described in the automation section above.
Complete Audit Trail
Every patch operation produces a permanent, timestamped record. Who triggered the run, who approved it, what policy was active, what packages changed, and the full shell output. The policy snapshot is frozen at execution time, so even if the policy changes later, the record reflects exactly what was in effect when the patch was applied. This is the evidence that compliance auditors need.
Compliance Scanning
Beyond patching, PatchMon includes built-in CIS benchmark scanning via OpenSCAP. Run compliance scans on your hosts and track scores over time with rule-level results and remediation guidance. Patching and compliance in a single platform reduces tool sprawl and gives you a more complete picture of your security posture.
Deployment Options
PatchMon deploys as a single binary with PostgreSQL and Redis as its only dependencies. A Docker Compose file gets you running in minutes. Three editions are available: Community (free, open source, unlimited hosts), PRO (enterprise features and priority support), and Cloud (fully managed, no infrastructure to maintain).
The Community edition is the full platform under AGPLv3 with no artificial host limits, no user caps, and no feature gates. If you want to evaluate PatchMon against the criteria in this guide, Community is the place to start.
Key Takeaways
- 1.Patching is your most effective security control. The majority of breaches exploit known vulnerabilities with available patches. The window between patch availability and exploitation is shrinking.
- 2.Process matters more than tools. A disciplined team using shell scripts will outperform an undisciplined team with expensive tooling. But good tools make good processes easier to sustain.
- 3.Dry-run before you deploy. Every package manager supports it. Every patch management tool should surface it. Two minutes of review prevents hours of incident response.
- 4.Do not ignore FreeBSD. If it is in your fleet, it needs the same patch management discipline as your Linux hosts. “Our tools do not support it” is not a valid exception.
- 5.Audit trails are not just for compliance. They are for troubleshooting, for accountability, and for understanding what changed when something breaks.
- 6.Automate detection, gate deployment. The sweet spot is automated discovery and dry-run with human approval for production systems. Full automation for dev/staging, controlled automation for production.
Ready to get patch visibility across your fleet?
Community edition is free, open source, and supports unlimited hosts.