Skip to content

DB Login Guard

v1.1.0

DB Login Guard

Protezione brute force per WordPress. Registra, blocca, notifica. Niente servizi cloud, niente abbonamenti, niente tracciamento.

Versione: 1.1.0 · Autore: Davide Bertolino · Compatibilità: WordPress 5.8+ · PHP 7.4+ · Licenza: GPL v2

DB Login Guard monitora tutti i tentativi di accesso al tuo sito WordPress. Se qualcuno prova troppe password sbagliate, il suo IP viene bloccato automaticamente. Ogni tentativo viene registrato in un log con IP, username, user-agent e timestamp. Ricevi una notifica via email quando scatta un blocco. Nessun servizio esterno, nessun database cloud, tutto resta sul tuo server.


Caratteristiche

🛡️ Blocco automatico

Dopo un numero configurabile di tentativi falliti dallo stesso IP (default: 5 in 10 minuti), l’IP viene bloccato temporaneamente. La durata del blocco è configurabile (default: 30 minuti). Il blocco interviene prima che WordPress provi le credenziali — nessun carico inutile sul database.

📋 Log completo

Ogni tentativo di login viene registrato con tutti i dettagli:

  • Indirizzo IP (con supporto Cloudflare, proxy, X-Forwarded-For)
  • Username tentato
  • User-Agent del browser
  • Data e ora
  • Stato: fallito, riuscito o bloccato

Log consultabile dall’admin con filtri per stato, IP e username. Paginazione e export CSV inclusi.

📊 Dashboard

Panoramica immediata della situazione: tentativi falliti nelle ultime 24 ore, IP unici attaccanti, numero di IP attualmente bloccati, username più bersagliato. Il tuo IP è mostrato con indicazione se è in whitelist o meno.

🔒 Gestione IP bloccati

Tabella con tutti gli IP bloccati: quando sono stati bloccati, quando scade il blocco, quanti tentativi avevano fatto. Sblocco manuale con un click. Blocco manuale di qualsiasi IP direttamente dalla tabella.

✅ Whitelist IP

Lista di IP che non vengono mai bloccati — per non chiuderti fuori dal tuo stesso sito. Supporta la notazione CIDR (es: 192.168.1.0/24) per coprire intere sottoreti.

📧 Notifiche email

Quando un IP viene bloccato, ricevi un’email con tutti i dettagli: IP, username tentato, numero di tentativi, durata del blocco. Rate limiting integrato: massimo un’email ogni 10 minuti per lo stesso IP, per non intasarti la casella durante un attacco massivo.

🧹 Auto-pulizia

WP Cron elimina automaticamente i record del log più vecchi di N giorni (default: 30). I blocchi scaduti vengono rimossi nella stessa operazione. Il database resta leggero senza intervento manuale.

🆕 🚫 Disabilita XML-RPC

XML-RPC è un protocollo legacy che i bot sfruttano per brute force via system.multicall — consente centinaia di tentativi di login in una singola richiesta HTTP. Con un checkbox lo disabiliti completamente: blocco 403 su xmlrpc.php, rimozione dell’header X-Pingback e dei link RSD/WLW dal codice sorgente. Se non usi l’app WordPress desktop vecchia, disattivalo senza pensarci.

🆕 🔐 Proteggi REST API /users

Per default WordPress espone la lista degli username del sito su /wp-json/wp/v2/users — chiunque può leggerla senza autenticarsi. Questa opzione blocca l’endpoint per i visitatori anonimi con errore 403. Gli utenti loggati e Gutenberg continuano a funzionare normalmente, perché la restrizione si applica solo alle richieste non autenticate.


Quanto costa?

FunzionalitàInclusa
Blocco automatico brute force✅ Sì
Log tentativi di accesso✅ Sì
Dashboard statistiche✅ Sì
Whitelist IP / CIDR✅ Sì
Notifiche email✅ Sì
Export CSV✅ Sì
Auto-pulizia log✅ Sì
Disabilita XML-RPC✅ Sì
Proteggi REST API /users✅ Sì
Versione “Pro”❌ Non esiste

