integrity-check.sh: i controlli
Gira da solo ogni notte alle 06:30 (completo) e ogni ora alle :20 (leggero). Esce con codice 2 se ci sono allarmi.
| Comando | Cosa fa |
|---|---|
integrity-check.sh | Tutti i siti più il server. |
integrity-check.sh --site <dominio> | Un sito solo. |
integrity-check.sh --system | Solo il server. |
… --baseline | Accetta lo stato attuale come normale (amministratori, mu-plugin, impronta, riferimento del database e del server), dopo averlo verificato. |
… --json | Risultato in JSON. |
integrity-check.sh --report [--site <dominio>] | L’ultimo esito, senza rifare il controllo. |
integrity-check.sh --light | Il controllo orario: amministratori, mu-plugin, database, file cambiati dall’ultima impronta, verifiche leggere del server. |
site-scan.py: gli esami di un sito
Tutto in sola lettura, come root. Lo usano i controlli e la dashboard.
| Comando | Cosa fa |
|---|---|
site-scan.py code <dominio> | Confronta il codice con l’impronta approvata (sha256 di ogni file). Link e file speciali non si seguono né si aprono. |
site-scan.py db <dominio> | Il database: indirizzo del sito, registrazioni aperte, permessi da amministratore, application password nuove, hook del malware, script nei contenuti (anche nelle pagine di Elementor). |
site-scan.py vuln <dominio> | Vulnerabilità note di core, plugin e temi installati; plugin chiusi o fermi su wordpress.org; plugin disattivati. |
site-scan.py attacchi <dominio> | I tentativi delle ultime 24 ore dal log di nginx. |
site-scan.py wporg-search <dominio> plugin|theme -- <testo> | La ricerca su wordpress.org della dashboard, con le vulnerabilità dell’ultima versione. |
site-scan.py versions <dominio> | Le versioni del codice, dalla più recente: chi, cosa, quanti file e quali plugin o temi sono cambiati, con le versioni. Ogni approvazione dell’impronta ne crea una. |
site-scan.py file-history <dominio> <percorso> | Le versioni in cui un file o una cartella è cambiato. |
site-scan.py show <dominio> [percorso] | Il visore del codice: password e chiavi mascherate prima di uscire dal server. |
server-scan.py: il server
Lo lancia integrity-check.sh. Confronta il server con il riferimento approvato: utenti, gruppi con privilegi, sudo, SSH, PAM, chiavi, porte, servizi, cron, container e, nel controllo completo, file SUID e pacchetti. Vedi I controlli del server.
| Comando | Cosa fa |
|---|---|
server-scan.py check | Il confronto completo, senza report né notifica. Senza riferimento lo crea. |
server-scan.py check --light | Solo le verifiche di ogni ora, senza file SUID, debsums e aggiornamenti. |
server-scan.py check --save | Accetta lo stato attuale come riferimento. Dalla dashboard si fa con Accetta come nuovo riferimento. |
site-metrics.py: lo spazio dei siti
Misura quanto occupa un sito e dove, in sola lettura: una passata sulla cartella del sito senza seguire i collegamenti, spazio su disco come du, più il database. Il controllo della notte salva una misura al giorno per ogni sito.
| Comando | Cosa fa |
|---|---|
site-metrics.py spazio <dominio> | L’ultima misura salvata: totale, upload, plugin, tema attivo, WordPress, log, database. |
site-metrics.py spazio <dominio> --misura | La rifà adesso e la salva come misura del giorno. Dalla dashboard: Misura adesso. |
site-metrics.py raccogli | Misura tutti i siti e conta per giorno tentativi, ban, allarmi e backup: lo fa il controllo delle 06:30. Rifarlo non crea doppioni. |
site-metrics.py risposta | Chiede la pagina iniziale di ogni sito e ne salva il tempo: lo fa il controllo di ogni ora. |
site-metrics.py serie <dominio> / serie-server | Le serie dei grafici, del sito o del server; con --json per intero. |
site-import.py: le importazioni
Apre l’archivio e il dump di un sito di produzione caricati dalla dashboard, senza eseguire nulla: l’archivio lo estrae un utente senza privilegi, il dump va in un database temporaneo. Prepara la relazione e ciò che serve a site.sh import.
| Comando | Cosa fa |
|---|---|
site-import.py elenco | Le importazioni aperte, con la fase (caricamento, analizzata…). |
site-import.py stato <id> --json | Una importazione: byte arrivati e relazione dell’analisi. |
site-import.py analizza <id> | L’analisi, a mano (dalla dashboard parte da sola a caricamento finito). |
site-import.py annulla <id> | Toglie file, cartelle e database temporanei. Quelle ferme da 48 ore le toglie da solo il timer delle scadenze. |
nightly-backup.sh: i backup
Il backup notturno parte alle 03:15: file dei siti e dump dei database, cifrati con restic, sulla Storage Box. La domenica verifica il repository e toglie le copie vecchie.
| Comando | Cosa fa |
|---|---|
nightly-backup.sh --status | Ultimo backup riuscito, numero di copie. |
nightly-backup.sh --list | Tutte le copie. |
nightly-backup.sh --start | Un backup adesso, come quello notturno. |
nightly-backup.sh --site <dominio> | Copia del solo sito. Si tengono le ultime 10 per sito. |
nightly-backup.sh --site-list <dominio> | Le copie da cui il sito si può ripristinare. |
nightly-backup.sh --check | Verifica completa del repository. |
nightly-backup.sh --unlock | Toglie i lock rimasti da un backup interrotto. |
storage-box.py: la Storage Box
| Comando | Cosa fa |
|---|---|
storage-box.py info | Sotto-account usati (migrazione e backup), collegamento, spazio; con il token di Hetzner anche snapshot e impostazioni. |
storage-box.py check | Collegamento più verifica del repository dei backup. |
storage-box.py ls migrazione|backup | Il contenuto di una cartella. |
Nessun comando della Storage Box cancella: snapshot e dati vecchi si tolgono solo dalla console di Hetzner.
site-export.py: l’esportazione per un altro hosting
| Comando | Cosa fa |
|---|---|
site.sh export <sito> <dominio di produzione> | I file del sito in uno zip e il database con il dominio di produzione al posto di quello di sviluppo, per un altro hosting. Il sito di sviluppo non cambia. |
site-export.py elenco <sito> | Le esportazioni ancora disponibili (24 ore, al massimo tre). |
site-export.py elimina <sito> <esportazione> | Cancella un’esportazione prima della scadenza. |
site-vault.py e site-remote.py: la produzione
| Comando | Cosa fa |
|---|---|
site-vault.py init --admin <utente> --chiave age1… --deposito age1… | Crea la cassaforte, una volta sola, con le sole chiavi pubbliche; stampa l’impronta da salvare nel password manager. |
site-vault.py status | Modalità, impronta, amministratori, segreti con i soli metadati. |
site-vault.py salva <nome> --tipo token | Salva un segreto, chiesto senza mostrarlo o letto dallo stdin; anche a cassaforte chiusa. Se c’era già, quello di prima va in revocati/. |
site-vault.py revoca <nome> | Toglie un segreto dall’uso e lo sposta in revocati/. |
site-vault.py rekey | Identità nuova della cassaforte, segreti ricifrati; chiede la chiave personale senza mostrarla. |
site-vault.py amministratore aggiungi <utente> --chiave age1… / togli <utente> | Chi può aprirla; togliere cambia anche l’identità. |
site-vault.py esercizio --conferma | Passaggio all’esercizio: identità nuova, segreti di prova in revocati/, privilegi attesi. |
site-vault.py attesi [--conferma] | Le differenze dai privilegi attesi; con --conferma li riapprova (solo in esercizio). |
site-vault.py deposito <file> | Il deposito da custodire fuori dal server: solo file cifrati. |
site-vault.py controlla | Scadenze, deposito, prova di recupero e interblocco: le righe del controllo notturno. |
site-remote.py list | I server di produzione gestiti da questo server di sviluppo e i siti pubblicati. |
site-remote.py show <server> | Un server: indirizzi, chiave host, strumenti, ultimo controllo. |
site-remote.py controlla <server> | Lo stato del server, letto con l’utente esercizio: senza cassaforte. |
site-remote.py prepara <server> --fornitore … --cliente … --regione … | Le chiavi di un server da aggiungere e la sua configurazione d’avvio, da incollare alla creazione (si vede una volta). |
site-remote.py strumenti stato | La chiave di rilascio e le versioni degli strumenti per i server di produzione, firmate o no. |
site-remote.py strumenti prepara | Una versione nuova degli strumenti, se gli script di questo server sono cambiati. |
site-remote.py strumenti manifesto <versione> | Il manifesto da firmare sul PC con la chiave di rilascio. |
site-remote.py strumenti firma <versione> < manifesto.txt.sig | La firma, verificata con la chiave pubblica di rilascio prima di salvarla. |
site-remote.py indice | L’elenco delle vulnerabilità note ai server messi in sicurezza (ogni notte lo fa il controllo). |
Nessun comando stampa un valore della cassaforte. Si apre solo dalla dashboard: vedi Produzione e cassaforte.
L’agente: la dashboard da shell
Ogni operazione della dashboard passa dall’agente site-agent, che conosce solo un elenco chiuso di operazioni. Si può interrogare anche da shell:
site-agent.py call site.list
Riavviare l’agente interrompe i lavori in corso: systemctl restart site-agent solo quando non ce ne sono.