docs: updated readme file
This commit is contained in:
		
							parent
							
								
									ceda8957b7
								
							
						
					
					
						commit
						9d53294127
					
				
					 2 changed files with 129 additions and 1 deletions
				
			
		
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/vcs.xml
									
										
									
										generated
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="VcsDirectoryMappings"> | ||||||
|  |     <mapping directory="$PROJECT_DIR$" vcs="Git" /> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
							
								
								
									
										122
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										122
									
								
								README.md
									
										
									
									
									
								
							|  | @ -12,3 +12,125 @@ | ||||||
|     *   Assigns severity (Critical, High, Medium, Low, Informational) to events based on predefined rules for both SNMP and Syslog messages. |     *   Assigns severity (Critical, High, Medium, Low, Informational) to events based on predefined rules for both SNMP and Syslog messages. | ||||||
| *   **Web-based Dashboard**: A simple Flask web interface to view recent collected events, including their type, source, and assigned severity. | *   **Web-based Dashboard**: A simple Flask web interface to view recent collected events, including their type, source, and assigned severity. | ||||||
| *   **Background Listeners**: SNMP and Syslog listeners run in separate threads, allowing continuous collection while the Flask web server operates. | *   **Background Listeners**: SNMP and Syslog listeners run in separate threads, allowing continuous collection while the Flask web server operates. | ||||||
|  | 
 | ||||||
|  | ## Getting Started | ||||||
|  | 
 | ||||||
|  | Follow these steps to get Sentinel up and running on your system. | ||||||
|  | 
 | ||||||
|  | ### Prerequisites | ||||||
|  | 
 | ||||||
|  | *   Python 3.8+ | ||||||
|  | *   `pip` (Python package installer) | ||||||
|  | 
 | ||||||
|  | ### Installation | ||||||
|  | 
 | ||||||
|  | 1.  **Clone the repository:** | ||||||
|  |     ```bash | ||||||
|  |     git clone https://github.com/yourusername/Sentinel.git # Replace with your actual repo URL | ||||||
|  |     cd Sentinel | ||||||
|  |     ``` | ||||||
|  | 
 | ||||||
|  | 2.  **Create and activate a Python virtual environment:** | ||||||
|  |     ```bash | ||||||
|  |     python3 -m venv .venv | ||||||
|  |     source .venv/bin/activate | ||||||
|  |     ``` | ||||||
|  | 
 | ||||||
|  | 3.  **Install the required Python packages:** | ||||||
|  |     ```bash | ||||||
|  |     pip install -r requirements.txt | ||||||
|  |     ``` | ||||||
|  | 
 | ||||||
|  | 4.  **Install Net-SNMP utilities (for testing `snmptrap`):** | ||||||
|  |     On Debian/Ubuntu: | ||||||
|  |     ```bash | ||||||
|  |     sudo apt update | ||||||
|  |     sudo apt install snmp snmp-mibs-downloader | ||||||
|  |     sudo download-mibs | ||||||
|  |     ``` | ||||||
|  |     On other Linux distributions, use your package manager (e.g., `dnf install net-snmp-utils` on Fedora/RHEL). | ||||||
|  | 
 | ||||||
|  | ### Running the Application | ||||||
|  | 
 | ||||||
|  | 1.  **Ensure virtual environment is active:** | ||||||
|  |     ```bash | ||||||
|  |     source .venv/bin/activate | ||||||
|  |     ``` | ||||||
|  | 
 | ||||||
|  | 2.  **Run the Flask application:** | ||||||
|  |     ```bash | ||||||
|  |     python app.py | ||||||
|  |     ``` | ||||||
|  |     The application will start, and you will see messages indicating that both the SNMP Trap listener and Syslog listener have started. | ||||||
|  | 
 | ||||||