Zero euro. Tutto incluso. Nessuna funzionalità nascosta dietro un paywall.


Installazione

  1. Scarica il file ZIP dalla release GitHub
  2. WordPress Admin → Plugin → Aggiungi nuovo → Carica plugin → scegli il file ZIP
  3. Attiva il plugin
  4. Vai su Strumenti → Login Guard

Primo utilizzo

Il plugin è attivo subito con valori ragionevoli: 5 tentativi in 10 minuti → blocco 30 minuti. L’unica cosa consigliata è aggiungere il tuo IP alla whitelist per non rischiare di bloccarti fuori durante i test.


Pannello admin

Il pannello si trova in Strumenti → Login Guard ed è organizzato in 4 tab:

TabContenuto
DashboardStatistiche 24h, stato protezione, IP attuale, configurazione attiva
Log accessiTabella con filtri (stato, IP, username), paginazione, svuota log, export CSV
IP bloccatiLista IP bloccati con sblocco manuale, blocco manuale per IP
ImpostazioniTentativi max, finestra temporale, durata blocco, whitelist, log, notifiche, hardening

Struttura cartelle

db-login-guard/
├── db-login-guard.php         # File principale + singleton
├── uninstall.php              # Pulizia completa
├── README.md
├── LICENSE
├── assets/
│   ├── css/
│   │   └── admin.css          # Stili pagina admin
│   └── js/
│       └── admin.js           # AJAX clear/export
└── inc/
    ├── class-database.php     # Tabelle, query, CRUD
    ├── class-guard.php        # Logica protezione + hook login
    ├── class-admin.php        # Pagina admin + AJAX
    ├── class-cron.php         # Auto-pulizia giornaliera
    └── class-hardening.php    # XML-RPC disable + REST API restriction

Note tecniche

  • Due tabelle custom: {prefix}dblg_login_log e {prefix}dblg_blocked_ips
  • Il blocco interviene sull’hook authenticate a priorità 1 — prima che WordPress tocchi il database
  • Whitelist supporta notazione CIDR (es: 10.0.0.0/8)
  • Rate limiting notifiche: max 1 email ogni 10 minuti per IP (via transient)
  • L’utente vede nella pagina di login quanti tentativi gli restano prima del blocco
  • L’uninstall rimuove tutto: tabelle, opzioni, transient, cron
  • Nessun script caricato nel frontend del sito
  • XML-RPC: quando disabilitato, blocca a livello di init con 403 e logga il tentativo
  • REST API: blocca solo /wp/v2/users per anonimi — tutti gli altri endpoint restano accessibili

Changelog

1.1.0

  • 🆕 Opzione per disabilitare XML-RPC completamente (blocco 403 + rimozione header/link)
  • 🆕 Opzione per bloccare REST API /users per utenti anonimi
  • 🆕 Sezione Hardening nella dashboard con stato XML-RPC e REST API
  • 🆕 I tentativi su xmlrpc.php e REST /users vengono registrati nel log

1.0.0

  • Release iniziale
  • Blocco automatico IP dopo N tentativi falliti
  • Log accessi con filtri, paginazione, export CSV
  • Dashboard con statistiche 24h
  • Gestione IP bloccati (blocco/sblocco manuale)
  • Whitelist IP con supporto CIDR
  • Notifiche email con rate limiting
  • Auto-pulizia via WP Cron
  • Avviso tentativi rimanenti nella pagina di login

Licenza

GPL v2 or later — sei libero di utilizzare, modificare e distribuire questo plugin.


Autore

Davide Bertolino
🌐 davidebertolino.it
📧 info@davidebertolino.it


🚫 Nessuna registrazione. Nessun reminder. Nessun trucco.

Scarica, installa, usa. Niente account, niente popup, niente “passa a Pro”, niente telemetria. Il codice è tuo, la licenza è GPL v2, le funzionalità sono tutte incluse. Fine.

Hai suggerimenti o hai trovato un bug? Contattami!

Other Plugins

v1.0.0

DB Event Manager

📅 DB Event Manager Gestione eventi con iscrizione, QR code personale, check-in da smartphone e survey post-evento. Niente Eventbrite, niente…