From a367bb8f7bb72d72b643dde16f6f602528c0e6f3 Mon Sep 17 00:00:00 2001 From: Marco Lanzara <48531002-marco370@users.noreply.replit.com> Date: Mon, 17 Nov 2025 16:00:18 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Release=20v1.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Tipo: patch - Database backup: database-backups/ids_v1.0.3_20251117_160011.sql.gz - Data: 2025-11-17 16:00:18 --- .replit | 4 - deployment/INSTALLAZIONE_STEP_BY_STEP.md | 19 +++ deployment/RISOLUZIONE_ERRORE_POSTGRESQL.md | 167 ++++++++++++++++++++ deployment/fix_postgresql_auth.sh | 108 +++++++++++++ version.json | 10 +- 5 files changed, 302 insertions(+), 6 deletions(-) create mode 100644 deployment/RISOLUZIONE_ERRORE_POSTGRESQL.md create mode 100755 deployment/fix_postgresql_auth.sh diff --git a/.replit b/.replit index 7f8eba1..af7007c 100644 --- a/.replit +++ b/.replit @@ -14,10 +14,6 @@ run = ["npm", "run", "start"] localPort = 5000 externalPort = 80 -[[ports]] -localPort = 44261 -externalPort = 3000 - [env] PORT = "5000" diff --git a/deployment/INSTALLAZIONE_STEP_BY_STEP.md b/deployment/INSTALLAZIONE_STEP_BY_STEP.md index 0abcb2a..444ab36 100644 --- a/deployment/INSTALLAZIONE_STEP_BY_STEP.md +++ b/deployment/INSTALLAZIONE_STEP_BY_STEP.md @@ -213,6 +213,25 @@ sudo -u ids npm run db:push Questo crea tutte le tabelle nel database PostgreSQL. +### Step 12b: FIX Autenticazione PostgreSQL ⚠️ **IMPORTANTE** + +PostgreSQL di default usa autenticazione "ident" che non funziona con password. Dobbiamo cambiarla: + +```bash +cd /opt/ids/deployment +chmod +x fix_postgresql_auth.sh +./fix_postgresql_auth.sh +``` + +Questo script: +- ✅ Cambia autenticazione da `ident` a `scram-sha-256` (password-based) +- ✅ Fa backup della configurazione originale +- ✅ Ricarica PostgreSQL +- ✅ Testa la connessione + +**Verifica output:** +Dovresti vedere: `✅ Connessione RIUSCITA!` + --- ## 📡 PARTE 4: Configurazione Raccolta Log Router diff --git a/deployment/RISOLUZIONE_ERRORE_POSTGRESQL.md b/deployment/RISOLUZIONE_ERRORE_POSTGRESQL.md new file mode 100644 index 0000000..f5b1375 --- /dev/null +++ b/deployment/RISOLUZIONE_ERRORE_POSTGRESQL.md @@ -0,0 +1,167 @@ +# 🔧 Risoluzione Errore PostgreSQL + +## Errore Riscontrato + +``` +psycopg2.OperationalError: connection to server at "localhost" (::1), port 5432 failed: +FATAL: Ident authentication failed for user "ids_user" +``` + +## Causa + +PostgreSQL su AlmaLinux 9 di default usa autenticazione **"ident"** invece di password. Python (psycopg2) non può connettersi con password. + +## Soluzione (3 minuti) + +### Step 1: Esegui Script di Fix + +```bash +cd /opt/ids/deployment +chmod +x fix_postgresql_auth.sh +./fix_postgresql_auth.sh +``` + +**Output atteso:** +``` +╔═══════════════════════════════════════════════╗ +║ PostgreSQL Authentication Fix ║ +╚═══════════════════════════════════════════════╝ + +📂 File pg_hba.conf: /var/lib/pgsql/data/pg_hba.conf + +💾 Backup configurazione... +✅ Backup salvato: /var/lib/pgsql/data/pg_hba.conf.backup_20250117_123456 + +📋 Configurazione ATTUALE: +local all all ident +host all all 127.0.0.1/32 ident +host all all ::1/128 ident + +🔧 Modifico pg_hba.conf... +✅ Configurazione modificata + +📋 Configurazione NUOVA: +local all all scram-sha-256 +host all all 127.0.0.1/32 scram-sha-256 +host all all ::1/128 scram-sha-256 + +🔄 Ricarico configurazione PostgreSQL... +✅ PostgreSQL ricaricato + +🧪 Test connessione con password... +✅ Connessione RIUSCITA! + PostgreSQL ora accetta autenticazione con password + +╔═══════════════════════════════════════════════╗ +║ ✅ FIX COMPLETATO ║ +╚═══════════════════════════════════════════════╝ +``` + +### Step 2: Riavvia Syslog Parser + +```bash +# Stop processo esistente +pkill -f syslog_parser + +# Avvia nuovamente +cd /opt/ids/python_ml +sudo -u ids nohup python3.11 syslog_parser.py > /var/log/ids/syslog_parser.log 2>&1 & +``` + +### Step 3: Verifica Funzionamento + +```bash +# Verifica processo attivo +ps aux | grep syslog_parser + +# Monitora log (NON dovrebbero esserci più errori) +tail -f /var/log/ids/syslog_parser.log +``` + +**Output atteso:** +``` +2025-01-17 12:34:56 - INFO - Syslog Parser avviato +2025-01-17 12:34:56 - INFO - Connessione database riuscita +2025-01-17 12:34:56 - INFO - In ascolto su /var/log/mikrotik/raw.log +2025-01-17 12:34:57 - INFO - Log processato: 192.168.1.1 → 8.8.8.8:53 +``` + +### Step 4: Verifica Database Si Popola + +```bash +# Conta log nel database +psql -U ids_user -d ids_database -c "SELECT COUNT(*) FROM network_logs;" + +# Mostra ultimi 5 log +psql -U ids_user -d ids_database -c "SELECT * FROM network_logs ORDER BY timestamp DESC LIMIT 5;" +``` + +## Cosa Fa lo Script + +1. **Trova pg_hba.conf** automaticamente +2. **Backup** configurazione originale +3. **Modifica** autenticazione: + - `ident` → `scram-sha-256` (password-based) +4. **Ricarica** PostgreSQL (senza restart) +5. **Testa** connessione con password da `.env` + +## Verifica Manuale (Opzionale) + +Se vuoi verificare manualmente: + +```bash +# Test connessione PostgreSQL con password +psql -h localhost -U ids_user -d ids_database -c "SELECT 1;" + +# Se richiede password, inserisci quella in /opt/ids/.env (PGPASSWORD) +``` + +## Rollback (Se Necessario) + +Se qualcosa va storto, ripristina backup: + +```bash +# Lista backup disponibili +ls -la /var/lib/pgsql/data/pg_hba.conf.backup_* + +# Ripristina ultimo backup +ULTIMO_BACKUP=$(ls -t /var/lib/pgsql/data/pg_hba.conf.backup_* | head -1) +cp "$ULTIMO_BACKUP" /var/lib/pgsql/data/pg_hba.conf + +# Ricarica PostgreSQL +systemctl reload postgresql +``` + +## Note Tecniche + +**File modificato:** +- `/var/lib/pgsql/data/pg_hba.conf` (su AlmaLinux 9) +- `/etc/postgresql/15/main/pg_hba.conf` (su Debian/Ubuntu) + +**Modifiche effettuate:** +```diff +- local all all ident ++ local all all scram-sha-256 + +- host all all 127.0.0.1/32 ident ++ host all all 127.0.0.1/32 scram-sha-256 + +- host all all ::1/128 ident ++ host all all ::1/128 scram-sha-256 +``` + +**Metodi autenticazione PostgreSQL:** +- `ident`: Usa nome utente sistema operativo (non password) +- `md5`: Password MD5 hash (deprecato) +- `scram-sha-256`: Password SHA-256 hash (✅ raccomandato, sicuro) + +## Prevenzione Futura + +Questo fix è **già incluso** nella guida aggiornata: +- `deployment/INSTALLAZIONE_STEP_BY_STEP.md` → Step 12b + +Nuove installazioni non avranno questo problema. + +--- + +**Problema risolto! 🎉** diff --git a/deployment/fix_postgresql_auth.sh b/deployment/fix_postgresql_auth.sh new file mode 100755 index 0000000..dc80b02 --- /dev/null +++ b/deployment/fix_postgresql_auth.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +# ============================================================================= +# IDS - Fix PostgreSQL Authentication +# ============================================================================= +# Risolve errore: "Ident authentication failed for user ids_user" +# Cambia autenticazione da 'ident' a 'scram-sha-256' (password-based) +# ============================================================================= + +set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +echo -e "${BLUE}" +echo "╔═══════════════════════════════════════════════╗" +echo "║ PostgreSQL Authentication Fix ║" +echo "╚═══════════════════════════════════════════════╝" +echo -e "${NC}" + +# Trova pg_hba.conf +PG_HBA_CONF=$(sudo -u postgres psql -t -P format=unaligned -c 'SHOW hba_file;') + +if [ -z "$PG_HBA_CONF" ]; then + echo -e "${RED}❌ Impossibile trovare pg_hba.conf${NC}" + exit 1 +fi + +echo -e "${BLUE}📂 File pg_hba.conf: ${PG_HBA_CONF}${NC}" +echo "" + +# Backup originale +BACKUP_FILE="${PG_HBA_CONF}.backup_$(date +%Y%m%d_%H%M%S)" +echo -e "${YELLOW}💾 Backup configurazione...${NC}" +cp "$PG_HBA_CONF" "$BACKUP_FILE" +echo -e "${GREEN}✅ Backup salvato: ${BACKUP_FILE}${NC}" +echo "" + +# Mostra configurazione attuale +echo -e "${BLUE}📋 Configurazione ATTUALE:${NC}" +grep -v "^#" "$PG_HBA_CONF" | grep -v "^$" | head -10 +echo "" + +# Modifica pg_hba.conf +echo -e "${YELLOW}🔧 Modifico pg_hba.conf...${NC}" + +# Cambia tutte le occorrenze di 'ident' in 'scram-sha-256' per connessioni locali +sed -i.bak \ + -e 's/^\(local\s\+all\s\+all\s\+\)ident$/\1scram-sha-256/' \ + -e 's/^\(host\s\+all\s\+all\s\+127\.0\.0\.1\/32\s\+\)ident$/\1scram-sha-256/' \ + -e 's/^\(host\s\+all\s\+all\s\+::1\/128\s\+\)ident$/\1scram-sha-256/' \ + "$PG_HBA_CONF" + +echo -e "${GREEN}✅ Configurazione modificata${NC}" +echo "" + +# Mostra nuova configurazione +echo -e "${BLUE}📋 Configurazione NUOVA:${NC}" +grep -v "^#" "$PG_HBA_CONF" | grep -v "^$" | head -10 +echo "" + +# Reload PostgreSQL +echo -e "${YELLOW}🔄 Ricarico configurazione PostgreSQL...${NC}" +systemctl reload postgresql + +echo -e "${GREEN}✅ PostgreSQL ricaricato${NC}" +echo "" + +# Test connessione +echo -e "${BLUE}🧪 Test connessione con password...${NC}" + +# Leggi password da .env se esiste +if [ -f "/opt/ids/.env" ]; then + PGPASSWORD=$(grep "^PGPASSWORD=" /opt/ids/.env | cut -d'=' -f2) + export PGPASSWORD + + if psql -h localhost -U ids_user -d ids_database -c "SELECT 1;" > /dev/null 2>&1; then + echo -e "${GREEN}✅ Connessione RIUSCITA!${NC}" + echo -e "${GREEN} PostgreSQL ora accetta autenticazione con password${NC}" + else + echo -e "${RED}❌ Connessione FALLITA${NC}" + echo -e "${YELLOW} Verifica password in /opt/ids/.env${NC}" + exit 1 + fi +else + echo -e "${YELLOW}⚠️ File .env non trovato, salto test connessione${NC}" +fi + +echo "" +echo -e "${GREEN}╔═══════════════════════════════════════════════╗${NC}" +echo -e "${GREEN}║ ✅ FIX COMPLETATO ║${NC}" +echo -e "${GREEN}╚═══════════════════════════════════════════════╝${NC}" +echo "" +echo "Modifiche effettuate:" +echo " • Autenticazione cambiata: ident → scram-sha-256" +echo " • Backup salvato: $BACKUP_FILE" +echo " • PostgreSQL ricaricato" +echo "" +echo "Ora riavvia syslog_parser.py:" +echo " pkill -f syslog_parser" +echo " cd /opt/ids/python_ml" +echo " sudo -u ids nohup python3.11 syslog_parser.py > /var/log/ids/syslog_parser.log 2>&1 &" +echo "" + +exit 0 diff --git a/version.json b/version.json index 0a82ba0..4340a93 100644 --- a/version.json +++ b/version.json @@ -1,7 +1,13 @@ { - "version": "1.0.2", - "lastUpdate": "2025-11-17T08:49:16.297Z", + "version": "1.0.3", + "lastUpdate": "2025-11-17T16:00:18.653Z", "changelog": [ + { + "version": "1.0.3", + "date": "2025-11-17", + "type": "patch", + "description": "Deployment automatico v1.0.3" + }, { "version": "1.0.2", "date": "2025-11-17",