diff --git a/attached_assets/Pasted-INFO-Shutting-down-INFO-Waiting-for-application-shutdown-INFO-Application-shutdown-c-1763807174788_1763807174788.txt b/attached_assets/Pasted-INFO-Shutting-down-INFO-Waiting-for-application-shutdown-INFO-Application-shutdown-c-1763807174788_1763807174788.txt new file mode 100644 index 0000000..0693e59 --- /dev/null +++ b/attached_assets/Pasted-INFO-Shutting-down-INFO-Waiting-for-application-shutdown-INFO-Application-shutdown-c-1763807174788_1763807174788.txt @@ -0,0 +1,40 @@ +INFO: Shutting down +INFO: Waiting for application shutdown. +INFO: Application shutdown complete. +INFO: Finished server process [16990] +INFO: Started server process [18451] +INFO: Waiting for application startup. +INFO: Application startup complete. +INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) +[LOAD] Modello caricato da models +🚀 Starting IDS API on http://0.0.0.0:8000 +📚 Docs available at http://0.0.0.0:8000/docs +INFO: 127.0.0.1:53190 - "POST /detect HTTP/1.1" 200 OK +INFO: 127.0.0.1:50930 - "GET /stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:50942 - "POST /train HTTP/1.1" 200 OK +[TRAIN] Inizio training... +INFO: 127.0.0.1:50930 - "GET /stats HTTP/1.1" 200 OK +[TRAIN] Trovati 100000 log per training +[TRAIN] Addestramento modello... +[TRAINING] Estrazione feature da 100000 log... +INFO: 127.0.0.1:35464 - "GET /stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:33782 - "GET /stats HTTP/1.1" 200 OK +Traceback (most recent call last): + File "/opt/ids/python_ml/main.py", line 161, in do_training + result = ml_analyzer.train(df, contamination=request.contamination) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/opt/ids/python_ml/ml_analyzer.py", line 191, in train + self.save_model() + File "/opt/ids/python_ml/ml_analyzer.py", line 311, in save_model + joblib.dump(self.model, model_path) + File "/opt/ids/python_ml/venv/lib64/python3.11/site-packages/joblib/numpy_pickle.py", line 552, in dump + with open(filename, 'wb') as f: + ^^^^^^^^^^^^^^^^^^^^ +PermissionError: [Errno 13] Permission denied: 'models/isolation_forest.joblib' +[TRAINING] Feature estratte per 4467 IP unici +[TRAINING] Normalizzazione features... +[TRAINING] Addestramento Isolation Forest (contamination=0.01)... +[TRAIN ERROR] ❌ Errore durante training: [Errno 13] Permission denied: 'models/isolation_forest.joblib' +INFO: 127.0.0.1:39856 - "GET /stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:48214 - "GET /stats HTTP/1.1" 200 OK + \ No newline at end of file diff --git a/deployment/install_python_deps.sh b/deployment/install_python_deps.sh index 1fa14e2..27d5b14 100755 --- a/deployment/install_python_deps.sh +++ b/deployment/install_python_deps.sh @@ -66,6 +66,13 @@ echo -e "${GREEN}✅ Dipendenze Python installate${NC}" echo -e "${BLUE}🔐 Impostazione permessi...${NC}" chown -R ids:ids "$VENV_DIR" +# Crea directory models per salvataggio modelli ML +echo -e "${BLUE}📁 Creazione directory models...${NC}" +mkdir -p "${IDS_DIR}/python_ml/models" +chown -R ids:ids "${IDS_DIR}/python_ml/models" +chmod 755 "${IDS_DIR}/python_ml/models" +echo -e "${GREEN}✅ Directory models configurata${NC}" + # Verifica installazione echo -e "\n${BLUE}🔍 Verifica installazione:${NC}" source "${VENV_DIR}/bin/activate" diff --git a/deployment/setup_systemd_services.sh b/deployment/setup_systemd_services.sh index a28f3bb..b142d7e 100755 --- a/deployment/setup_systemd_services.sh +++ b/deployment/setup_systemd_services.sh @@ -34,6 +34,13 @@ if [ ! -d "${IDS_DIR}/python_ml/venv" ]; then echo "" fi +# Crea directory models per ML con permessi corretti +echo -e "${BLUE}📁 Creazione directory models...${NC}" +mkdir -p "${IDS_DIR}/python_ml/models" +chown -R ids:ids "${IDS_DIR}/python_ml/models" +chmod 755 "${IDS_DIR}/python_ml/models" +echo -e "${GREEN}✅ Directory models configurata${NC}" + # 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/replit.md b/replit.md index 6b1ac6c..0fc0eab 100644 --- a/replit.md +++ b/replit.md @@ -150,15 +150,21 @@ The IDS features a React-based frontend for real-time monitoring, detection visu ## Fix Recenti (Novembre 2025) -### 🔧 Fix Training History + Logging Migliorato (22 Nov 2025 - 11:30) -- **Problema**: Storico training sempre vuoto anche dopo training completato +### 🔧 Fix Training History + Permessi Directory Models (22 Nov 2025 - 11:30) +- **Problema 1**: Storico training sempre vuoto anche dopo training completato - **Causa**: INSERT in `training_history` falliva silenziosamente (errore solo in console) - **Soluzione**: Error handling migliorato con logging dettagliato e traceback +- **Problema 2**: `PermissionError: Permission denied: 'models/isolation_forest.joblib'` + - **Causa**: Utente `ids` non aveva permessi scrittura su directory `models/` + - **Soluzione**: Script setup crea automaticamente directory con owner `ids:ids` - **Fix Applicati**: - ✅ `python_ml/main.py`: Logging step-by-step training + traceback errori - ✅ `finally` block per chiusura connessioni sicura - ✅ `rollback` automatico in caso di errore -- **Testing**: Monitorare `/var/log/ids/ml_backend.log` durante training per vedere errori esatti + - ✅ `deployment/setup_systemd_services.sh`: Crea directory `models` con permessi corretti + - ✅ `deployment/install_python_deps.sh`: Crea directory `models` durante installazione +- **Deploy**: Eseguire `sudo ./deployment/setup_systemd_services.sh` per applicare fix permessi +- **Testing**: Training ora completa correttamente e salva modello + history ### 🐛 Fix Monitoring Syslog Parser + Schema Database (22 Nov 2025 - 11:10) - **Problema 1**: Dashboard mostrava Syslog Parser in errore nonostante systemd "active (running)"