Commit e179b3d
Rebrand Dashboard Assistant UI in installer and add GIF demos to README (#85)
* Ansible+Wazuh_AR-Integration
* Gemini-Ai_integration
* Update README.md
Updated the script name from .txt to .py
* gemini_ai
Updated folder name and added Wazuh manager version details.
* Delete integrations/gemini_ai+wazuh directory
* custom-dashboard-pdf-email-report sending integration
* custom-dashboard-pdf-email-report sending integration
* Update README.md
* Update README.md
* Update README.md
Added more screenshots.
* Enrich the alerts with Gemini AI
This guide explains how to integrate Wazuh with Gemini AI to automatically enrich alerts with detailed explanations and suggested remediation steps in same alert.
* Delete integrations/gemini_ai_enrich-2.0/image-1.png
* folder name changed
folder name changed from gemini-ai-2.o to gemini_ai-opensearch
* Wazuh same alerts enrichment
Wazuh same alerts enrichment using MISP IOC data.
* Copilot change request update.
Prevented Timing Attacks (Comment 12): Replaced standard string comparisons with hmac.compare_digest() in the Flask enricher to securely validate the WEBHOOK_SECRET.
Network Attack Surface (Comment 10): Bound the Flask webhook directly to localhost (127.0.0.1) rather than all network interfaces (0.0.0.0), restricting access exclusively to local Wazuh/OpenSearch monitors. However, since your OpenSearch instance is connecting to the Wazuh server via its network IP (x.x.x.x), the Flask app (now only listening strictly on localhost) immediately blocked the incoming connection!
Systemd Service Hardening (Comments 1-7 & 15): Secured both the misp-enricher.service and misp-fetcher.service by moving them off the root user to least-privilege accounts (like wazuh and wazuh-ioc). Added modern systemd protections (NoNewPrivileges, ProtectSystem=strict, PrivateTmp, ProtectHome), while explicitly configuring ReadWritePaths so the scripts can still securely write their local .db files.
Secret Management (Comment 11): Eliminated hardcoded placeholder secrets from the README.md monitor payload and updated .env.example, providing clear instructions on securely syncing a custom WEBHOOK_SECRET between the OpenSearch monitor and the Python environment.
Enrichment Logic & Accuracy
CIDR & IP Range Support (Comments 1-7): Upgraded the SQLite database schemas and querying logic to properly ingest, index, and match IP ranges/CIDR blocks directly from MISP, rather than just exact IP matches.
Domain Normalization Sync (Comment 14): Duplicated the registrable_suffix and norm_domain functions from the fetcher into the enricher (along with the REG_ROOT_ONLY variable). This guarantees that the domains the webhook searches for are formatted exactly the same way they were saved in the database, eliminating missed subdomain hits.
Accurate Attribution (Comment 13): Changed the default fallback source label for matched IOCs in the OpenSearch payload from "OTX" to "MISP".
Deterministic Tagging (Comments 1-7): Forced the Python enricher to chronologically or alphabetically sort MISP tags before appending them to the OpenSearch payload. This prevents Elasticsearch/OpenSearch indexing conflicts caused by arrays changing order randomly.
Code Quality & Reliability
Robust Environment Parsing (Comment 8): Fixed the custom .env file loader in the fetcher script so it properly strips surrounding single/double quotes. This prevents the quotes from literally being injected into URL strings and booleans.
OpenSearch Update Logic (Comments 1-7): Refined how the Python script constructs and pushes document updates to the OpenSearch REST API, improving handling for missing documents or bulk timeouts.
Cleaned up Tech Debt (Comment 9): Removed several imported modules (urlparse) and configuration variables (MAX_PER_SET, SKIP_URL_IP, TYPE_CIDR) that were defined but never actually utilized by the fetcher script.
* Expand AI Assistant capabilities to take actions.
Now the Ai assistant can do actions like, agent management, custom dashboard creation, pdf report generation and send etc.
* Update README.md
* Updated readme.md file
* Updated clone command on readme.md file.
* Delete architecture.png
* Updated the scripts based on Copilot and added alerting option and assisted installation & configuration support
Updated the report generation functionality and README.md files based on Copilot change requests.
Also added OpenSearch alert creation functionality and optimized the dashboard creation process.
Additionally, implemented an assisted installation and configuration script to avoid manual configuration steps and simplify the deployment process.
* Update README.md
* Assistant script updated for distributed deployment also
* Update install_ai_assistant.sh
* Fix auto-mapping compatibility and intent detection
* Add wkhtmltopdf dependency and harden LLM intent JSON parsing
* Fix json parsing for dashboard arrays and add JSON strictness to prompts
* Fix python string syntax for prompt instructions
* Fix dashboard grid layout gaps and stop field hallucinations
* Fix SyntaxError in dashboard_plan.py and update base64 payload
* Update ALERT_PROMPT to make alert query generation broader and more accurate
* Fix WizardState unexpected keyword argument error by adding kind field
* Remove 0 hits confirmation prompt to reduce friction
* Fix disambiguation loop in auto index selection prompt
* Fix date mapping query_string exception with lenient flag
* Fix PDF report date mapping exception by adding lenient flag to fetch_report_data query
* Fix KQL wildcard exception by forbidding field:* queries in report prompt
* Fix too_many_nested_clauses exception by removing data.* from query_string fields
* Changed Wazuh manager username
Updated the Wazuh manager API username to default username.
* Updated the readme.md file.
Public IP to Indexer server IP.
* Updated the git url
* Added auto Wazuh labeling option.
* Delete integrations/AI_assistant/images/image-1.png
* Add files via upload
* Update README.md
* Delete integrations/AI_assistant/images/image-5.png
* Delete integrations/AI_assistant/images/image-4.png
* Delete integrations/AI_assistant/images/image-6.png
* Delete integrations/AI_assistant/images/image-3.png
* Delete integrations/AI_assistant/images/image.png
* Delete integrations/AI_assistant/images/image-10.png
* Add files via upload
* Enhance README with video demonstrations and introduce Wazuh assistant auto-labeling
## Overview
This Pull Request introduces significant improvements to the repository's documentation by replacing static image examples with dynamic video demonstrations. Additionally, it enhances the deployment automation by introducing Wazuh auto-labeling capabilities directly within the installation script.
## Changes Made
### 1. Documentation Enhancements: Video Demonstrations 🎥
To provide users with a clearer, more interactive understanding of the AI Assistant's capabilities, all static screenshot examples in the `README.md` have been replaced with high-quality video demonstrations (`.mp4` format). This makes it much easier to observe the expected workflows and conversational interactions in real-time.
Specific sections updated with video embeds include:
- **Threat Hunting**: Visualizing alert summaries and AI-driven analysis.
- **DQL (Data Query Language)**: Demonstrating natural-language to structured OpenSearch query conversions.
- **Agent Management**: Showcasing administrative tasks like restarting, removing, or assigning agents to groups.
- **Dashboard Creation**: Illustrating the prompt-based generation of custom visual dashboards.
- **IT Hygiene & Vulnerability Checks**: Showing how the assistant retrieves OS details, software inventory, and CVE status.
- **Generate Report**: Demonstrating the automated generation and email delivery of comprehensive PDF reports.
- **Indexer Monitor**: Showing the creation of Wazuh indexer monitors and automated alerts.
### 2. Feature Addition: Wazuh Auto-Labeling via Installation Script 🏷️
The automated setup process has been enhanced to support **Wazuh Auto-Labeling**.
- **What it does:** The `install_ai_assistant.sh` script now automatically configures and applies the necessary categorization labels directly during the installation phase.
* Update README.md
* Updated Video link
* Updated video urls
* Update README.md
The DEPLOYMENT_TYPE description is grammatically unclear and harder to scan than the previous wording. This is an important setup variable, so it should be concise and unambiguous (all-in-one vs distributed indexer/dashboard nodes).
* Replace demo videos with GIFs and harden dashboard assistant patch step
- Replace the eight committed .mp4 demo videos with animated .gif demos
embedded directly in the README (the .mp4 files were unreferenced; the
README previously pointed at external user-attachments URLs)
- Skip the dashboard assistant UI patch with a warning when perl is not
installed, instead of aborting mid-install under set -e
- Verify the rebranding substitutions matched the plugin bundle and warn
when they did not, instead of logging success unconditionally
* Document ai-assistant.env variables in a reference table
Replace the short bullet list of environment variables with a table
describing each variable, what it controls, and an example value,
matching the mcp-llm-gateway.env template and the gateway's accepted
LLM_PROVIDER values.
---------
Co-authored-by: AI Assistant Bot <bot@example.com>1 parent 6769a13 commit e179b3d
23 files changed
Lines changed: 102 additions & 26 deletions
File tree
- integrations/AI_assistant
- images
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
110 | 129 | | |
111 | 130 | | |
112 | 131 | | |
| |||
137 | 156 | | |
138 | 157 | | |
139 | 158 | | |
140 | | - | |
| 159 | + | |
141 | 160 | | |
142 | 161 | | |
143 | 162 | | |
144 | | - | |
| 163 | + | |
145 | 164 | | |
146 | 165 | | |
147 | 166 | | |
148 | 167 | | |
149 | | - | |
| 168 | + | |
150 | 169 | | |
151 | 170 | | |
152 | 171 | | |
| |||
155 | 174 | | |
156 | 175 | | |
157 | 176 | | |
158 | | - | |
| 177 | + | |
159 | 178 | | |
160 | 179 | | |
161 | 180 | | |
162 | 181 | | |
163 | 182 | | |
164 | 183 | | |
165 | | - | |
| 184 | + | |
166 | 185 | | |
167 | 186 | | |
168 | 187 | | |
169 | 188 | | |
170 | 189 | | |
171 | | - | |
| 190 | + | |
172 | 191 | | |
173 | 192 | | |
174 | 193 | | |
| |||
181 | 200 | | |
182 | 201 | | |
183 | 202 | | |
184 | | - | |
| 203 | + | |
185 | 204 | | |
186 | 205 | | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
191 | | - | |
192 | | - | |
193 | | - | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
194 | 209 | | |
195 | 210 | | |
196 | 211 | | |
197 | 212 | | |
198 | | - | |
199 | | - | |
200 | | - | |
201 | | - | |
202 | | - | |
| 213 | + | |
203 | 214 | | |
204 | 215 | | |
205 | 216 | | |
| |||
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Binary file not shown.
Binary file not shown.
0 commit comments