85 lines
2.6 KiB
Markdown
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
|
|
```
|