Files
Mimante/Mimante/SECURITY.md
T
Alby96 ed42a41bcd Autenticazione Identity: login sicuro, lockout, UI aggiornata
- Integra ASP.NET Core Identity: login/password, lockout brute-force, cookie sicuri, password policy forte
- Seed automatico utente admin da variabili ambiente (fallback password temporanea forte)
- Tutte le pagine principali ora protette con [Authorize] e redirect automatico a /login
- Nuovo layout login/logout pulito senza sidebar, spinner durante redirect
- NavMenu mostra utente autenticato e logout
- Rimosse credenziali Bidoo da env/Docker: ora solo cookie sessione da UI
- Aggiornata documentazione: sicurezza, deploy, backup, troubleshooting
- Fix NavigationException, SectionRegistry, errori header read-only
- Versione incrementata a 1.2.0, pronto per deploy production Tailscale/Unraid
2026-01-21 17:00:51 +01:00

8.2 KiB

?? GUIDA SICUREZZA - AutoBidder v1.2.0

?? Sistema di Autenticazione Implementato

AutoBidder v1.2.0 include un sistema di autenticazione completo basato su ASP.NET Core Identity, progettato specificamente per l'esposizione sicura tramite Tailscale.


? Feature di Sicurezza

1. ?? Autenticazione Utente

  • ASP.NET Core Identity integrato
  • Login con username e password
  • Sessioni sicure con cookie HttpOnly
  • Logout sicuro

2. ??? Protezione Brute-Force

// Configurazione automatica:
- Max tentativi falliti: 5
- Timeout lockout: 15 minuti
- Lockout abilitato per tutti gli utenti

3. ?? Password Policy Forte

Requisiti obbligatori:

  • ? Minimo 12 caratteri
  • ? Almeno 1 maiuscola
  • ? Almeno 1 minuscola
  • ? Almeno 1 numero
  • ? Almeno 1 simbolo speciale
  • ? Minimo 4 caratteri unici

Esempi password valide:

? MyS3cur3P@ssw0rd!2024
? Admin@SecurePass123!
? Bidoo#Manager2024$
? password123 (troppo semplice)
? Admin123 (manca simbolo, troppo corta)
Cookie Configuration:
- HttpOnly: true (protezione XSS)
- SameSite: Lax (protezione CSRF)
- SecurePolicy: SameAsRequest (Tailscale HTTP OK)
- Durata: 7 giorni (sliding expiration)

5. ?? Protezione Route

Tutte le pagine protette con [Authorize]:

  • / (Monitor Aste)
  • /freebids (Puntate Gratuite)
  • /statistics (Statistiche)
  • /settings (Impostazioni)
  • /health (Health Check)

Pagine pubbliche:

  • /login ?
  • /logout ?

?? Configurazione

1. File .env (OBBLIGATORIO)

# Copia .env.example in .env
cp .env.example .env

# Modifica password admin:
ADMIN_USERNAME=admin
ADMIN_PASSWORD=TuaPasswordSicura123!

Nota: Le credenziali Bidoo NON servono qui. Il cookie di sessione si configura dall'interfaccia web dopo il login.

2. Docker Compose

services:
  autobidder:
    environment:
      # Autenticazione applicazione
      - ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
      - ADMIN_PASSWORD=${ADMIN_PASSWORD}

Sessione Bidoo: Configurata dall'interfaccia web (Settings).

3. Unraid / Docker Run

docker run -d \
  --name AutoBidder \
  -p 8889:8080 \
  -e ADMIN_USERNAME=admin \
  -e ADMIN_PASSWORD="MyS3cur3P@ss!" \
  -v /data:/app/Data \
  gitea.../autobidder:1.2.0

Dopo il primo login:

  • Settings ? Sessione Bidoo ? Incolla cookie -e ADMIN_PASSWORD="MyS3cur3P@ss!"
    -v /data:/app/Data
    gitea.../autobidder:1.2.0

---

## ?? Primo Avvio

### Step 1: Configura Password

**Opzione A: Password personalizzata (CONSIGLIATO)**

