Installazione automatica

Metodo automatico: un unico script dall'area personale prepara l'intero server (stack web Apache + PHP, database, strumenti di sicurezza, cron). Poi non resta che distribuire il pannello, emettere l'SSL e inserire la licenza. Funziona su Ubuntu/Debian: su un VPS nuovo configura tutto da zero, su un server già configurato agisce solo in modo additivo (profilo «Server configurato», passo 01). Tutti i comandi seguenti sono in ordine: basta scorrere dall'alto verso il basso. Su un VPS nuovo ogni passo è applicabile in sequenza; se il server è già configurato oppure vi è installato un pannello di hosting, una parte del lavoro lo script la lascia deliberatamente a Lei — che cosa esattamente, lo indica al termine della propria esecuzione (l'analisi dell'output è nel passo 01).

I valori segnaposto nei comandi vanno sostituiti con i propri: monitor.example.com è il suo dominio; 203.0.113.10 è l'IP reale del server; /var/www/monitor è la radice del pannello (dove si trovano public/, assets/, config.php); scelga una propria password per il database.
Il set completo («Protezione completa») è pensato per un VPS nuovo. Su una Ubuntu/Debian pulita configura il sistema di sicurezza da zero — Fail2ban (jail.local), root-crontab, regole UFW, configurazione di Apache. Se il server è già configurato (pannello funzionante, siti, posta, jail propri) scelga il profilo «Server configurato»: apporta solo modifiche additive e non tocca il suo firewall, Fail2ban, la posta, SSH e sysctl. Se rileva un pannello di hosting, lo script passa da solo a questa modalità. Prima del primo avvio può attivare l'esecuzione a vuoto (casella nell'area personale): mostra cosa verrà fatto senza modificare nulla. Su un server in produzione, per sicurezza, esegua uno snapshot.

01. Comando di configurazione automatica dall'area personale

Il comando si ottiene nella propria area personale my.arciveo.com → sezione «Configurazione del server» (disponibile dopo l'attivazione di Arcivéo Security Monitor). È associato al Suo account e contiene un token personale.

Lo script prepara l'intero server: stack web (Apache + PHP), database, strumenti per SSL, l'insieme completo di soluzioni di protezione e attività cron (Lynis, SMART, debsums, Logwatch, report giornaliero, aggiornamento ipsum).

1) Scelga il livello di protezione (nell'area personale, prima di copiare il comando):

  • Protezione completa (consigliata) — UFW (firewall), Fail2ban, CrowdSec + bouncer, ipsum (blocklist IP), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (integrità dei file), debsums, ClamAV + maldet (antivirus), Auditd, AppArmor, Monit, Lynis (audit), Logwatch, aggiornamenti di sicurezza automatici.
  • Alleggerita — per VPS con poca RAM: set di base senza componenti pesanti.
  • Server già configurato (pannello di hosting) — per un server già in funzione con pannello (HestiaCP e simili), siti e posta: solo modifiche additive (installazione di strumenti aggiuntivi, cron, regole sudo), mentre firewall, Fail2ban, posta, SSH e sysctl restano invariati. Su un server con pannello lo script sceglie questa modalità da solo.
Prova a vuoto. Nell'area personale si può selezionare la casella «Prova a vuoto» — così il comando mostrerà soltanto ciò che lo script installerà e modificherà, e terminerà senza toccare nulla. Utile su un server già configurato: prima la prova, poi l'esecuzione reale senza la casella.

2) Esegua sul server come root il comando dall'area personale — ha questo aspetto:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Tenga segreto il comando — è associato al Suo account. Il link ha una durata limitata; se è scaduto, prema «Ottieni un nuovo link» nell'area personale.
Dopo la configurazione automatica il server web è Apache + PHP-FPM, mentre gli strumenti di sicurezza e le attività cron sono già installati e funzionano «pronti all'uso».

