Protezione in tempo reale
La protezione in tempo reale controlla i file dei siti nel momento in cui vengono scritti: un plugin vulnerabile che fa caricare una web shell, un file modificato via SFTP, un .htaccess alterato. Non serve aspettare la scansione notturna: il file viene esaminato pochi secondi dopo, e se è malware certo finisce subito in quarantena.
Lo stato si vede in cima alla pagina Antimalware («Protezione in tempo reale: attiva») e nella pagina antimalware di ogni sito.
Cosa viene controllato
Ogni file PHP, JavaScript, HTML, SVG, .htaccess e .user.ini scritto dentro la cartella di un sito, e anche le immagini (per il codice PHP nascosto). Il controllo parte appena il file è stato chiuso dopo la scrittura, oppure spostato al suo posto (come fa PHP con i file caricati), dopo una breve attesa perché le scritture si assestino.
Il file passa dagli stessi motori delle scansioni:
- le regole euristiche dello scanner integrato;
- ClamAV, se è attivo come servizio (modalità «demone», sui server con almeno 4 GB di RAM): il contenuto gli viene passato attraverso il suo socket locale. Sui server più piccoli restano le regole euristiche; ClamAV lavora nelle scansioni programmate.
Non vengono controllati la quarantena, la cartella logs, le cache di WordPress e i file di sessione.
Durante una migrazione il controllo in tempo reale si mette in pausa per i siti che il pannello sta scrivendo: altrimenti migliaia di file copiati produrrebbero migliaia di controlli e di avvisi su quello che c'era già sul vecchio server. Alla fine dell'importazione, e di ogni sincronizzazione finale, il pannello avvia una scansione di quei siti. Le cartelle di lavoro della migrazione, fuori dai siti, non vengono mai controllate in tempo reale.
Cosa succede quando trova qualcosa
Gli amministratori scelgono il criterio:
- Quarantena automatica dei rilevamenti certi, avviso per gli altri (predefinito). Sono «certi» una firma di ClamAV, il file di prova EICAR, oppure più tratti di web shell insieme nello stesso file (per esempio
eval(base64_decode($_POST[...]))). Il file viene spostato nella quarantena del sito, dove puoi ripristinarlo o eliminarlo come sempre. Le altre segnalazioni restano aperte da valutare. - Solo avviso: nessun file viene spostato.
In entrambi i casi il proprietario del sito e gli amministratori ricevono un'email per le minacce critiche e alte (se gli avvisi sono attivi nelle Impostazioni dell'antimalware), e la segnalazione compare nella lista del sito con l'etichetta «tempo reale».
Un file ripristinato dalla quarantena o segnato come falso positivo non viene più rimesso in quarantena finché non cambia.
Dalla 0.85.0 gli amministratori possono attivare anche Blocca subito i file PHP nei caricamenti: un file PHP scritto in wp-content/uploads va subito in quarantena, anche con il criterio «solo avviso». WordPress non mette mai file PHP lì, mentre è il posto preferito di chi sfrutta un plugin vulnerabile. I file di dati e le pagine di protezione dei plugin (come quelle di WPForms o di Sucuri) vengono riconosciuti e lasciati stare. L'opzione è spenta finché non la attivi.
Quando un aggiornamento di WordPress o di un plugin scrive i file ufficiali, le regole euristiche non li segnalano: il pannello li confronta con gli originali di wordpress.org, come nelle scansioni.
Eventi recenti
Sotto lo stato c'è l'elenco degli ultimi rilevamenti: quando, quale sito, quale file, cosa è stato trovato e cosa è stato fatto. Ogni utente vede solo i propri siti. Se in un momento arrivano troppi file insieme (per esempio durante una migrazione), alcuni vengono saltati e lo dice l'elenco: li recupera la scansione notturna.
Accendere, spegnere, escludere
- Tutto il server: gli amministratori la attivano o la disattivano dalla pagina Antimalware. È attiva in modo predefinito e riparte da sola quando il pannello si riavvia.
- Un sito: gli amministratori possono disattivarla per un singolo sito dalla sua pagina antimalware.
- Esclusioni: chi gestisce il sito può escludere percorsi, uno per riga, relativi alla cartella del sito. Una cartella esclude tutto ciò che contiene; si possono usare
*e?(public_html/cache,*.min.js). Usale per cartelle di cache o librerie che si rigenerano spesso, non per nascondere segnalazioni: per quelle c'è «Falso positivo».
Risorse
I controlli girano uno alla volta con la priorità più bassa di CPU e disco (come nice 19 e ionice idle), quindi non rallentano i siti. La coda ha un limite: oltre, gli eventi vengono saltati invece di accumularsi.
Per sorvegliare i file il pannello usa fanotify, un meccanismo del kernel Linux che vede tutte le scritture di un file system con un solo segnaposto, chiunque scriva (PHP, SFTP, cron). Se il kernel non lo permette usa inotify, cartella per cartella; in quel caso, su server con moltissimi file, può capitare che il limite di sistema lasci fuori alcune cartelle, e la pagina lo segnala.