|  | 3.  **Access the Web Dashboard:** | ||||||
|  |     Open your web browser and navigate to: | ||||||
|  |     [http://127.0.0.1:5000/](http://127.0.0.1:5000/) | ||||||
|  | 
 | ||||||
|  | ## Configuration | ||||||
|  | 
 | ||||||
|  | ### Listener Ports | ||||||
|  | 
 | ||||||
|  | *   **SNMP Traps**: Listens on UDP port `1162`. | ||||||
|  | *   **Syslog**: Listens on UDP port `1514`. | ||||||
|  | 
 | ||||||
|  |     **Important:** By default, standard SNMP (162) and Syslog (514) ports are privileged (below 1024) and require root permissions. For development, we use higher ports (`1162` and `1514`). If you wish to use standard ports in a production environment, you will need to configure your system accordingly (e.g., `sudo setcap 'cap_net_bind_service=+ep' /path/to/python_executable` or use a reverse proxy/port forwarding). | ||||||
|  | 
 | ||||||
|  | ### Configuring Devices to Send Logs | ||||||
|  | 
 | ||||||
|  | You need to configure your network devices (FortiGate, pfSense, routers, switches, servers) to send their log data to the IP address of the machine running **Sentinel** on the specified ports. | ||||||
|  | 
 | ||||||
|  | #### FortiGate / pfSense (Syslog) | ||||||
|  | 
 | ||||||
|  | Configure your firewall to send logs to the Sentinel server's IP address on **UDP port 1514**. | ||||||
|  | *   **FortiGate:** System > Log & Report > Log Settings -> Enable "Send Logs to Syslog", configure Server IP and Port. | ||||||
|  | *   **pfSense:** Status > System Logs > Settings -> Enable "Remote Logging", add Server IP and Port. | ||||||
|  | 
 | ||||||
|  | #### Any Device (SNMP Traps) | ||||||
|  | 
 | ||||||
|  | Configure devices to send SNMP traps to the Sentinel server's IP address on **UDP port 1162**. Ensure the SNMP community string is set to `public` (or match whatever is configured in `snmp_listener.py`). | ||||||
|  | 
 | ||||||
|  | ## Testing Log Ingestion | ||||||
|  | 
 | ||||||
|  | ### Test SNMP Trap | ||||||
|  | 
 | ||||||
|  | From your terminal (after installing `snmp` package): | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | snmptrap -v 2c -c public 127.0.0.1:1162 '' .1.3.6.1.6.3.1.1.5.1 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | You should see "SNMP Cold Start" with "High" severity in the web UI. | ||||||
|  | 
 | ||||||
|  | ### Test Syslog Message | ||||||
|  | 
 | ||||||
|  | From your terminal (on Linux): | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | echo "<13>Jul 10 15:30:00 myhost program: This is a test syslog message about a failed login attempt." | nc -u -w0 127.0.0.1 1514 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | You should see a syslog event with "Critical" severity in the web UI due to the "failed login" keyword. | ||||||
|  | 
 | ||||||
|  | ## Future Enhancements (Roadmap) | ||||||
|  | 
 | ||||||
|  | *   **Advanced Syslog Parsing**: Implement robust parsing for various syslog formats (RFC 3164, RFC 5424, FortiGate native logs, pfSense native logs) to extract more structured fields (e.g., username, source/dest IPs, port, action). | ||||||
|  | *   **SNMP Polling**: Add functionality to actively poll devices for specific OIDs (e.g., CPU, memory, interface status) at regular intervals. | ||||||
|  | *   **Alerting Notifications**: Integrate with email, Slack, or other platforms to send notifications when critical events occur. | ||||||
|  | *   **User Interface Improvements**: | ||||||
|  |     *   Filtering and searching of events. | ||||||
|  |     *   Pagination for large datasets. | ||||||
|  |     *   Real-time event updates using WebSockets (Flask-SocketIO). | ||||||
|  |     *   Dashboard analytics (graphs for event trends, top sources/events). | ||||||
|  | *   **Rule Management**: Allow web-based configuration of normalization and alerting rules. | ||||||
|  | *   **Database**: Migrate from SQLite to PostgreSQL for better performance and concurrency in production. | ||||||
|  | *   **Containerization**: Provide Dockerfiles for easy deployment. | ||||||
|  | *   **Authentication & Authorization**: Secure the web dashboard with user logins. | ||||||
|  | 
 | ||||||
|  | ## Contributing | ||||||
|  | 
 | ||||||
|  | Contributions are welcome! Please feel free to open issues or submit pull requests. | ||||||
|  | 
 | ||||||
|  | ## License | ||||||
|  | 
 | ||||||
|  | This project is open-source and available under the [MIT License](LICENSE). | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Blake Ridgway
						Blake Ridgway