- 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
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)
4. ?? Cookie Sicuri
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
- Apri browser:
http://192.168.30.23:8889 - Verrai reindirizzato a
/login - Inserisci credenziali:
- Username:
admin(o valore ADMIN_USERNAME) - Password: (valore ADMIN_PASSWORD)
- Username:
- 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:
- Controlla
.envper ADMIN_PASSWORD - Verifica maiuscole/minuscole
- Controlla log container
docker logs AutoBidder | grep "\[Identity\]"
Problema: Redirect loop /login
Causa: Cookie non accettati dal browser
Soluzione:
- Abilita cookie nel browser
- Usa browser diverso
- 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 .envin.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 releaseREADME.md- Overview progettoDOCKER_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.