3) Legga l'output finale: lì è indicato che cosa resta a Lei. Lo script termina con un blocco di verifiche e con l'elenco «Passi successivi — installazione del pannello». Una parte dei passi non viene eseguita di proposito: quali, dipende dal profilo scelto e da ciò che lo script ha trovato sul server. Si confronti con l'elenco qui sotto — vanno eseguiti solo i punti le cui righe sono comparse nel Suo output.

  • Control panel detected (…) — il sito si crea con gli strumenti del pannello di hosting stesso, il vhost lo script non lo fa. Passo 03, ramo «Server con pannello di hosting».
  • No vhost created (no domain given) — profilo «Server configurato» senza dominio: un vhost senza nome diventerebbe il sito predefinito e intercetterebbe i Suoi stessi siti, perciò non è stato creato. Passo 03, ramo «Creare il vhost manualmente».
  • sudo rules NOT written — lo script non è riuscito a determinare con quale account lavora il pannello. È una situazione normale: i file del pannello vengono caricati dopo la configurazione automatica, quindi non c'era ancora nulla su cui basarsi. Senza queste regole i moduli non vedranno i dati di sistema. Passo 04, blocco «sudo per il server web».
  • ! Nginx does not read .htaccess — davanti ad Apache c'è Nginx e non è stato possibile inserire automaticamente il divieto nella sua configurazione. Lo faccia assolutamente: altrimenti data/, keys/, database/ e config.php vengono serviti all'esterno aggirando .htaccess. Passo 03, blocco «Se davanti ad Apache c'è Nginx».
  • UFW installed but inactive — il firewall è installato ma disattivato: su un server già configurato lo script non lo attiva da solo per non tagliarle l'accesso. Lo attivi Lei, autorizzando obbligatoriamente la propria porta SSH:
    sudo ufw allow OpenSSH # porta SSH non standard: sudo ufw allow 2222/tcp sudo ufw allow 80,443/tcp sudo ufw enable
  • Fail2ban installed but not running — lo avvii: sudo systemctl enable --now fail2ban.
  • Database server present … but not running — avvii il DBMS prima del passo 04: sudo systemctl enable --now mariadb (oppure mysql, a seconda di quello installato).
  • Certbot skipped — issue SSL in … — il certificato si emette con l'interruttore Let's Encrypt nel pannello di hosting; il passo 06 non Le serve.
Se nel blocco di verifiche è tutto a posto, l'ultima riga è All checks passed. I punti con ! richiedono attenzione; i dettagli vengono scritti nel log, il cui percorso lo script stampa proprio alla fine (Log: …).

02. Dominio e DNS

