diff --git a/attached_assets/Pasted-tail-50-var-log-ids-ml-backend-log-from-fastapi-import-FastAPI-HTTPException-BackgroundTasks-1763804377883_1763804377883.txt b/attached_assets/Pasted-tail-50-var-log-ids-ml-backend-log-from-fastapi-import-FastAPI-HTTPException-BackgroundTasks-1763804377883_1763804377883.txt new file mode 100644 index 0000000..a8ee28e --- /dev/null +++ b/attached_assets/Pasted-tail-50-var-log-ids-ml-backend-log-from-fastapi-import-FastAPI-HTTPException-BackgroundTasks-1763804377883_1763804377883.txt @@ -0,0 +1,52 @@ +tail -50 /var/log/ids/ml_backend.log + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 6, in + from fastapi import FastAPI, HTTPException, BackgroundTasks, Security, Header +ModuleNotFoundError: No module named 'fastapi' +[root@ids ids]# \ No newline at end of file diff --git a/deployment/install_python_deps.sh b/deployment/install_python_deps.sh new file mode 100755 index 0000000..c03a9b0 --- /dev/null +++ b/deployment/install_python_deps.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# ========================================================= +# INSTALL PYTHON DEPENDENCIES - IDS System +# ========================================================= +# Installa tutte le dipendenze Python necessarie per IDS + +set -e + +# Colors +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +IDS_DIR="/opt/ids" +VENV_DIR="${IDS_DIR}/python_ml/venv" + +echo -e "${BLUE}🐍 Installazione Dipendenze Python per IDS${NC}\n" + +# Check se script Γ¨ eseguito da root +if [ "$EUID" -ne 0 ]; then + echo -e "${RED}❌ Questo script deve essere eseguito come root (usa sudo)${NC}" + exit 1 +fi + +# Installa python3-venv se non presente +echo -e "${BLUE}πŸ“¦ Verifica python3-venv...${NC}" +if ! rpm -q python3.11-pip &>/dev/null; then + echo -e "${YELLOW}βš™οΈ Installazione python3.11-pip...${NC}" + dnf install -y python3.11-pip +fi + +# Crea virtual environment +echo -e "${BLUE}πŸ”§ Creazione virtual environment...${NC}" +if [ -d "$VENV_DIR" ]; then + echo -e "${YELLOW}♻️ Virtual environment giΓ  esistente, rimuovo...${NC}" + rm -rf "$VENV_DIR" +fi + +python3.11 -m venv "$VENV_DIR" +echo -e "${GREEN}βœ… Virtual environment creato in ${VENV_DIR}${NC}" + +# Attiva virtual environment e installa dipendenze +echo -e "${BLUE}πŸ“₯ Installazione dipendenze Python...${NC}" +source "${VENV_DIR}/bin/activate" + +# Upgrade pip +pip install --upgrade pip + +# Installa dipendenze principali +pip install fastapi==0.104.1 +pip install uvicorn[standard]==0.24.0 +pip install pydantic==2.5.0 +pip install python-dotenv==1.0.0 +pip install psycopg2-binary==2.9.9 +pip install pandas==2.1.3 +pip install numpy==1.26.2 +pip install scikit-learn==1.3.2 + +echo -e "${GREEN}βœ… Dipendenze Python installate${NC}" + +# Cambia ownership a utente ids +echo -e "${BLUE}πŸ” Impostazione permessi...${NC}" +chown -R ids:ids "$VENV_DIR" + +# Verifica installazione +echo -e "\n${BLUE}πŸ” Verifica installazione:${NC}" +source "${VENV_DIR}/bin/activate" +python3 -c "import fastapi; print(f'FastAPI: {fastapi.__version__}')" +python3 -c "import uvicorn; print(f'Uvicorn: {uvicorn.__version__}')" +python3 -c "import sklearn; print(f'Scikit-learn: {sklearn.__version__}')" +python3 -c "import pandas; print(f'Pandas: {pandas.__version__}')" + +echo -e "\n${GREEN}╔═══════════════════════════════════════════════╗${NC}" +echo -e "${GREEN}β•‘ βœ… DIPENDENZE PYTHON INSTALLATE β•‘${NC}" +echo -e "${GREEN}β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•${NC}" + +echo -e "\n${BLUE}πŸ“ NOTA:${NC}" +echo -e " Il virtual environment Γ¨ in: ${YELLOW}${VENV_DIR}${NC}" +echo -e " I systemd services useranno automaticamente questo venv" +echo "" diff --git a/deployment/setup_systemd_services.sh b/deployment/setup_systemd_services.sh index 5216d26..d939be8 100755 --- a/deployment/setup_systemd_services.sh +++ b/deployment/setup_systemd_services.sh @@ -26,6 +26,14 @@ if [ "$EUID" -ne 0 ]; then exit 1 fi +# Verifica virtual environment Python +if [ ! -d "${IDS_DIR}/python_ml/venv" ]; then + echo -e "${YELLOW}⚠️ Virtual environment Python non trovato${NC}" + echo -e "${BLUE}πŸ“¦ Eseguo installazione dipendenze...${NC}\n" + "${IDS_DIR}/deployment/install_python_deps.sh" + echo "" +fi + # Verifica esistenza file .env if [ ! -f "${IDS_DIR}/.env" ]; then echo -e "${RED}❌ File .env non trovato in ${IDS_DIR}/.env${NC}" diff --git a/deployment/systemd/ids-ml-backend.service b/deployment/systemd/ids-ml-backend.service index b1bc896..3db4ab7 100644 --- a/deployment/systemd/ids-ml-backend.service +++ b/deployment/systemd/ids-ml-backend.service @@ -10,8 +10,8 @@ Group=ids WorkingDirectory=/opt/ids/python_ml EnvironmentFile=/opt/ids/.env -# Comando esecuzione -ExecStart=/usr/bin/python3 main.py +# Comando esecuzione (usa virtual environment) +ExecStart=/opt/ids/python_ml/venv/bin/python3 main.py # Restart automatico in caso di crash Restart=on-failure diff --git a/deployment/systemd/ids-syslog-parser.service b/deployment/systemd/ids-syslog-parser.service index b7ab220..84810f8 100644 --- a/deployment/systemd/ids-syslog-parser.service +++ b/deployment/systemd/ids-syslog-parser.service @@ -10,8 +10,8 @@ Group=ids WorkingDirectory=/opt/ids/python_ml EnvironmentFile=/opt/ids/.env -# Comando esecuzione -ExecStart=/usr/bin/python3 syslog_parser.py +# Comando esecuzione (usa virtual environment) +ExecStart=/opt/ids/python_ml/venv/bin/python3 syslog_parser.py # Restart automatico in caso di crash Restart=on-failure diff --git a/replit.md b/replit.md index fd59b1a..f16e374 100644 --- a/replit.md +++ b/replit.md @@ -96,9 +96,14 @@ The IDS features a React-based frontend for real-time monitoring, detection visu - Script `setup_systemd_services.sh` per installazione automatica - **Deployment**: 1. Utente esegue: `sudo ./deployment/setup_systemd_services.sh` - 2. Script genera `IDS_API_KEY` se mancante - 3. Installa systemd units e avvia servizi - 4. Frontend usa controlli per gestione remota servizi + 2. Script verifica e installa dipendenze Python (virtual environment) + 3. Script genera `IDS_API_KEY` se mancante + 4. Installa systemd units e avvia servizi + 5. Frontend usa controlli per gestione remota servizi +- **Virtual Environment**: + - Dipendenze Python in `/opt/ids/python_ml/venv` + - Systemd services usano automaticamente il venv + - Script `install_python_deps.sh` per installazione manuale - **Benefici**: - πŸ”’ Autenticazione API end-to-end (zero vulnerabilitΓ ) - 🎯 Controlli UX funzionanti (no comandi manuali)