b4da4db78b
Co-authored-by: Cursor <cursoragent@cursor.com>
1031 lines
37 KiB
Markdown
1031 lines
37 KiB
Markdown
# راهنمای ساختار و نگارش اسکریپتهای ممیزی FAVA
|
||
|
||
> **مخزن:** `Domains/`
|
||
> **مسیر تحویل:** `Auditing/FAVA/` (و در برخی دامنهها root دامنه برای Windows Service)
|
||
> **مخاطب:** تیم Hardening & Resilience — ICT Security Department of Isfahan Municipality
|
||
> **نسخهٔ سند:** 1.0.0
|
||
> **تاریخ:** ۱۴۰۵/۰۴/۰۷ (۲۰۲۶-۰۶-۲۷)
|
||
> **جفت سند:** [`AUDIT_GUIDELINE_SCRATCH.md`](./AUDIT_GUIDELINE_SCRATCH.md)
|
||
|
||
---
|
||
|
||
## فهرست مطالب
|
||
|
||
1. [هدف و تعریف FAVA](#۱-هدف-و-تعریف-fava)
|
||
2. [نقشهٔ دامنهها و موجودی canonical](#۲-نقشهٔ-دامنهها-و-موجودی-canonical)
|
||
3. [ساختار پوشهای و نامگذاری فایل](#۳-ساختار-پوشهای-و-نامگذاری-فایل)
|
||
4. [الزامات هدر و metadata](#۴-الزامات-هدر-و-metadata)
|
||
5. [معماری داخلی اسکریپت](#۵-معماری-داخلی-اسکریپت)
|
||
6. [پارامترهای CLI و متغیرهای محیطی](#۶-پارامترهای-cli-و-متغیرهای-محیطی)
|
||
7. [پیادهسازی کنترلهای CIS](#۷-پیادهسازی-کنترلهای-cis)
|
||
8. [ثبت نتیجه — نقطهٔ واحد](#۸-ثبت-نتیجه--نقطهٔ-واحد)
|
||
9. [گزارشدهی و Schema JSON](#۹-گزارشدهی-و-schema-json)
|
||
10. [ماژولهای Enterprise](#۱۰-ماژولهای-enterprise)
|
||
11. [Hardent Orchestration](#۱۱-hardent-orchestration)
|
||
12. [کدهای خروج (Exit Codes)](#۱۲-کدهای-خروج-exit-codes)
|
||
13. [مسیرهای خروجی و آرشیو](#۱۳-مسیرهای-خروجی-و-آرشیو)
|
||
14. [امنیت اجرا و رفتار پیشفرض](#۱۴-امنیت-اجرا-و-رفتار-پیشفرض)
|
||
15. [الگو به تفکیک دامنه](#۱۵-الگو-به-تفکیک-دامنه)
|
||
16. [نسخهگذاری، آرشیو و deprecate](#۱۶-نسخهگذاری-آرشیو-و-deprecate)
|
||
17. [چکلیست تحویل FAVA](#۱۷-چکلیست-تحویل-fava)
|
||
18. [منابع و مراجع داخلی](#۱۸-منابع-و-مراجع-داخلی)
|
||
|
||
---
|
||
|
||
## ۱. هدف و تعریف FAVA
|
||
|
||
**FAVA** مسیر **تحویل عملیاتی (Production Canonical)** اسکریپتهای ممیزی CIS در مخزن `Domains` است.
|
||
|
||
| ویژگی | الزام FAVA |
|
||
|-------|------------|
|
||
| **هدف** | اجرا روی داراییهای واقعی سازمان (سرور، ایستگاه، hypervisor، سرویس) |
|
||
| **شکل** | اسکریپت **تکفایل self-contained** — بدون وابستگی runtime به `_tools/` یا `source` خارجی |
|
||
| **تعامل** | **Non-interactive** — بدون `Read-Host`؛ مناسب Ansible/SCCM/cron/SSH |
|
||
| **گزارش** | **JSON-First** — TXT/CSV/HTML/Splunk از JSON تولید میشوند |
|
||
| **benchmark** | هر کنترل به **نسخهٔ مشخص CIS** متصل است |
|
||
| **همترازی** | semantics کنترل و exit code با اسکریپت **Hardening** جفت mirror شود |
|
||
|
||
**FAVA نیست:**
|
||
- محیط آزمایش معماری جدید → [`Scratch`](./AUDIT_GUIDELINE_SCRATCH.md)
|
||
- orchestration چندمرحلهای playbook → `Auditing/Hardent/` (فقط Ubuntu)
|
||
|
||
---
|
||
|
||
## ۲. نقشهٔ دامنهها و موجودی canonical
|
||
|
||
```
|
||
Domains/
|
||
├── HyperVisor/Auditing/FAVA/
|
||
│ └── Esxi 8/VMware_ESXi_vCenter_Audit-V2.2.1.ps1 ← canonical ESXi 8
|
||
├── LinuxDebianOS/Auditing/FAVA/ ← خالی (Ubuntu در Scratch)
|
||
├── LinuxRedhatOS/Auditing/FAVA/
|
||
│ └── CIS_Rocky9.x_Audit_v14.1.1.sh ← canonical Rocky 9
|
||
├── LinuxService/Auditing/FAVA/
|
||
│ ├── manifest.yaml
|
||
│ ├── lib/benchmark_guard.sh
|
||
│ ├── Apache/CIS-v2.1.0/CIS_Linux_Apache_Audit_v3.0.0.sh
|
||
│ ├── NGINX/CIS-v2.0.1/CIS_Linux_NGINX_Audit_v3.0.0.sh
|
||
│ ├── Docker/CIS-v1.8.0/CIS_Linux_Docker_Audit_v3.0.0.sh
|
||
│ ├── PostgreSQL/18/CIS_Linux_PostgreSQL_Audit_v3.0.0.sh
|
||
│ └── PostgreSQL/17/CIS_Linux_PostgreSQL17_Audit_v1.0.0.sh
|
||
├── WindowsOS/Auditing/FAVA/
|
||
│ ├── CIS_Audit_Windows_10-v1.0.0.ps1
|
||
│ ├── CIS_Audit_Windows_11-v1.0.0.ps1
|
||
│ └── CIS_Audit_Windows_Server_2022-v15.1.1.ps1
|
||
├── WindowsService/ ← root دامنه (بدون زیرپوشه FAVA)
|
||
│ ├── CIS_IIS_10_Benchmark_Audit_V5.3.1.ps1
|
||
│ └── CIS_SQL_Server_2022_Audit-v5.0.1.ps1
|
||
└── Infrastructure/Auditing/ ← بدون پیادهسازی
|
||
```
|
||
|
||
| دامنه | فایل canonical | Benchmark CIS | Schema JSON | خطوط تقریبی |
|
||
|-------|----------------|---------------|-------------|-------------|
|
||
| HyperVisor | `VMware_ESXi_vCenter_Audit-V2.2.1.ps1` | ESXi 8 v1.1.0 (133) | 1.0.0 | ~۶۳۵۰ |
|
||
| WindowsOS Win10 | `CIS_Audit_Windows_10-v1.0.0.ps1` | Win10 Enterprise v4.0.0 | 1.0.0 unified | ~۱۶۸۰۰ |
|
||
| WindowsOS Win11 | `CIS_Audit_Windows_11-v1.0.0.ps1` | Win11 Enterprise v5.0.1 | 1.0.0 unified | ~۱۵۸۰۰ |
|
||
| WindowsOS Server | `CIS_Audit_Windows_Server_2022-v15.1.1.ps1` | Server 2022 v5.0.0 (482) | 1.0.0 unified | ~۱۱۰۰۰ |
|
||
| WindowsService IIS | `CIS_IIS_10_Benchmark_Audit_V5.3.1.ps1` | IIS 10 v1.2.1 (55) | 2.1.0 | ~۳۱۰۰ |
|
||
| WindowsService SQL | `CIS_SQL_Server_2022_Audit-v5.0.1.ps1` | SQL 2022 v1.2.0 | additive | ~۵k+ |
|
||
| LinuxRedhatOS | `CIS_Rocky9.x_Audit_v14.1.1.sh` | Rocky 9 v2.0.0 | 1.0.0 | ~۱۳۳۰۰ |
|
||
| LinuxService Apache | `CIS_Linux_Apache_Audit_v3.0.0.sh` | Apache 2.4 v2.1.0 | **3.0.0** | ~۴۳۰۰ |
|
||
| LinuxService NGINX | `CIS_Linux_NGINX_Audit_v3.0.0.sh` | NGINX v2.0.1 | **3.0.0** | ~۳۰۰۰ |
|
||
| LinuxService Docker | `CIS_Linux_Docker_Audit_v3.0.0.sh` | Docker v1.8.0 (118) | **3.0.0** | ~۵۵۰۰ |
|
||
| LinuxService PG18 | `CIS_Linux_PostgreSQL_Audit_v3.0.0.sh` | PostgreSQL 18 | **3.0.0** | ~۳۱۰۰ |
|
||
| LinuxService PG17 | `CIS_Linux_PostgreSQL17_Audit_v1.0.0.sh` | PostgreSQL 17 | 3.0.0 | fork PG18 |
|
||
|
||
---
|
||
|
||
## ۳. ساختار پوشهای و نامگذاری فایل
|
||
|
||
### ۳.۱ قرارداد نام فایل
|
||
|
||
```
|
||
CIS_{Platform}_{Component}_Audit_v{ScriptVersion}.{ps1|sh}
|
||
```
|
||
|
||
| بخش | قانون | مثال |
|
||
|-----|-------|------|
|
||
| `Platform` | OS یا hypervisor | `Windows_10`, `Rocky9.x`, `Linux_Apache` |
|
||
| `Component` | اختیاری برای سرویس | `PostgreSQL`, `Docker` |
|
||
| `ScriptVersion` | **نسخهٔ داخلی اسکریپت** (semver) | `v14.1.1`, `v3.0.0` |
|
||
| پسوند | `.ps1` (Windows/ESXi) یا `.sh` (Linux) | |
|
||
|
||
**استثناها:**
|
||
- ESXi: `VMware_ESXi_vCenter_Audit-V2.2.1.ps1` (سنت قدیمی — نسخهٔ فایل = نسخهٔ داخلی)
|
||
- IIS/SQL: `CIS_IIS_10_Benchmark_Audit_V5.3.1.ps1`
|
||
|
||
### ۳.۲ Linux Service — محور benchmark
|
||
|
||
در `LinuxService/Auditing/FAVA/` محور اصلی **نسخهٔ CIS benchmark** است:
|
||
|
||
```
|
||
FAVA/
|
||
├── manifest.yaml ← رجیستری canonical
|
||
├── lib/
|
||
│ └── benchmark_guard.sh ← --strict preflight
|
||
├── Apache/
|
||
│ └── CIS-v2.1.0/ ← محور = CIS v2.1.0
|
||
│ ├── CIS_Linux_Apache_Audit_v3.0.0.sh
|
||
│ └── _archive/ ← semver قدیمی اسکریپت
|
||
└── PostgreSQL/
|
||
└── 18/ ← محور = major PostgreSQL
|
||
└── CIS_Linux_PostgreSQL_Audit_v3.0.0.sh
|
||
```
|
||
|
||
### ۳.۳ تفکیک نسخهٔ اسکریپت از نسخهٔ benchmark
|
||
|
||
| مفهوم | محل | مثال |
|
||
|-------|-----|------|
|
||
| `script_version` | header + JSON `script_version` | `14.1.1` |
|
||
| `benchmark_version` | header + JSON `benchmark_version` | `CIS Rocky Linux 9 v2.0.0` |
|
||
| نام فایل | `v{ScriptVersion}` | `CIS_Rocky9.x_Audit_v14.1.1.sh` |
|
||
|
||
**هرگز** نسخهٔ benchmark را بهجای نسخهٔ اسکریپت در نام فایل نگذارید (مگر سنت ثابتشدهٔ دامنه مثل ESXi).
|
||
|
||
---
|
||
|
||
## ۴. الزامات هدر و metadata
|
||
|
||
هر اسکریپت FAVA **باید** با بلوک هدر سازمانی شروع شود.
|
||
|
||
### ۴.۱ فیلدهای اجباری هدر
|
||
|
||
```
|
||
- نام اسکریپت و مسیر فایل
|
||
- سازمان: ICT Security Department of Isfahan Municipality
|
||
- تیم: Network Security Team / Hardening & Resilience Unit
|
||
- نویسنده: M.A.Fardani - Cybersecurity Specialist
|
||
- benchmark_version (نسخهٔ CIS)
|
||
- script_version (نسخهٔ داخلی)
|
||
- last_updated (تاریخ ISO)
|
||
- توضیح یکخطی: standalone / non-interactive / privilege requirement
|
||
```
|
||
|
||
### ۴.۲ بلوکهای اجباری پس از هدر
|
||
|
||
| بلوک | محتوا |
|
||
|------|-------|
|
||
| `USAGE` | دستورات نمونه اجرا |
|
||
| `OPTIONS` / `PARAMETERS` | تمام پارامترهای CLI |
|
||
| `ENVIRONMENT VARIABLES` | متغیرهای محیطی |
|
||
| `VERSION HISTORY` / `CHANGELOG` | تاریخچهٔ تغییرات خطبهخط |
|
||
| `SCRIPT_EXECUTION_GUIDE` | (PowerShell بزرگ) prerequisites، quick start |
|
||
|
||
### ۴.۳ قالب changelog
|
||
|
||
هر ورژن جدید **حداقل** شامل:
|
||
- تاریخ (ISO)
|
||
- دستهبندی تغییر: `fix` | `feat` | `docs` | `refactor`
|
||
- تأثیر روی کنترلها (اگر ID مشخص است ذکر شود)
|
||
- تغییر schema (اگر breaking)
|
||
|
||
### ۴.۴ کامنت روی دستورات audit
|
||
|
||
از نسخههای اخیر (مثلاً ESXi V2.2.1، Rocky v14.1.1، Win10 v1.0.0):
|
||
- کامنتهای **لاتین (انگلیسی)** روی بلوکهای `cis_check_*` / `Check-*` / `LogResult`
|
||
- هدف: خوانایی برای automation review و تیم بینالمللی
|
||
|
||
---
|
||
|
||
## ۵. معماری داخلی اسکریپت
|
||
|
||
### ۵.۱ الگوی کلی (همهٔ دامنهها)
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 01 — Header, param(), readonly constants │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 02 — CLI parse, output path init, colors │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 03 — Helper functions (timeout, json_escape, logging) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 04 — Preflight (root/admin, deps, OS version, service) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 05 — Enterprise modules (inventory, CVE, AV, …) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 06 — Control catalog (embedded یا associative array) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 07 — Check implementations (per chapter / per control) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 08 — Main orchestration (profile filter, chapter loop) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 09 — Report generation (JSON → TXT/CSV/HTML/Splunk) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 10 — Archive, hash manifest, optional GPG/CMS signing │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 11 — Hardent markers (در صورت پشتیبانی) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 12 — Exit code + optional self-destruct │
|
||
└─────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### ۵.۲ PowerShell — `#region` (Windows OS / ESXi)
|
||
|
||
```
|
||
#region Configuration_and_Globals
|
||
#region Helper_Functions
|
||
#region Enterprise_Modules
|
||
#region Audit_Check_Functions
|
||
#region Embedded_Catalogs ← Windows 10/11
|
||
#region Chapter_01 .. Chapter_N
|
||
#region Main_Execution
|
||
#region Reporting_and_Export
|
||
```
|
||
|
||
**Windows 10/11 FAVA:** کاتالوگ embedded در `#region Embedded_Catalogs` — **بدون JSON خارجی در runtime**.
|
||
|
||
### ۵.۳ Bash — `#region` (Linux Service v3)
|
||
|
||
الگوی مرجع: `_shared/bash/cis-audit-framework.sh` (کپی regionها در اسکریپت — **source نکنید در production**)
|
||
|
||
```
|
||
#region 01_HEADER_METADATA
|
||
#region 02_CLI_AND_PARAMETERS
|
||
#region 04_GLOBAL_STATE
|
||
#region 05_FRAMEWORK_FUNCTIONS ← register_finding, build_audit_json
|
||
#region 06_CONTROL_CATALOG ← declare -A CIS_CONTROLS
|
||
#region 07_SERVICE_CONTEXT ← detection Apache/NGINX/Docker/PG
|
||
#region 08_CHECK_IMPLEMENTATIONS
|
||
#region 09_ENTERPRISE_MODULES
|
||
#region 10_MAIN_EXECUTION
|
||
#region 11_REPORT_GENERATION
|
||
#region 12_FOOTER_DOCUMENTATION
|
||
```
|
||
|
||
### ۵.۴ Bash — Rocky FAVA (monolithic OS)
|
||
|
||
```
|
||
SECTION 0 — Shebang + shellcheck + header
|
||
SECTION 1 — Global constants (readonly)
|
||
SECTION 2 — Directory structure + colors
|
||
SECTION 3 — Core utilities (json_escape, output_result, timeout)
|
||
SECTION 4 — Enterprise modules
|
||
SECTION 5 — CIS chapter checks
|
||
SECTION 6 — Report generation (JSON-first HTML viewer)
|
||
SECTION 7 — Main execution + self-destruct
|
||
```
|
||
|
||
مرجع: `LinuxRedhatOS/Auditing/FAVA/RockyARCHITECTURE.md`
|
||
|
||
---
|
||
|
||
## ۶. پارامترهای CLI و متغیرهای محیطی
|
||
|
||
### ۶.۱ PowerShell — پارامترهای مشترک (الزام برای اسکریپتهای جدید)
|
||
|
||
| پارامتر | نوع | پیشفرض | توضیح |
|
||
|---------|-----|---------|-------|
|
||
| `OutputPath` / `BasePath` | string | OS-specific | مسیر پایهٔ گزارش |
|
||
| `CISProfile` | enum | `L1` یا `All` | L1/L2/BL/NG/All |
|
||
| `NonInteractive` | switch | implicit | بدون prompt |
|
||
| `EmitHardentMarkers` | switch | `$true` | مارکرهای orchestration |
|
||
| `StrictExit` | switch | `$false` | exit غیرصفر در FAIL |
|
||
| `NoColor` | switch | `$false` | خروجی بدون رنگ |
|
||
| `NoAutoRun` | switch | `$false` | فقط تعریف توابع (CI) |
|
||
| `RetentionDays` | int | `90` | پاکسازی آرشیو |
|
||
|
||
**Windows 10/11 اضافی:**
|
||
- `MinPasswordLength`, `MaxDaysWithoutBackup`, `MaxInactivityDays`, `MaxScreenLockTimeout` — آستانههای CAM
|
||
|
||
**ESXi V2.2.1 اضافی:**
|
||
- `CISProfile` L1/L2/All
|
||
- `TreatWarningAsFail`, `NoAutoRun`
|
||
- اتصال اجباری vCenter/ESXi
|
||
|
||
**IIS V5.3.1:**
|
||
- `BasePath`, `Service`, `SplunkUser`
|
||
- `SelfDestruct` (پیشفرض ON), `KeepScript`
|
||
- `NonInteractive`, `Force`
|
||
|
||
**SQL v5.0.1:**
|
||
- `ConfigFile`, `IncludeRemediation`
|
||
- `SelfDestruct` پیشفرض **OFF** (حفظ شواهد forensic)
|
||
|
||
### ۶.۲ Bash — پارامترهای مشترک
|
||
|
||
| پارامتر / ENV | معادل PowerShell |
|
||
|---------------|------------------|
|
||
| `-o, --output DIR` | `OutputPath` |
|
||
| `--profile L1\|L2\|ALL` / `CIS_PROFILE` | `CISProfile` |
|
||
| `--no-color` / `NO_COLOR=1` | `NoColor` |
|
||
| `--verbose` / `VERBOSE=1` | verbose |
|
||
| `--strict` | `benchmark_guard` فعال |
|
||
| `--diff FILE` | مقایسه با baseline JSON |
|
||
| `--no-html` | بدون HTML |
|
||
| `SELF_DESTRUCT=0` | نگهداشتن اسکریپت |
|
||
| `DEBUG_MODE=1` | لاگ debug |
|
||
| `CREATE_ZIP=0` | بدون آرشیو |
|
||
| `SIGN_REPORTS=1` | امضای GPG |
|
||
| `COMMAND_TIMEOUT=N` | timeout دستورات (Rocky) |
|
||
|
||
**Rocky FAVA اضافی:**
|
||
- `--fast` — فقط CIS، بدون inventory گسترده
|
||
- `--parallel` — collectors موازی
|
||
- `--remediation` — تولید اسکریپت remediation (opt-in)
|
||
|
||
### ۶.۳ متغیرهای مسیر خروجی
|
||
|
||
| لایه | پیشفرض |
|
||
|------|---------|
|
||
| Windows / ESXi | `C:\Windows\Logs\CIS-Audit` |
|
||
| Linux OS (Rocky) | `/var/log/cis-audit` |
|
||
| Linux Service | `/var/log/cis-audit/{apache\|nginx\|docker\|postgresql}` |
|
||
|
||
زیرساخت استاندارد:
|
||
```
|
||
{base}/
|
||
├── reports/{hostname}_{ip}_{service}_{timestamp}/
|
||
│ ├── *.json
|
||
│ ├── *.txt
|
||
│ ├── *.csv
|
||
│ └── *.html
|
||
├── archives/
|
||
├── splunk/
|
||
└── metadata/
|
||
```
|
||
|
||
---
|
||
|
||
## ۷. پیادهسازی کنترلهای CIS
|
||
|
||
### ۷.۱ استخراج از benchmark
|
||
|
||
برای هر کنترل ثبت کنید:
|
||
|
||
| فیلد | منبع |
|
||
|------|------|
|
||
| `id` | شمارهٔ CIS (مثلاً `1.1.2`) |
|
||
| `title` | عنوان recommendation |
|
||
| `level` | L1 / L2 |
|
||
| `chapter` | شماره و نام فصل |
|
||
| `assessment_type` | Automated / Manual (طبق تعریف CIS) |
|
||
| `expected` | مقدار مورد انتظار |
|
||
| `remediation` | دستور یا مرجع remediation |
|
||
| `severity` | Critical / High / Medium / Low |
|
||
| `mitre` | تکنیک ATT&CK (در صورت نگاشت) |
|
||
| `cis_v8` | CIS Controls v8 mapping |
|
||
|
||
### ۷.۲ کاتالوگ کنترل — Linux Service v3
|
||
|
||
```bash
|
||
declare -A CIS_CONTROLS
|
||
# فرمت: title|level|chapter_num|severity|mitre|cisv8|description
|
||
CIS_CONTROLS["1.2"]="Ensure the server is not a multi-use system|L1|1|Medium|T1190|4.1|Verify ..."
|
||
```
|
||
|
||
### ۷.۳ کاتالوگ embedded — Windows
|
||
|
||
کاتالوگ JSON در `#region Embedded_Catalogs`:
|
||
- Registry checks از OVAL/XCCDF
|
||
- Service checks از XCCDF Chapter 5
|
||
- ساخت در build-time از `Domains/_tools/` (نه runtime)
|
||
|
||
### ۷.۴ Multi-Source Verification (MSV)
|
||
|
||
برای کنترلهای حساس، **حداقل دو منبع** تأیید کنید:
|
||
|
||
| لایه | منابع |
|
||
|------|-------|
|
||
| Windows | Registry `\Policies\` → SecEdit → non-Policies registry |
|
||
| Linux sysctl | runtime (`sysctl -n`) + فایلهای `/etc/sysctl.d/` |
|
||
| SSH | `sshd -T` effective + فایل config |
|
||
| Rocky | Runtime + config + CIS cross-check + confidence score |
|
||
|
||
**Windows Policy Authority (Win10 v4):**
|
||
|
||
| اولویت | منبع | کاربرد |
|
||
|--------|------|--------|
|
||
| 1 | Registry `\Policies\` | GPO admin templates |
|
||
| 2 | SecEdit export | Account policies, user rights |
|
||
| 3 | Machine registry | خارج از GPO hive |
|
||
|
||
GPResult/RSoP فقط `SecondaryCheck` — **هرگز** PASS/FAIL را override نمیکند.
|
||
|
||
### ۷.۵ Profile filter
|
||
|
||
قبل از ثبت نتیجه، کنترل را با profile فیلتر کنید:
|
||
|
||
**PowerShell:** `Test-ProfileIncludesControl -ControlId $id`
|
||
|
||
**Bash (framework v3):**
|
||
```bash
|
||
case "${CIS_PROFILE:-ALL}" in
|
||
L1) [[ "$level" == "L2" ]] && return 0 ;;
|
||
L2) [[ "$level" == "L1" ]] && return 0 ;;
|
||
esac
|
||
```
|
||
|
||
### ۷.۶ وضعیتهای مجاز (Status enum)
|
||
|
||
| Status | معنی | شمارش compliance |
|
||
|--------|------|------------------|
|
||
| `PASS` | مطابق انتظار | passed |
|
||
| `FAIL` | ناقض | failed |
|
||
| `WARN` | انحراف جزئی | warn (v3) |
|
||
| `SKIP` / `N/A` | غیرقابل اجرا | skip — **خارج از compliance** |
|
||
| `MANUAL` | نیاز به بررسی انسانی | manual — **خارج از compliance** |
|
||
|
||
### ۷.۷ SKIP شرطی — قوانین
|
||
|
||
SKIP فقط وقتی:
|
||
- سرویس/پکیج نصب نیست (و کنترل به آن وابسته است)
|
||
- نقش سیستم متفاوت است (DC vs workstation — `role_filter`)
|
||
- محیط container/WSL و کنترل نامربوط است
|
||
- profile mismatch (بدون ثبت در آمار)
|
||
|
||
**همیشه** دلیل SKIP را در `actual` یا `skip_reason` بنویسید.
|
||
|
||
### ۷.۸ جلوگیری از duplicate control ID
|
||
|
||
**Windows:** `$script:ExecutedCisIds` — inline checks بر embedded catalog اولویت دارند.
|
||
|
||
**Bash v3:** `register_finding` یکبار per ID در loop اصلی.
|
||
|
||
---
|
||
|
||
## ۸. ثبت نتیجه — نقطهٔ واحد
|
||
|
||
**هرگز** مستقیماً به فایل گزارش ننویسید. همیشه از تابع مرکزی استفاده کنید.
|
||
|
||
### ۸.۱ PowerShell — `LogResult`
|
||
|
||
```powershell
|
||
function LogResult {
|
||
param (
|
||
[string]$check_id,
|
||
[string]$status, # PASS | FAIL | N/A | MANUAL
|
||
[string]$description,
|
||
[string]$expected,
|
||
[string]$actual,
|
||
[string]$location
|
||
)
|
||
# 1. Profile filter
|
||
# 2. Update counters + chapter stats
|
||
# 3. Get severity + impact
|
||
# 4. Append TXT, CSV, JSON buffer, Splunk
|
||
}
|
||
```
|
||
|
||
مسیر: `WindowsOS/Auditing/FAVA/CIS_Audit_Windows_10-v1.0.0.ps1` (~خط 10869)
|
||
|
||
### ۸.۲ Bash Rocky — `output_result`
|
||
|
||
```bash
|
||
output_result() {
|
||
# id, status, expected, actual, remediation
|
||
# → JSON finding object + TXT row + Splunk NDJSON
|
||
}
|
||
```
|
||
|
||
همراه با `json_escape()` برای تمام interpolationهای JSON.
|
||
|
||
### ۸.۳ Bash Linux Service v3 — `register_finding`
|
||
|
||
```bash
|
||
register_finding() {
|
||
local id="$1" status="$2" actual="${3:-}" expected="${4:-}" remediation="${5:-}"
|
||
local evidence_json="${6:-[]}"
|
||
# normalize_status → update AUDIT_STATS → append to AUDIT_FINDINGS[]
|
||
}
|
||
```
|
||
|
||
مرجع: `_shared/bash/cis-audit-framework.sh`
|
||
|
||
### ۸.۴ فیلد evidence
|
||
|
||
در v3، آرایهٔ JSON شواهد:
|
||
```json
|
||
["sshd -T output: permitrootlogin no", "/etc/ssh/sshd_config: PermitRootLogin no"]
|
||
```
|
||
|
||
---
|
||
|
||
## ۹. گزارشدهی و Schema JSON
|
||
|
||
### ۹.۱ اصل JSON-First
|
||
|
||
```
|
||
اجرای چکها → ساخت JSON کامل → derive TXT/CSV/HTML/Splunk
|
||
```
|
||
|
||
HTML **viewer خالص** — بدون منطق audit:
|
||
```html
|
||
<script id="audit-data" type="application/json">{...}</script>
|
||
```
|
||
|
||
### ۹.۲ نسخههای Schema موجود
|
||
|
||
| schema_version | دامنهها |
|
||
|----------------|----------|
|
||
| `1.0.0` | Windows OS unified, Rocky FAVA, ESXi |
|
||
| `2.0.0` | Apache legacy (v2.0.x) |
|
||
| `2.1.0` | IIS V5.3 |
|
||
| `3.0.0` | Linux Service v3 — **هدف یکسانسازی** |
|
||
|
||
مرجع رسمی v3: `_shared/schemas/cis-audit-report-3.0.0.json`
|
||
|
||
### ۹.۳ ساختار JSON v3.0.0 (الزام Linux Service)
|
||
|
||
```json
|
||
{
|
||
"schema_version": "3.0.0",
|
||
"script_version": "3.0.0",
|
||
"benchmark_version": "CIS Apache HTTP Server 2.4 v2.1.0",
|
||
"benchmark_name": "CIS Apache HTTP Server 2.4 Benchmark",
|
||
"layer": "SERVICE",
|
||
"execution": {
|
||
"started_at": "2026-06-27T10:00:00Z",
|
||
"finished_at": "2026-06-27T10:05:00Z",
|
||
"hostname": "web01",
|
||
"ip_address": "10.0.0.5",
|
||
"duration_seconds": 300,
|
||
"auditor": "...",
|
||
"user": "root"
|
||
},
|
||
"environment": {
|
||
"os_family": "rhel",
|
||
"os_name": "Rocky Linux",
|
||
"service_version": "2.4.62"
|
||
},
|
||
"summary": {
|
||
"total": 100,
|
||
"passed": 85,
|
||
"failed": 10,
|
||
"warn": 0,
|
||
"skip": 3,
|
||
"manual": 2,
|
||
"compliance_percent": 89,
|
||
"weighted_compliance_percent": 82,
|
||
"by_chapter": {},
|
||
"by_severity": {}
|
||
},
|
||
"controls": [
|
||
{
|
||
"id": "1.2",
|
||
"title": "...",
|
||
"chapter": "Planning and Installation",
|
||
"chapter_num": 1,
|
||
"level": "L1",
|
||
"status": "PASS",
|
||
"severity": "Medium",
|
||
"assessment_type": "Automated",
|
||
"expected": "...",
|
||
"actual": "...",
|
||
"remediation": "...",
|
||
"evidence": [],
|
||
"mitre": "T1190",
|
||
"cis_v8_control": "4.1"
|
||
}
|
||
],
|
||
"diff": null,
|
||
"artifacts": {
|
||
"txt": "/var/log/cis-audit/apache/reports/.../....txt",
|
||
"json": "...",
|
||
"html": "..."
|
||
}
|
||
}
|
||
```
|
||
|
||
### ۹.۴ فرمتهای خروجی اجباری
|
||
|
||
| فرمت | الزام | توضیح |
|
||
|------|-------|-------|
|
||
| JSON | **بله** | منبع حقیقت |
|
||
| TXT | **بله** | گزارش انسانی + executive summary |
|
||
| CSV | توصیهشده | import به Excel/SIEM |
|
||
| HTML | **بله** | viewer از embedded JSON |
|
||
| Splunk/NDJSON | توصیهشده | یک خط per control/event |
|
||
| ZIP/tar.gz archive | توصیهشده | تمام artifacts + hash manifest |
|
||
|
||
### ۹.۵ نامگذاری فایل گزارش
|
||
|
||
```
|
||
{hostname}_{ip}_{service_slug}_{YYYYMMDD_HHMMSS}.{ext}
|
||
```
|
||
|
||
مثال:
|
||
```
|
||
web01_10.0.0.5_cis_apache_20260627_143022.json
|
||
```
|
||
|
||
### ۹.۶ امتیازدهی (Scoring)
|
||
|
||
| متریک | فرمول |
|
||
|-------|-------|
|
||
| `compliance_percent` | `passed / (total - skip - manual) * 100` |
|
||
| `weighted_compliance_percent` | وزن: Critical=4, High=3, Medium=2, Low=1 |
|
||
| Executive risk score | `100 - weighted_compliance` با سقف per-category (ESXi/Ubuntu) |
|
||
|
||
### ۹.۷ یکپارچگی گزارش (Windows)
|
||
|
||
پس از نوشتن TXT، hash append کنید:
|
||
```
|
||
Report-SHA256: <sha256-hex>
|
||
```
|
||
|
||
HTML: checksum چندفایلی via `Calculate-AllReportHashes`.
|
||
|
||
### ۹.۸ لاگینگ ساختاریافته
|
||
|
||
```text
|
||
[{ISO8601}] [{LEVEL}] [{ScriptVersion}] [{ControlId}] {Message}
|
||
```
|
||
|
||
سطوح: `INFO`, `PASS`, `FAIL`, `WARN`, `MANUAL`, `ERROR`
|
||
|
||
**Splunk — فیلدهای اجباری:**
|
||
`control_id`, `status`, `benchmark_version`, `schema_version`, `host`, `layer`
|
||
|
||
---
|
||
|
||
## ۱۰. ماژولهای Enterprise
|
||
|
||
فراتر از checklist CIS — **الزام در اسکریپتهای OS و hypervisor**، **توصیهشده در Service**.
|
||
|
||
### ۱۰.۱ ماژولهای استاندارد
|
||
|
||
| ماژول | تابع نمونه | خروجی JSON |
|
||
|-------|------------|------------|
|
||
| Antivirus detection | `audit_antivirus_comprehensive` | per-vendor cards |
|
||
| Patch/CVE management | `audit_security_patches_cve` | RHSA/CVE list |
|
||
| Network exposure | `audit_network_exposure` | open ports + risk |
|
||
| Persistence mechanisms | `audit_persistence_mechanisms` | cron/timers/services |
|
||
| Repository security | `audit_repository_security` | HTTPS/GPG status |
|
||
| Defensive tools | `Get-DefensiveToolsStatus` | Fail2Ban, AIDE, CrowdSec |
|
||
| User/session inventory | `Get-DetailedUserAudit` | last login, sessions |
|
||
| Resource monitoring | `Get-ResourceSnapshot` | CPU/RAM before/after |
|
||
| Virtualization detection | `Get-VirtualizationPlatform` | VM/hypervisor type |
|
||
| SELinux/AppArmor deep | `audit_selinux_deep` | MAC posture |
|
||
|
||
### ۱۰.۲ محل در JSON
|
||
|
||
Windows unified schema:
|
||
```json
|
||
"system_inventory": {
|
||
"os": {},
|
||
"firewall": {},
|
||
"security_agents": {},
|
||
"patch_management": {},
|
||
"persistence": {}
|
||
}
|
||
```
|
||
|
||
Linux Service v3: بلوک `enterprise_modules` (در صورت پیادهسازی) یا enrichment در `environment`.
|
||
|
||
### ۱۰.۳ Disaster Recovery (ESXi)
|
||
|
||
هر کنترل automated: capture **مقدار فعلی** برای بازگردانی پس از hardening:
|
||
```json
|
||
"disaster_recovery": {
|
||
"control_id": "3.1.1",
|
||
"current_value": "...",
|
||
"setting_path": "..."
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## ۱۱. Hardent Orchestration
|
||
|
||
### ۱۱.۱ مارکر استاندارد (الزام برای اسکریپتهای جدید Windows/ESXi)
|
||
|
||
```
|
||
###HARDENT_TASK_OUTPUT_BEGIN###
|
||
[Task Name: CIS Audit Summary]
|
||
[CIS Control: ALL]
|
||
... structured output ...
|
||
{Result:True|False}
|
||
###HARDENT_TASK_OUTPUT_END###
|
||
```
|
||
|
||
**PowerShell:**
|
||
```powershell
|
||
function Emit-HardentTaskOutput { ... }
|
||
# فعال با -EmitHardentMarkers (پیشفرض $true)
|
||
```
|
||
|
||
**پشتیبانی فعلی:**
|
||
- Windows 10/11 FAVA ✓
|
||
- ESXi V2.2.1 ✓
|
||
- Windows Server 2022 — **در انتظار** ✗
|
||
- IIS/SQL — **در انتظار** ✗
|
||
- Linux Service v3 — **در انتظار** ✗
|
||
|
||
### ۱۱.۲ پارامتر
|
||
|
||
```powershell
|
||
[switch]$EmitHardentMarkers = $true
|
||
```
|
||
|
||
برای CI خاموش کنید: `-EmitHardentMarkers:$false`
|
||
|
||
---
|
||
|
||
## ۱۲. کدهای خروج (Exit Codes)
|
||
|
||
### ۱۲.۱ Linux Service v3 (استاندارد `_shared`)
|
||
|
||
| کد | ثابت | معنی |
|
||
|----|------|------|
|
||
| 0 | `EXIT_SUCCESS` | همهٔ automatedها PASS |
|
||
| 1 | `EXIT_ERROR_GENERAL` | خطای عمومی |
|
||
| 2 | `EXIT_ERROR_SERVICE_NOT_FOUND` | سرویس نصب نیست |
|
||
| 3 | `EXIT_ERROR_PRIVILEGE` | نیاز به root |
|
||
| 4 | `EXIT_ERROR_CONFIG_NOT_FOUND` | فایل config یافت نشد |
|
||
| 5 | `EXIT_ERROR_DEPENDENCY` | وابستگی گمشده |
|
||
| 10 | `EXIT_COMPLIANCE_FAIL` | یک یا چند FAIL |
|
||
| 11 | `EXIT_COMPLIANCE_PARTIAL` | WARN/MANUAL باقی مانده |
|
||
|
||
```bash
|
||
framework_exit_code() {
|
||
[[ ${AUDIT_STATS[failed]} -gt 0 ]] && echo 10
|
||
[[ ${AUDIT_STATS[warn]} -gt 0 || ${AUDIT_STATS[manual]} -gt 0 ]] && echo 11
|
||
echo 0
|
||
}
|
||
```
|
||
|
||
### ۱۲.۲ IIS V5.3.1
|
||
|
||
| کد | معنی |
|
||
|----|------|
|
||
| 0 | All controls passed |
|
||
| 1 | Controls failed |
|
||
| 2 | Runtime error |
|
||
| 3 | IIS not installed |
|
||
| 4 | Invalid configuration |
|
||
| 5 | Permission denied |
|
||
| 6 | Unsupported platform |
|
||
| 7 | User aborted |
|
||
|
||
### ۱۲.۳ Windows — StrictExit
|
||
|
||
```powershell
|
||
if ($StrictExit -and $script:FAILED_COUNT -gt 0) { exit 1 }
|
||
```
|
||
|
||
### ۱۲.۴ Rocky / Ubuntu
|
||
|
||
| کد | معنی |
|
||
|----|------|
|
||
| 0 | Success |
|
||
| 1 | Critical failure |
|
||
| 2 | Partial / error |
|
||
| 3 | Not root |
|
||
|
||
---
|
||
|
||
## ۱۳. مسیرهای خروجی و آرشیو
|
||
|
||
### ۱۳.۱ ساختار دایرکتوری گزارش
|
||
|
||
```
|
||
{BASE_PATH}/
|
||
└── {service_slug}/
|
||
├── reports/
|
||
│ └── {hostname}_{ip}_{slug}_{timestamp}/
|
||
│ ├── {basename}.json
|
||
│ ├── {basename}.txt
|
||
│ ├── {basename}.csv
|
||
│ ├── {basename}.html
|
||
│ └── {basename}.splunk.log
|
||
├── archives/
|
||
│ └── {basename}.tar.gz (یا .zip در Windows)
|
||
├── splunk/
|
||
└── metadata/
|
||
└── hashes.json
|
||
```
|
||
|
||
### ۱۳.۲ Hash manifest
|
||
|
||
```json
|
||
{
|
||
"algorithm": "SHA256",
|
||
"files": {
|
||
"report.json": "abc123...",
|
||
"report.html": "def456..."
|
||
},
|
||
"generated_at": "2026-06-27T10:05:00Z"
|
||
}
|
||
```
|
||
|
||
SHA256 **اجباری** — MD5 فقط legacy (deprecated).
|
||
|
||
### ۱۳.۳ Retention
|
||
|
||
پارامتر `RetentionDays` (پیشفرض 90): پاکسازی archives قدیمیتر در پایان اجرا.
|
||
|
||
---
|
||
|
||
## ۱۴. امنیت اجرا و رفتار پیشفرض
|
||
|
||
### ۱۴.۱ سطح دسترسی
|
||
|
||
| پلتفرم | الزام |
|
||
|--------|-------|
|
||
| Windows | `#Requires -RunAsAdministrator` + runtime assert |
|
||
| Linux OS/Service | `EUID=0` — exit `EXIT_ERROR_PRIVILEGE` |
|
||
| ESXi | PowerCLI + credentials vCenter/ESXi |
|
||
|
||
### ۴.۲ Non-Interactive
|
||
|
||
- بدون `Read-Host`
|
||
- `-NonInteractive` در PowerShell
|
||
- `DEBIAN_FRONTEND=noninteractive` در bash (در صورت apt)
|
||
|
||
### ۱۴.۳ Timeout Protection
|
||
|
||
```bash
|
||
run_with_timeout() { ... } # Rocky
|
||
```
|
||
```powershell
|
||
Invoke-WithTimeout { ... } # Windows
|
||
```
|
||
|
||
پیشفرض Rocky: `COMMAND_TIMEOUT=60`
|
||
|
||
### ۴.۴ Self-Destruct
|
||
|
||
| اسکریپت | پیشفرض | override |
|
||
|---------|---------|----------|
|
||
| Windows 10/11 | ON | `$env:SELF_DESTRUCT = "0"` |
|
||
| IIS V5.3.1 | ON | `-SelfDestruct:$false` / `-KeepScript` |
|
||
| SQL v5.0.1 | **OFF** | — |
|
||
| Rocky FAVA | env-controlled | `SELF_DESTRUCT=0` |
|
||
| Linux Service v3 | OFF | — |
|
||
|
||
### ۴.۵ Redaction
|
||
|
||
- License key ESXi: redact در گزارش
|
||
- رمزعبور: هرگز در `actual`/`evidence`
|
||
- PII: محدود به نیاز audit
|
||
|
||
### ۱۴.۶ `benchmark_guard` (Linux Service)
|
||
|
||
```bash
|
||
# lib/benchmark_guard.sh
|
||
cis_benchmark_guard # با --strict → exit در mismatch نسخه
|
||
```
|
||
|
||
مثال: PostgreSQL major 17 روی host ولی benchmark 18 → WARN یا FAIL در strict mode.
|
||
|
||
---
|
||
|
||
## ۱۵. الگو به تفکیک دامنه
|
||
|
||
### ۱۵.۱ HyperVisor — ESXi V2.2.1
|
||
|
||
- PowerCLI اجباری؛ اتصال vCenter/ESXi در preflight
|
||
- کاتالوگ مرکزی ۱۳۳ کنترل CIS ESXi 8 v1.1.0
|
||
- `CISProfile` L1/L2/All
|
||
- `AssessmentStatus` per CIS Automated/Manual
|
||
- Executive Risk Engine (۸ دسته)
|
||
- Disaster Recovery capture
|
||
- خروجی: TXT/CSV/JSON/HTML/Splunk + CIS control matrix CSV
|
||
|
||
### ۱۵.۲ WindowsOS
|
||
|
||
**Win10/11 FAVA (monolith v1.0.0):**
|
||
- Embedded OVAL registry + service catalogs
|
||
- `Get-EffectivePolicyValue` authority model
|
||
- CAM IG1 — ۱۴ کنترل supplemental (Chapter 0)
|
||
- Chapters 1–19 inline + supplemental OVAL catalog
|
||
- `Emit-HardentTaskOutput`
|
||
|
||
**Server 2022 v15.1.1:**
|
||
- ۴۸۲ کنترل CIS v5.0.0
|
||
- Multi-source Registry+GPO+WMI
|
||
- **فاقد** Hardent markers (بدهی فنی)
|
||
|
||
### ۱۵.۳ WindowsService
|
||
|
||
**IIS:** مرجع schema 2.1.0 — `Test-AuditJsonSchema`, OWASP 2025, attack-chain risk
|
||
|
||
**SQL:** data-driven dispatch engine, STIG enrichment, `-IncludeRemediation` opt-in
|
||
|
||
### ۱۵.۴ LinuxRedhatOS — Rocky v14.1.1
|
||
|
||
- `output_result()` + `json_escape()` JSON-first
|
||
- `--fast` / `--parallel` performance modes
|
||
- HTML viewer از embedded JSON
|
||
- DNF/CVE، SELinux deep، auditd dashboard
|
||
- Splunk + remediation generator (`--remediation`)
|
||
|
||
### ۱۵.۵ LinuxService v3
|
||
|
||
- `register_finding()` از framework v3
|
||
- `manifest.yaml` رجیستری canonical
|
||
- `--help` → `show_controls_help()` لیست کاتالوگ
|
||
- `--diff` → regression detection vs baseline JSON
|
||
- `audit_qa.sh` برای QA قبل از تحویل
|
||
|
||
---
|
||
|
||
## ۱۶. نسخهگذاری، آرشیو و deprecate
|
||
|
||
### ۱۶.۱ bump نسخه
|
||
|
||
| نوع تغییر | bump |
|
||
|-----------|------|
|
||
| fix کنترل (بدون schema break) | PATCH: `14.1.1` → `14.1.2` |
|
||
| کنترل جدید / enterprise module | MINOR: `14.1.x` → `14.2.0` |
|
||
| schema breaking / معماری جدید | MAJOR: `14.x` → `15.0.0` |
|
||
|
||
### ۱۶.۲ آرشیو نسخهٔ قبلی
|
||
|
||
```
|
||
FAVA/{Service}/CIS-v{X}/_archive/CIS_Linux_{Service}_Audit_v{old}.sh
|
||
```
|
||
|
||
همراه با `README.md`:
|
||
```markdown
|
||
# DEPRECATED
|
||
Superseded by: ../CIS_Linux_Apache_Audit_v3.0.0.sh
|
||
Archived: 2026-06-07
|
||
Reason: schema 3.0.0 migration
|
||
```
|
||
|
||
### ۱۶.۳ promote از Scratch
|
||
|
||
فقط پس از تکمیل [چکلیست Scratch → FAVA](./AUDIT_GUIDELINE_SCRATCH.md#۹-چکلیست-promote-scratch--fava).
|
||
|
||
---
|
||
|
||
## ۱۷. چکلیست تحویل FAVA
|
||
|
||
### ۱۷.۱ ساختار و metadata
|
||
|
||
- [ ] نام فایل مطابق قرارداد `CIS_{Platform}_Audit_v{X}.{ext}`
|
||
- [ ] `script_version` در هدر = نسخهٔ فایل
|
||
- [ ] `benchmark_version` صحیح و مطابق PDF/XCCDF
|
||
- [ ] CHANGELOG ورژن جدید کامل
|
||
- [ ] USAGE + OPTIONS + ENV documented
|
||
- [ ] کامنت لاتین روی بلوکهای audit
|
||
|
||
### ۱۷.۲ اجرا
|
||
|
||
- [ ] Non-interactive — بدون prompt
|
||
- [ ] Privilege check (root/admin) با exit code صحیح
|
||
- [ ] Preflight: OS version, service presence, dependencies
|
||
- [ ] Timeout روی دستورات کند
|
||
- [ ] `-NoAutoRun` / `--help` کار میکند
|
||
|
||
### ۱۷.۳ کنترلها
|
||
|
||
- [ ] تمام control IDهای benchmark پوشش داده شده
|
||
- [ ] Profile filter (L1/L2) صحیح
|
||
- [ ] Automated/Manual مطابق CIS
|
||
- [ ] MSV برای کنترلهای حساس
|
||
- [ ] SKIP با دلیل معتبر
|
||
- [ ] بدون duplicate ID در گزارش نهایی
|
||
|
||
### ۱۷.۴ گزارش
|
||
|
||
- [ ] JSON معتبر و کامل
|
||
- [ ] `schema_version` صحیح
|
||
- [ ] `compliance_percent` + `weighted_compliance_percent`
|
||
- [ ] HTML viewer از embedded JSON (بدون logic audit)
|
||
- [ ] TXT + CSV تولید میشود
|
||
- [ ] Splunk log با فیلدهای استاندارد
|
||
- [ ] نام فایل: hostname_ip_service_timestamp
|
||
- [ ] Archive + SHA256 manifest
|
||
|
||
### ۱۷.۵ Enterprise (در صورت applicable)
|
||
|
||
- [ ] Inventory modules اجرا و در JSON
|
||
- [ ] MITRE mapping روی کنترلهای کلیدی
|
||
- [ ] Executive risk score (OS/hypervisor)
|
||
|
||
### ۱۷.۶ Automation
|
||
|
||
- [ ] Exit codes documented و تستشده
|
||
- [ ] `EmitHardentMarkers` (Windows/ESXi)
|
||
- [ ] `StrictExit` کار میکند
|
||
- [ ] `manifest.yaml` بهروز (Linux Service)
|
||
|
||
### ۱۷.۷ امنیت
|
||
|
||
- [ ] بدون secret در گزارش
|
||
- [ ] Self-destruct behavior documented
|
||
- [ ] `benchmark_guard --strict` (Linux Service)
|
||
|
||
---
|
||
|
||
## ۱۸. منابع و مراجع داخلی
|
||
|
||
| سند / فایل | مسیر |
|
||
|------------|------|
|
||
| نقشه راه یکسانسازی | `Domains/AUDIT_UNIFICATION_ROADMAP.md` |
|
||
| Framework bash v3 | `Domains/_shared/bash/cis-audit-framework.sh` |
|
||
| Schema JSON v3 | `Domains/_shared/schemas/cis-audit-report-3.0.0.json` |
|
||
| manifest Linux Service | `LinuxService/Auditing/FAVA/manifest.yaml` |
|
||
| benchmark guard | `LinuxService/Auditing/FAVA/lib/benchmark_guard.sh` |
|
||
| Win10 architecture | `WindowsOS/Documents/Win10_AUDIT_ARCHITECTURE.md` |
|
||
| Win11 architecture | `WindowsOS/Documents/Win11_AUDIT_ARCHITECTURE.md` |
|
||
| Rocky architecture | `LinuxRedhatOS/Auditing/FAVA/RockyARCHITECTURE.md` |
|
||
| PostgreSQL guide | `LinuxService/Documents/PostgreSQL-Security-Audit-Guide.md` |
|
||
| راهنمای Scratch | `Documents/AUDIT_GUIDELINE_SCRATCH.md` |
|
||
|
||
---
|
||
|
||
*این سند مرجع ساختاری برای **تمام** نگارشهای آینده در مسیر FAVA است. تغییرات معماری عمومی ابتدا در Scratch آزمایش و سپس به این سند و FAVA منعکس میشوند.*
|