Change windows: write and test the rollback before you start
A before, during and after checklist for firewall changes: written go/no-go checkpoints, config snapshots and a tested rollback, mapped to NIST SP 800-128.
Intermediate9 min read
CHANGE WINDOW · written go/no-go window ◴ SNAPSHOT PRE-CHECK GO/NO-GO VERIFY DONE ◆────────────○────────────◇────────────○────────────○ ▴ ┆ ┆ ┆ ┆ ┆ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘ rollback: restore snapshot [✓] backup saved [✓] rollback trigger [✓] success criteria [✓] one go/no-go caller
On this page
A firewall rule is rarely hard to write. What goes wrong is usually everything around it: the step nobody wrote down because "we always do that", the check that was skipped because the window was running late, the rollback that turned out to need a file nobody had saved. Google's SRE team puts a number on the general pattern from its own experience: in their words, roughly 70% of outages are due to changes in a live system.
These are my field notes on running a change window, cleaned up into a checklist you can copy. They are generic on purpose: no vendor is assumed except where I show one product's features as an example. The checklist is split into before, during and after, with one idea running through all three: the rollback is a plan in its own right, written and tested before the change starts, not something you work out at the moment you need it.
Why change management counts as a security control
It is tempting to file change management under "process" and security under "technology". NIST doesn't. SP 800-128, Guide for Security-Focused Configuration Management of Information Systems (August 2011, updated October 2019) describes four phases: planning, identifying and implementing configurations, controlling configuration changes, and monitoring. In the change control phase, the goal is that changes are "formally identified, proposed, reviewed, analyzed for security impact, tested, and approved prior to implementation", and the tools it lists for limiting unauthorised change include access controls, process automation and change windows (SP 800-128, section 2.2.3).
Rollback is in there too. Among the things a configuration change control procedure should cover, SP 800-128 lists "requirements for rollback of changes in the event that problems occur", and its sample change request template has a field for the work plan "including change implementation date, deliverables, and backout plan" (SP 800-128).
The control catalogue says the same thing in control language. In NIST SP 800-53 Rev. 5, the Configuration Management (CM) family includes (full text, PDF):
| Control | What it asks for, in short |
|---|---|
| CM-2(3) Retention of previous configurations | Keep a number of earlier baseline versions "to support rollback" |
| CM-3 Configuration change control | Decide which changes are controlled, review and approve them with security and privacy impact in mind, document decisions, keep records |
| CM-3(2) Testing, validation and documentation of changes | Test, validate and document changes before finalising them |
| CM-4(2) Verification of controls | After a change, check the affected controls work as intended |
Read as a group, those four controls already describe a change window: save the old state, agree the change, test it, check it afterwards. The rest of this post is about doing that at 1 a.m. with tired people.
CHANGE WINDOW · written go/no-go window ◴ SNAPSHOT PRE-CHECK GO/NO-GO VERIFY DONE ◆────────────○────────────◇────────────○────────────○ ▴ ┆ ┆ ┆ ┆ ┆ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘ rollback: restore snapshot [✓] backup saved [✓] rollback trigger [✓] success criteria [✓] one go/no-go caller
Before the window
Most of the work in a calm change window happens days before it opens.
1. Write the change as steps, including the "habit" steps
The steps that cause trouble are the ones experienced people do without thinking: disabling and re-enabling a NAT rule, adding a static route, clearing ARP on a neighbour after a move. If a step is only in someone's head, it is missing from the rollback too. Put every one of them in the plan as a numbered pre-task, task or post-task.
2. Save the current state where you can reach it
Take a backup of the running configuration and keep a copy off the device. SP 800-53's CM-2(3) asks for exactly this, and it is the one thing a rollback can't do without. If you are migrating between platforms, also compare the old and new configurations side by side with objects and groups expanded, so missing objects show up on paper rather than in production.
3. Capture "before" evidence
Run the checks you will run afterwards, now, and save the output: a ping from each interface to its known neighbours, the routing table, session counts, VPN tunnel status, a login to the key applications. "It worked before" is only useful if you can show it.
4. Write down what success looks like
Pick a short list of checks with a clear pass or fail. Google's guidance on canary releases suggests choosing only the top few metrics, "perhaps no more than a dozen", and starting from the indicators that show real problems in the service (SRE Workbook, Canarying Releases). The same discipline works for a firewall change: if you can't say in advance which result means "stop", nobody will agree on it at 2 a.m.
5. Write the rollback trigger and the times
The plan should name, in writing:
- a start time;
- a checkpoint time by which the change must pass its checks;
- a deadline by which the rollback itself must be finished, leaving room before business traffic returns;
- the trigger: the specific results that mean "roll back", for example any success check failing at the checkpoint.
Time-box the decision, not just the work. The question at the checkpoint is not "can we fix this?" but "did it pass?". If the answer is no, the plan already says what happens next.
6. Name one person who calls go or no-go
The SRE book's chapter on incidents makes the case for a single incident commander who holds the overall state, and it describes how one well-meant but uncoordinated change made an outage worse (Managing Incidents). A change window is a planned version of the same situation. One person calls each checkpoint; everyone else reports facts to that person.
During the window
7. Small steps with a check after each
Apply the change in the order written, and run the relevant check after each step rather than all checks at the end. When something breaks, you then know which step did it. Google's release engineering chapter makes the same argument at a larger scale: frequent releases mean "fewer changes between versions", which makes testing and troubleshooting easier (Release Engineering).
8. Make physical steps reversible too
If cables move, label old and new ports before you touch them, so putting them back is a step anyone on site can follow.
9. "Passed in test, failing in production" means stop
This is the hardest rule to keep and the most useful. If the success checks fail at the checkpoint, start the rollback. Debugging in production past the checkpoint eats the time the rollback needs, and the plan you wrote calmly last week is a better judge than the team at the end of a long night.
10. Communicate small and factual first
Update the people in the change room with what you see. Hold wider announcements until the cause is clear, so you don't have to correct them later.
Vendor features that help
Most firewall platforms keep configuration history and let you restore it. Palo Alto Networks' PAN-OS is a clear example because it separates two configurations: the candidate configuration, where your pending edits live, and the running configuration, which the firewall enforces. A commit is what activates pending changes (Commit, Validate, and Preview; Revert Firewall Configuration Changes).
That split gives you several tools for a change window:
- Before you commit: Preview Changes compares your candidate configuration with the running one, and Validate Changes reports the errors and warnings a commit would raise without touching the running configuration (same page).
- Snapshots: the firewall creates a configuration version each time you commit, and you can also save a named snapshot and export it to an external host (Save and Export Firewall Configurations).
- Reverting: you can revert the candidate to the running configuration to throw away uncommitted edits, or load an earlier configuration version or a named snapshot. Loading replaces the candidate configuration, so the restored settings take effect only after you commit them (Revert Firewall Configuration Changes).
- Afterwards: Config Audit compares two configuration versions and shows who committed what. Note one limit from the documentation: load and revert operations are not captured in the audit (Perform a Config Audit), so write your rollback down in the change record.
┌─ RUNNING CONFIG ────●┐ ┌─ SNAPSHOT ───────────┐ │ │ │ │ │ [ zones ] │ │ │ │ [ interfaces ] │ │ │ │ [ routes ] │ │ │ │ [ nat rules ] │ │ │ │ [ security rules ] │ │ │ │ │ │ │ │ │ │ │ └──────────────────────┘ └──────────────────────┘ health checks after commit: ping · routes · app login ·
Some platforms go a step further and roll back on their own. On Juniper's Junos OS, commit confirmed activates a change provisionally; if nobody confirms it within 10 minutes by default, the device "automatically rolls back to the previous configuration" (Juniper documentation). That protects you from the classic mistake of locking yourself out of a remote device. Whatever your platform offers, check it in a lab before you rely on it in a window.
Rollback as a first-class plan
A rollback plan deserves the same care as the change plan. In practice that means:
- It has its own steps, in order, written as carefully as the forward steps, including the "habit" steps in reverse.
- It names the file or version to restore, and where that file is.
- It has been tried, at least in a lab or on a non-production pair. A restore you have never run is a hope, not a plan.
- It fits in the time left. If the rollback takes 40 minutes, the checkpoint must be more than 40 minutes before the deadline.
- It has its own checks: the same "before" evidence from step 3, run again.
After the window
Verify, then keep watching
Run the success checks again and compare them with the "before" evidence. This is CM-4(2) in practice: confirm that the controls you changed are "operating as intended" (SP 800-53 Rev. 5). Then keep an eye on logs and monitoring for a while; some problems only show up when the morning traffic arrives.
Write it up, briefly and without blame
Update the change record and the baseline documents. If you rolled back, a short write-up helps the next attempt. The SRE book describes a postmortem as "a written record of an incident, its impact, the actions taken to mitigate or resolve it", plus root causes and follow-up actions, and says a blameless one focuses on causes without blaming individuals (Postmortem Culture). If the vendor is involved, ask them to reproduce the problem in their lab and agree on the date of the next attempt in the same conversation.
The checklist
Before
- Every step written down, including habit steps
- Running configuration backed up and copied off the device
- Old and new configs compared (for migrations)
- "Before" evidence captured
- Success checks with clear pass/fail
- Start time, checkpoint, deadline and rollback trigger written
- One go/no-go caller named
- Rollback steps written and tried in a lab
During
- One step at a time, check after each
- Cables labelled before moving
- Checkpoint called on time; fail means roll back
- Small, factual updates
After
- Checks re-run and compared with "before"
- Monitoring watched into business hours
- Change record and baseline updated
- Short blameless write-up if anything went wrong
None of this is clever, and that is the point. A change window goes well when the hard decisions were made in daylight, by people who wrote them down.
Sources
- NIST SP 800-128, Guide for Security-Focused Configuration Management of Information Systems (publication page)
- NIST SP 800-128 (PDF)
- NIST SP 800-53 Rev. 5, Security and Privacy Controls (publication page)
- NIST SP 800-53 Rev. 5 (PDF)
- Google SRE Book: Introduction
- Google SRE Book: Release Engineering
- Google SRE Book: Managing Incidents
- Google SRE Book: Postmortem Culture
- Google SRE Workbook: Canarying Releases
- Palo Alto Networks: Commit, Validate, and Preview Firewall Configuration Changes (PAN-OS 11.1)
- Palo Alto Networks: Save and Export Firewall Configurations (PAN-OS 11.1)
- Palo Alto Networks: Revert Firewall Configuration Changes (PAN-OS 11.1)
- Palo Alto Networks: Perform a Config Audit (PAN-OS 11.1)
- Juniper Networks: Commit the Configuration (Junos OS CLI User Guide)
Keep reading
Related posts
Network security
NIST SP 800-61r3 incident response: a phase-by-phase checklist
NIST SP 800-61r3 recasts incident response as a CSF 2.0 profile. What changed from r2, plus the questions to ask before, during and after an incident.
Intermediate10 min read
- Incident Response
- NIST
- CSF 2.0
- CISA
- Checklist
Network security
Inside a firewall HA failover: heartbeats, session sync, failback
How Palo Alto, FortiGate and Cisco FTD pairs detect a failure, sync sessions, move the virtual MAC and fail back, and how to test it safely.
Advanced11 min read
- High Availability
- Firewalls
- Palo Alto
- FortiGate
- Cisco FTD
- VRRP
- Change Management
Network security
How SIEM and SOAR fit together: logs, alerts and playbooks
A SIEM collects, normalises and correlates logs into alerts; SOAR runs playbooks on them. Covers priority logs and Sigma rules, per NIST and ASD/CISA guidance.
Beginner10 min read
- SIEM
- SOAR
- logging
- detection
- Sigma
- CISA
- NIST