Files

85 lines
2.6 KiB
Markdown

# Nessus Tracker Workbook
This repo generates an `.xlsx` workbook for tracking Nessus remediation items.
Quick operator guide: [WIKI.md](WIKI.md)
## Dependencies
- Python `>=3.10`
- Python module: `openpyxl` (required)
- Python module: `xlsxwriter` (optional, not currently used by the generator)
Install on Debian/Ubuntu:
```bash
sudo apt install -y python3-openpyxl python3-xlsxwriter
```
Install with pip (alternative):
```bash
python3 -m pip install --user openpyxl xlsxwriter
```
## What it creates
- `Remediations` tab with columns:
- `CVE`, `Plugin ID`, `Severity`, `Name`, `Description`, `Links`, `Status`, `Excepted until (date)`, `First seen`, `scan 1 notes`, `scan 2 notes`, `scan 3 notes`
- `Template` tab with columns:
- `Key`, `CVE`, `Plugin ID`, `Severity`, `Name`, `Hosts`, `Owner`, `status`, `Excepted until (date)`, `Unresolved for`, `scan 1 notes`, `scan 2 notes`, `scan 3 notes`
`Template` behavior:
- Enter `Key` in each row.
- `Key` may be:
1. `CVE:...`
2. `PID:...`
3. raw CVE/plugin text (no prefix)
- The sheet normalizes the key and matches against `Remediations` (`CVE` first, then `Plugin ID`).
- If `Key` is blank, formula-driven fields remain blank.
- If `Key` is entered and no match is found, fields show `NEW ITEM`.
- If matched, both `CVE` and `Plugin ID` are auto-populated in `Template`.
- If matched, `Name` in `Template` is a hyperlink to the matching row in `Remediations`.
- If matched, `Excepted until (date)` is auto-populated in `Template`.
- If a matched source value is empty in `Remediations`, the corresponding auto-populated `Template` cell stays blank.
- `Unresolved for` in `Template` shows elapsed days since `First seen` when `First seen` is before today.
- `Hosts` and `Owner` are intended for manual entry.
- `Template` is protected so only `Key`, `Hosts`, and `Owner` are editable (rows 2+).
`Remediations` controls:
- `Severity` has a dropdown: `info`, `low`, `medium`, `high`, `critical`.
- `Status` has a dropdown:
- `exception`
- `exception - permanent`
- `In progress - next updates`
- `In progress - researching`
- `resolved`
- `Excepted until (date)` is highlighted red when the date is in the past.
- Conditional colors are applied for severity/status values.
## Generate workbook
```bash
python3 scripts/build_tracker_workbook.py
```
Output file: `nessus_remediation_tracker.xlsx`
## Generate 2026 tracker workbook
```bash
python3 scripts/build_2026_tracker_workbook.py
```
Output file: `2026_Nessus_Remediation_Tracker.xlsx`
## Validate workbook output
```bash
python3 -m py_compile scripts/build_tracker_workbook.py
python3 scripts/build_tracker_workbook.py
unzip -t nessus_remediation_tracker.xlsx
```