Per aprire il pannello a un indirizzo come monitor.example.com e ottenere un SSL gratuito, il dominio deve puntare al server. Nel pannello di gestione DNS (presso il registrar o l'hoster) crei un record A:

Tipo: A Nome: monitor (sottodominio → monitor.example.com) oppure @ (radice del dominio → example.com) Valore: 203.0.113.10 ← IP del suo server TTL: 3600

Dopo qualche minuto (a volte fino a un'ora) verifichi che il dominio punti al server:

dig +short monitor.example.com # deve restituire il suo IP # oppure, se dig non è disponibile: getent hosts monitor.example.com
Il certificato SSL (passo 06) viene rilasciato solo per un dominio — perciò il DNS deve puntare al server prima del rilascio del certificato.

03. Caricare i file del pannello

Caso normale (VPS nuovo). La configurazione automatica ha già creato la cartella del pannello /var/www/monitor e configurato il sito Apache (DocumentRoot sulla radice del pannello, PHP-FPM, AllowOverride per .htaccess). Nell'output dello script è la riga vhost … → DocumentRoot …. Non serve creare separatamente la cartella e il vhost: basta caricare i file e impostare i permessi.
Due casi in cui il vhost NON viene creato — lo script lo comunica esplicitamente al termine del lavoro. In tal caso esegua prima il ramo necessario qui sotto e solo dopo carichi i file.

Ramo «Server con pannello di hosting» (nell'output: Control panel detected (…)). Su un server simile i siti sono gestiti dal pannello e lo script non crea di proposito un proprio vhost: verrebbe sovrascritto alla prima ricostruzione delle configurazioni da parte del pannello. L'ordine è questo:

  1. Crei un dominio web nel pannello di hosting (HestiaCP e simili) — la sua DocumentRoot resta invariata.
  2. Carichi la distribuzione per intero nella public_html di questo dominio: accanto a index.php, api/, assets/ devono trovarsi anche gli elementi di servizio config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. Non serve spostare nulla sopra la radice web: le cartelle di servizio sono chiuse dal file .htaccess della distribuzione e, sotto Nginx, dal divieto che lo script ha inserito nella configurazione del dominio.
  3. L'SSL si emette con l'interruttore Let's Encrypt nel pannello stesso — salti il passo 06.
  4. Poi: i permessi (più avanti in questo passo), il database (passo 04) e config.php (passo 05). Nei comandi sostituisca i percorsi con /home/account/web/dominio/public_html e il proprietario con l'utente di questo dominio al posto di www-data.

Ramo «Creare il vhost manualmente» (nell'output: No vhost created (no domain given)). Succede solo con il profilo «Server configurato», quando il dominio non è stato passato. La via più semplice è rilanciare il comando dall'area personale indicando il dominio:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo bash -s -- monitor.example.com

Un nuovo avvio è sicuro: ciò che è già stato fatto non viene duplicato. Se invece il vhost va creato a mano, ecco la stessa configurazione che scrive l'installer:

sudo mkdir -p /var/www/monitor # Il socket PHP-FPM viene determinato automaticamente: la versione di PHP varia da server a server. PHPSOCK=$(ls -1 /run/php/php*-fpm.sock 2>/dev/null | head -1) sudo tee /etc/apache2/sites-available/arciveo-monitor.conf > /dev/null <<'EOF' <VirtualHost *:80> ServerName monitor.example.com DocumentRoot /var/www/monitor <Directory /var/www/monitor> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> <FilesMatch "\.php$"> SetHandler "proxy:unix:__PHPSOCK__|fcgi://localhost" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/arciveo-monitor_error.log CustomLog ${APACHE_LOG_DIR}/arciveo-monitor_requests.log combined </VirtualHost> EOF sudo sed -i "s#__PHPSOCK__#${PHPSOCK}#" /etc/apache2/sites-available/arciveo-monitor.conf sudo a2ensite arciveo-monitor.conf sudo apache2ctl configtest sudo systemctl reload apache2
ServerName qui è obbligatorio. Un vhost senza nome diventa il sito predefinito di Apache e inizia a rispondere per i domini altrui sullo stesso server. Per lo stesso motivo non disattivi 000-default.conf su un server già configurato: quel sito potrebbe essere stato riadattato per qualcosa in produzione — su un VPS nuovo l'installer lo rimuove da solo, qui non serve farlo.
Se davanti ad Apache c'è Nginx (nell'output: ! Nginx does not read .htaccess). Nginx serve i file statici direttamente dal disco e non legge .htaccess: le cartelle di servizio risulterebbero aperte all'esterno, anche se Apache le chiude correttamente. Lo script ha già preparato un file con i divieti; va incluso nel blocco server{} del Suo sito, dopodiché occorre ricaricare Nginx:
include /etc/nginx/snippets/arciveo-deny.conf;
sudo nginx -t && sudo systemctl reload nginx # Verifica: deve restituire 403, non il contenuto del file curl -sI https://monitor.example.com/config.php | head -1
I file del pannello (l'archivio della distribuzione) si scaricano dopo l'acquisto nell'area my.arciveo.com → «Download». Estragga l'archivio prima di caricarlo sul server.

Carichi il contenuto della distribuzione in /var/www/monitor (in modo che all'interno ci siano public/, assets/, config.php ecc.) tramite SFTP/SCP (FileZilla / WinSCP) o con il comando scp dal computer locale:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Per far scrivere subito nel vhost il suo dominio (ServerName), lo si passa al comando di configurazione automatica già al passo 01: … | sudo bash -s -- monitor.example.com (oppure lo si indica nel campo «Dominio del pannello» nell'area personale). Se il dominio non è stato passato, il pannello risponde su qualsiasi host e per IP, e ServerName lo scriverà certbot all'emissione del SSL (passo 06); non serve reinstallare nulla.
Imposti i permessi sui file: è un passo obbligatorio. Se ha caricato come root o via SFTP, i file appartengono a root e il web server (www-data) non potrà leggerli: il pannello si aprirà vuoto o con errore 403 (nel log: .htaccess unreadable / directory not executable). Il comando qui sotto risolve il problema:
# Normalizziamo i permessi di tutta la webroot: la cartella creata da root non è # accessibile al web server (www-data) — senza questo il pannello restituisce una pagina vuota o 403. cd /var/www/monitor # Le cartelle di lavoro si creano PRIMA del chown — altrimenti le nuove cartelle restano root:root # e con chmod 750 il web server (www-data) non potrà scriverci. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

Si abra il caricamento dei file via SFTP. Dopo il comando qui sopra tutti i file appartengono a www-data, mentre FileZilla / WinSCP si collegano con il suo utente: il caricamento fallirà con SSH_FX_PERMISSION_DENIED (Permission denied). Scelga una delle due varianti.

Variante A: una ACL solo per il suo utente (consigliata). Il permesso di scrittura lo riceve soltanto lei; il web server continua a non poter sovrascrivere il codice del pannello:

sudo apt install -y acl # Permesso di scrittura per il suo utente sull'intera directory del pannello: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # La stessa regola come predefinita: per file e cartelle creati in seguito: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

Variante B: tramite il gruppo www-data. Più semplice, ma il permesso di scrittura sui file del pannello lo ottiene anche il web server: con una vulnerabilità in PHP il codice potrebbe essere sostituito. L'ordine dei comandi è importante: config.php e le cartelle di lavoro vengono chiuse per ultime:

sudo usermod -aG www-data deploy # Scrittura per il gruppo + setgid (il bit 2): i file caricati via SFTP restano # nel gruppo www-data, altrimenti il pannello non potrà sovrascriverli. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
Dopo la variante B si ricolleghi in FileZilla (Server → Disconnetti, poi acceda di nuovo): il nuovo gruppo ha effetto solo a un nuovo accesso, prima di allora i permessi continueranno a mancare. Verifica: id deploy, nell'elenco dei gruppi deve comparire www-data; ls -ld /var/www/monitor, permessi drwxrwsr-x, la lettera s al posto di x indica che setgid è attivo.

04. Database

Crei il database e l'utente, quindi importi lo schema. Il blocco con il DB va incollato nel terminale per intero (sudo mysql accede come root tramite socket unix — la password di root non serve). monitor_db e monitor_user sono nomi di esempio, può impostare quelli che preferisce; memorizzi il nome del database, l'utente e la password — li inserirà in config.php al passo successivo:

# 1. Database. Il nome del database, l’utente e la password si impostano UNA sola volta qui sotto e vengono sostituiti in tutte le righe. # Il blocco va incollato nel terminale PER INTERO; sudo mysql accede come root tramite socket unix # (la password di root non serve). NON usi l'interattivo `sudo mysql -u root -p` # con copia-incolla — durante l'incolla le righe SQL finiscono nella richiesta della password e vanno perse. DBNAME='monitor_db' # ← nome del database, si può lasciare DBUSER='monitor_user' # ← utente del database, si può lasciare DBPASS='CHOOSE_A_PASSWORD' # ← password, ne scelga una sua sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS $DBNAME CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS '$DBUSER'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON $DBNAME.* TO '$DBUSER'@'localhost'; FLUSH PRIVILEGES; SQL # Verifica (deve mostrare $DBNAME): mysql -u "$DBUSER" -p"$DBPASS" -e "SHOW DATABASES;" # Inserisca questi stessi tre valori in config.php → DB_NAME, DB_USER, DB_PASS.
Di norma non è necessario importare lo schema — al primo accesso dal browser il pannello crea da solo le tabelle e l'account admin (da database/db.sql), se il DB è vuoto.

Se le tabelle non vengono create (il pannello mostra un errore di connessione al DB oppure una schermata vuota al posto del modulo di accesso), importi lo schema manualmente. Il comando si esegue nella radice del pannello, i valori sono quelli del blocco qui sopra:

# Importazione dello schema: cd /var/www/monitor && mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" < database/db.sql # Verifica — deve comparire l'elenco delle tabelle: mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" -e "SHOW TABLES;"
Se le variabili $DBNAME / $DBUSER / $DBPASS sono ormai «dimenticate» (nuova sessione del terminale), inserisca i valori nel comando a mano oppure li imposti di nuovo con le stesse tre righe del blocco qui sopra.
sudo per il server web. Di norma le regole sono già state scritte dalla configurazione automatica e i moduli vedono subito i dati di sistema. Ma se nell'output dello script era presente la riga sudo rules NOT written, non c'era modo di determinare l'account del pannello (i file non erano ancora caricati) e le regole non sono state create. Senza di esse le sezioni come firewall, Fail2ban e CrowdSec resteranno vuote. Ora che i file sono al loro posto, lanci di nuovo il comando dall'area personale indicando esplicitamente l'account:
curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo ARCIVEO_USER=www-data bash -s -- monitor.example.com
Sostituisca www-data con l'utente con cui gira il PHP del Suo sito (su un pannello di hosting di solito è il proprietario del dominio). Lo può individuare così:
ps -o user= -C php-fpm8.3 | sort -u # indichi la sua versione # oppure: ps aux | grep -m3 '[p]hp-fpm'
Verifica dopo il nuovo avvio: il file /etc/sudoers.d/monitor esiste e contiene righe con il Suo utente.

05. Configurazione di config.php

config.php nella radice del pannello (/var/www/monitor/config.php) è l'unico file da modificare manualmente. Tutte le impostazioni del pannello vi sono definite come costanti define(). Aprirlo in un editor:

sudo nano /var/www/monitor/config.php

Inserisca i propri valori nei punti evidenziati; lasci il resto invariato:

// --- Database (dal passo 04) --- define('DB_HOST', 'localhost'); // lasciare define('DB_NAME', 'db_name'); // creato nel passo 04 define('DB_USER', 'user'); // creato nel passo 04 define('DB_PASS', 'db_password'); // impostato nel passo 04 define('DB_CHARSET', 'utf8mb4'); // lasciare // --- Applicazione --- define('APP_URL', 'https://monitor.example.com'); // indirizzo del pannello, senza slash finale define('TIMEZONE', 'Europe/Rome'); // il suo fuso orario // --- Durata sessione --- define('SESSION_LIFETIME', 28800); // inattività prima del nuovo accesso, sec (28800 = 8 h)

Cosa modificare:

  • DB_NAME, DB_USER, DB_PASS — esattamente lo stesso nome del database, utente e password impostati alla creazione del DB nel passo 04 (se ha mantenuto gli esempi — monitor_db / monitor_user). Non tocchi DB_HOST e DB_CHARSET.
  • APP_URL — indirizzo completo del pannello con https://, senza slash finale e senza www. Deve coincidere con il dominio su cui attiva la licenza (passo 07), altrimenti la chiave verrà rifiutata.
  • TIMEZONE — il suo fuso orario (elenco — timedatectl list-timezones). Influisce solo su come il pannello mostra le date; sull'orario di avvio delle attività cron non influisce (lì vale il fuso del sistema).
  • SESSION_LIFETIME — dopo quanti secondi di inattività il pannello richiede un nuovo accesso (predefinito 8 ore). Es. 3600 = 1 ora, 86400 = un giorno.
  • Il blocco di logging degli errori (display_errors, log_errors, error_log) — lo lasci ai valori predefiniti.

Salvi il file (Ctrl+O, Enter, poi Ctrl+X) e riavvii PHP-FPM — altrimenti, a causa di OPcache, le modifiche non verranno applicate:

sudo systemctl restart php*-fpm
config.php è un file segreto (contiene la password del DB). Si trova nella radice del pannello, che è anche la radice web, ma è protetto: permessi 640 (impostati nel passo 03) e divieto esplicito nel .htaccess radice. Non lo pubblichi in repository pubblici e non lo invii al supporto con la password reale.
Analisi dettagliata di tutti i parametri — nelle FAQ: «Il file config.php — tutte le impostazioni del pannello».

06. Emettere SSL (HTTPS)

Il pannello funziona solo tramite HTTPS. La sessione di accesso usa un cookie protetto e WebAuthn (2FA) per standard funziona solo su HTTPS. Tramite http:// non sarà possibile accedere.
Su un server con pannello di hosting questo passo non serve (nell'output dello script: Certbot skipped — issue SSL in …). Il certificato si emette con l'interruttore Let's Encrypt sul dominio web nel pannello stesso — così anche del suo rinnovo si occupa il pannello.

certbot e il plugin per Apache sono già installati dalla configurazione automatica. Il DNS del dominio deve già puntare al server (passo 02). Emissione con un solo comando:

sudo certbot --apache -d monitor.example.com

Se il pannello deve aprirsi anche con www., elenchi entrambi i nomi in un solo comando, altrimenti sul secondo indirizzo il browser mostrerà un avviso sul certificato:

sudo certbot --apache -d monitor.example.com -d www.monitor.example.com
Aggiunga il secondo nome solo se anche per esso esiste un record A che punta a questo server (passo 02). Altrimenti Let's Encrypt non potrà verificarlo e non emetterà affatto il certificato — dominio principale incluso.
Cosa chiederà certbot:
  1. Enter email address — il Suo indirizzo e-mail (vi arriveranno le notifiche di scadenza del certificato).
  2. Terms of Service … (Y)es/(N)o — Y.
  3. Share email with the EFF … (Y)es/(N)o — a Sua discrezione.
Poi certbot emetterà da solo il certificato, scriverà <VirtualHost *:443>, configurerà il redirect http→https e il rinnovo automatico. Alla fine — Successfully enabled HTTPS.
Se l'emissione fallisce, verifichi che dig +short monitor.example.com restituisca l'IP del server e che le porte 80/443 siano aperte (sudo ufw allow 80,443/tcp).

Dopo l'emissione: https://monitor.example.com si apre con il lucchetto, http:// reindirizza a https://.

07. Accesso e configurazione iniziale

Apra https://monitor.example.com, acceda con admin / useradmin e completi la checklist:

  1. Cambiare la password di admin — sezione «Utenti» nel menu.
  2. Attivare WebAuthn (2FA) — «Chiavi WebAuthn» → registri una chiave/passkey (richiede HTTPS). Ne registri subito due: in caso di smarrimento dell'unica chiave, l'accesso tramite essa sarà impossibile. Maggiori dettagli.
  3. Limitare l'accesso per IP — «Impostazioni» → «Limitazione dell'accesso per IP» (inserisca il proprio IP prima di attivarla, altrimenti si bloccherà l'accesso).
  4. Inserire la licenza — attivi il codice di attivazione ARCIVEO-… dall'area personale sul proprio dominio e incolli la chiave in «Impostazioni» → «Licenza». Maggiori dettagli.
  5. Configurare le notifiche — Telegram e/o Email in «Impostazioni». Maggiori dettagli.
  6. Eliminare l'installer public/start_db.php, se è rimasto: consente di ricreare il database senza autenticazione. Finché il file resta nella radice del pannello o in public/, il pannello lo segnala con un banner rosso.
  7. Avviare manualmente le prime verifiche — altrimenti una parte delle sezioni resterà vuota fino a notte (veda il blocco qui sotto).
Perché «Audit Lynis» e «Logwatch» sono subito vuoti. La configurazione automatica ha installato gli strumenti e creato le attività cron, ma non ha eseguito le verifiche vere e proprie: partiranno secondo la pianificazione — Lynis alle 03:00, Logwatch alle 06:00, debsums alle 04:30, ClamAV all'01:30. Fino a quel momento le sezioni indicano onestamente che i report non ci sono ancora. Per non aspettare un giorno intero, le esegua una volta a mano:
# Audit Lynis — primo report (alcuni minuti): sudo /usr/local/bin/lynis-scan.sh # Report Logwatch delle ultime 24 ore: sudo /usr/local/bin/logwatch_daily.sh # Integrità dei pacchetti (debsums) — su un server grande richiede parecchio tempo: sudo /usr/local/bin/debsums-scan.sh
Lynis si può avviare anche direttamente dal pannello — il pulsante «Avvia audit» nella pagina «Audit Lynis»: esegue lo stesso script in background e aggiorna da solo il report. Poi tutto procede secondo la pianificazione, non serve più avviarlo a mano.
Il primo scan antivirus (sudo /usr/local/bin/clamav-scan.sh) carica pesantemente disco e processore e può durare un'ora e più — su un server in produzione è meglio attendere l'avvio notturno dell'01:30. Le sezioni «Dischi (SMART)», «Prestazioni» e «Aggiornamenti di sicurezza» si popolano da sole: rispettivamente ogni 30 minuti, ogni 5 minuti e una volta all'ora.
Fatto. La guida a ogni strumento è nelle FAQ.
Se le serve ospitare su questo server un altro sito con un proprio dominio, consulti le FAQ: «Un secondo sito su questo server (un altro dominio)».