```bash
# .env
ADMIN_USERNAME=admin
ADMIN_PASSWORD=MyS3cur3P@ssw0rd!2024

Opzione B: Password temporanea default

Se ADMIN_PASSWORD non è settata:

  • Username: admin
  • Password: Admin@Password123!
  • ?? CAMBIARE IMMEDIATAMENTE!

Step 2: Avvia Container

docker-compose up -d

Step 3: Verifica Log

docker logs AutoBidder | grep "\[Identity\]"

# Output atteso:
[Identity] Database initialized
[Identity] Admin user created: admin

Step 4: Primo Login

  1. Apri browser: http://192.168.30.23:8889
  2. Verrai reindirizzato a /login
  3. Inserisci credenziali:
    • Username: admin (o valore ADMIN_USERNAME)
    • Password: (valore ADMIN_PASSWORD)
  4. Click "Accedi"

Se password temporanea usata:

  • ?? Cambia password IMMEDIATAMENTE!
  • (Funzione cambio password sarà aggiunta in v1.2.1)

?? Gestione Utenti

Database Identity

Percorso: /app/Data/identity.db
Tipo: SQLite
Tabelle:
  - Users (utenti applicazione)
  - Roles (ruoli - futuro)
  - UserLogins (log accessi - futuro)

Backup Database Utenti

# Backup manuale
docker cp AutoBidder:/app/Data/identity.db ./backup/identity-$(date +%Y%m%d).db

# Verifica backup
sqlite3 ./backup/identity-*.db "SELECT UserName, CreatedAt FROM Users;"

Reset Password Admin

Se hai dimenticato la password:

# 1. Stop container
docker stop AutoBidder

# 2. Elimina database Identity
docker exec AutoBidder rm /app/Data/identity.db

# 3. Riconfigura password in .env
echo "ADMIN_PASSWORD=NuovaPassword123!" >> .env

# 4. Restart container (creerà nuovo database)
docker start AutoBidder

# 5. Verifica log
docker logs AutoBidder | grep "\[Identity\]"

??? Best Practices Sicurezza

1. Password Forte

# Genera password sicura (Linux/Mac):
openssl rand -base64 32

# Oppure usa password manager:
- LastPass
- 1Password
- Bitwarden

2. Rotazione Periodica

# Ogni 90 giorni:
1. Genera nuova password
2. Aggiorna .env
3. Restart container
4. Verifica accesso

3. Monitoraggio Accessi

# Controlla tentativi falliti:
docker logs AutoBidder | grep "password non validi"

# Controlla lockout:
docker logs AutoBidder | grep "temporarily blocked"

# Controlla accessi riusciti:
docker logs AutoBidder | grep "Login successful"

4. Limitazione Accesso Rete

# Solo Tailscale (consigliato):
tailscale serve --bg --https=8443 http://localhost:8080

# Firewall (se non usi Tailscale):
ufw allow from 100.64.0.0/10 to any port 8080  # Solo Tailscale IP
ufw deny 8080  # Blocca tutto il resto

5. HTTPS con Reverse Proxy

# Nginx su Tailscale
server {
    listen 443 ssl http2;
    server_name autobidder.tailnet-XXXX.ts.net;
    
    ssl_certificate /etc/tailscale/cert.pem;
    ssl_certificate_key /etc/tailscale/key.pem;
    
    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

?? Troubleshooting

Problema: "Account temporaneamente bloccato"

Causa: Troppi tentativi falliti (5)

Soluzione:

# Aspetta 15 minuti (lockout automatico)
# Oppure reset database Identity (vedi sopra)

Problema: "Username o password non validi"

Verifica:

  1. Controlla .env per ADMIN_PASSWORD
  2. Verifica maiuscole/minuscole
  3. Controlla log container
docker logs AutoBidder | grep "\[Identity\]"

Problema: Redirect loop /login

Causa: Cookie non accettati dal browser

Soluzione:

  1. Abilita cookie nel browser
  2. Usa browser diverso
  3. Controlla log console browser (F12)

Problema: Password non accettata

Verifica requisiti:

  • ? Min 12 caratteri?
  • ? Maiuscola presente?
  • ? Minuscola presente?
  • ? Numero presente?
  • ? Simbolo presente?

?? Metriche Sicurezza

Audit Log

# Ultimi accessi:
docker logs AutoBidder --since 24h | grep "\[Identity\]"

# Tentativi falliti oggi:
docker logs AutoBidder --since 1d | grep "password non validi"

# Lockout oggi:
docker logs AutoBidder --since 1d | grep "temporarily blocked"

Statistiche Utenti

# Connetti al database:
docker exec -it AutoBidder sqlite3 /app/Data/identity.db

# Query utenti:
SELECT UserName, CreatedAt, LastLoginAt, IsActive 
FROM Users;

# Exit:
.exit

?? Roadmap Sicurezza

v1.2.1 (Prossima)

  • Cambio password utente
  • Gestione multi-utente
  • Ruoli (Admin/User)
  • Log audit accessi

v1.3.0 (Futuro)

  • 2FA (Two-Factor Authentication)
  • OAuth2/OIDC (Tailscale)
  • IP whitelisting
  • Session timeout configurabile

? Checklist Sicurezza

Prima del deploy production:

  • Password forte configurata in .env
  • .env in .gitignore (non committare!)
  • Backup database Identity configurato
  • Monitoraggio log attivo
  • Tailscale ACL configurato (solo utenti autorizzati)
  • Firewall configurato (solo Tailscale)
  • Reverse proxy HTTPS (opzionale)
  • Password rotation calendar (ogni 90 giorni)

?? Supporto

Problemi di sicurezza:

  • Apri issue su Gitea (segnala vulnerabilità in privato)
  • Controlla log: docker logs AutoBidder
  • Verifica configurazione: docker inspect AutoBidder

Documentazione:

  • CHANGELOG.md - Note release
  • README.md - Overview progetto
  • DOCKER_PUBLISH_GUIDE.md - Deployment

?? AutoBidder v1.2.0 - Sicuro per produzione con Tailscale!

Sistema di autenticazione enterprise-grade per proteggere i tuoi dati di asta.