diff --git a/docs/books/admin_guide/03-commands.it.md b/docs/books/admin_guide/03-commands.it.md index 5de2b43845..55e080fba7 100644 --- a/docs/books/admin_guide/03-commands.it.md +++ b/docs/books/admin_guide/03-commands.it.md @@ -1,7 +1,7 @@ --- title: Comandi Linux author: Antoine Le Morvan -contributors: Steven Spencer, Franco Colussi +contributors: Steven Spencer, Aditya Putta, Franco Colussi update: 11-10-2021 --- @@ -169,14 +169,15 @@ clear (1) - clear the terminal screen Una volta trovato con `apropos` o `whatis`, il manuale è letto da `man` ("Man è tuo amico"). Questo set di manuali è diviso in 8 sezioni, raggruppando le informazioni per argomento, la sezione predefinita è la 1: -1. Comandi utente; -2. Chiamate di sistema; -3. Funzioni della libreria C; -4. Periferiche e file speciali; -5. Formati di file ; -6. Giochi; -7. Varie; -8. Strumenti e demoni dell'amministrazione del sistema. +1. Programmi o comandi eseguibili; +2. Chiamate di sistema (funzioni date dal kernel); +3. Chiamate di libreria (funzioni date dalla libreria); +4. File speciali (di solito si trovano in /dev); +5. Formati di file e convenzioni (file di configurazione come etc/passwd); +6. Giochi (come le applicazioni basate sui personaggi); +7. Varie (es. man (7)); +8. Comandi di amministrazione del sistema (di solito solo per root); +9. Routine del Kernel (non standard). È possibile accedere alle informazioni su ciascuna sezione digitando `man x intro`, dove `x` è il numero della sezione. @@ -240,7 +241,7 @@ $ history | Opzioni | Commenti | | ------- | ------------------------------------------------------------------------------------------------------------- | -| `-w` | L'opzione`-w` copierà la cronologia della sessione corrente nel file. | +| `-w` | Scrive la cronologia corrente nel file della cronologia | | `-c` | L'opzione`-c` eliminerà la cronologia della sessione corrente (ma non il contenuto del file `.bash_history`). | * Manipolazione della history: @@ -283,7 +284,16 @@ Il comando `echo` è usato per visualizzare una stringa di caratteri. Questo comando è più comunemente usato negli script amministrativi per informare l'utente durante l'esecuzione. -L'opzione `-n` non tornerà alla linea dopo aver visualizzato il testo (che è il comportamento predefinito del comando). +L'opzione `-n` indica nessuna stringa di output newline (di default, stringa di output newline). + +```bash +shell > echo -n "123";echo "456" +123456 + +shell > echo "123";echo "456" +123 +456 +``` Per vari motivi, allo sviluppatore dello script potrebbe essere necessario utilizzare sequenze speciali (a partire da un carattere `\`). In questo caso, sara usata l'opzione `-e`, che consentirà l'interpretazione della sequenza. @@ -318,7 +328,7 @@ In questo ultimo esempio, l'opzione `d` visualizza una data fornita. L'opzione ` !!! Warning "Attenzione" - Il formato di una data può cambiare in base al valore della lingua definito nella variabile ambiente '$LANG'. + Il formato di una data può cambiare in base al valore della lingua definito nella variabile ambientale '$LANG'. Il display della data può seguire i seguenti formati: @@ -414,8 +424,8 @@ Gli errori nei percorsi possono causare molti problemi: dalla creazione di carte Nell'esempio sopra, stiamo cercando la posizione del file `myfile` nella directory di bob. -* in un **percorso assoluto**, la directory corrente non ha importanza. Iniziamo dalla radice e scendiamo fino alle directory `home`, `groupA`, `alice` e infine il file `myfile`: `/home/groupA/alice/myfile`. -* in un **percorso relativo**, il nostro punto di partenza è la directory corrente `bob`, saliamo di un livello con `..` (i.e., nella directpry `groupA`), poi giù nella directory di alice, e infine il file `myfile`: `../alice/myfile`. +* Con un **percorso assoluto**, la directory corrente non ha importanza. Iniziamo dalla radice e scendiamo fino alle directory `home`, `groupA`, `alice` e infine il file `myfile`: `/home/groupA/alice/myfile`. +* Con un **percorso relativo**, il nostro punto di partenza è la directory corrente `bob`, saliamo di un livello attraverso `..` (cioè nella directory `groupA` ), poi giù nella directory alice e infine nel file `myfile`: `../alice/myfile`. ### comando `pwd` @@ -435,15 +445,7 @@ A seconda dell'interprete di comando, il prompt dei comandi può anche visualizz Il comando `cd` (Change Directory) consente di modificare la directory corrente, in altre parole, serve per spostarsi attraverso l'albero. ```bash -$ cd /tmp -$ pwd -/tmp -$ cd ../ -$ pwd -/ -$ cd -$ pwd -/home/rockstar +ls [-a] [-i] [-l] [directory1] [directory2] […] ``` Come puoi vedere nell'ultimo esempio sopra, il comando `cd` senza argomenti sposta la directory corrente alla `home directory`. @@ -482,7 +484,7 @@ Il comando `ls`, tuttavia, ha molte opzioni (vedi `man`): | `-A` | Visualizza tutti i file nella directory tranne`.` e `..`. | | `-R` | Visualizza il contenuto delle sottodirectory in modo ricorsivo. | | `-F` | Visualizza il tipo di file. Stampa un`/` per una directory, `*` per gli eseguibili, `@` per un collegamento simbolico, e niente per un file di testo. | -| `-X` | ordina i file in base alle loro estensioni. | +| `-X` | Ordina i file secondo le loro estensioni. | * Descrizione delle colonne: @@ -969,7 +971,7 @@ sort [-kx] [-n] [-u] [-o file] [-ty] file Esempio: ```bash -$ sort -k3 -t: -n /etc/passwd +$ sort -k3 -t: -n -r /etc/passwd root:x:0:0:root:/root:/bin/bash adm:x:3:4:adm:/var/adm/:/sbin/nologin ``` @@ -1130,9 +1132,9 @@ Il comando precedente cerca tutti i file nella directory `/tmp` con il suffisso !!! Tip "Comprendere l'opzione `-exec`" - Nell'esempio sopra, il comando `find` costruirà una stringa che rappresenta il comando da eseguire. + Nell'esempio precedente, il comando `find` costruirà una stringa che rappresenta il comando da eseguire. - Se il comando `find` trova tre file denominati `log1.txt`, `log2.txt`, e `log3.txt`, il comando `find` costruirà la stringa sostituendo nella stringa `rm -f {} \;` le parentesi graffe con uno dei risultati della ricerca, e farà questo tutte le volte che ci sono dei risultati. + Se il comando `find` trova tre file chiamati `log1.txt`, `log2.txt` e `log3.txt`, allora il comando `find` costruirà la stringa sostituendo le parentesi nella stringa `rm -f {} \;` con uno dei risultati della ricerca, e lo farà tante volte quanti sono i risultati. Questo ci darà: @@ -1141,7 +1143,7 @@ Il comando precedente cerca tutti i file nella directory `/tmp` con il suffisso ``` - Il carattere `;` è un carattere speciale della shell che deve essere protetto da `\` per evitare che venga interpretato troppo presto dal comando `find` (e non nel `-exec`). + Il carattere `;` è un carattere speciale di shell che deve essere protetto da `\` per evitare che venga interpretato troppo presto dal comando `find` (e non nel `-exec`). !!! Tip "Suggerimento" @@ -1199,7 +1201,7 @@ $ grep -w "^root" /etc/passwd !!! Note "Nota" - Questo comando è molto potente e si consiglia vivamente di consultare il suo manuale. Ha molti utilizzi derivati. + Questo comando è molto potente e si raccomanda vivamente di consultare il suo manuale. Ha molti derivati. È possibile cercare una stringa in un albero di file con l'opzione `-R`. @@ -1245,11 +1247,11 @@ $ find /home -name "test[123]*" !!! Note "Nota" - Circonda sempre le parole contenenti meta-caratteri con `"` per evitare che vengano sostituite dai nomi dei file che soddisfano i criteri. + Circonda sempre le parole che contengono meta-caratteri con `"` per evitare che siano sostituite dai nomi dei file che soddisfano i criteri. !!! Warning "Attenzione" - Non confondere i meta-caratteri della shell con i meta-caratteri dell'espressione regolare. Il comando `grep` usa i meta-caratteri dell'espressione regolare. + Non confondete i meta-caratteri della shell con i meta-caratteri delle espressioni regolari. Il comando `grep` utilizza meta-caratteri di espressione regolare. ## Reindirizzamenti e pipes @@ -1280,7 +1282,7 @@ $ ftp -in serverftp << ftp-commands.txt !!! Note "Nota" - Solo i comandi che richiedono un input da tastiera saranno in grado di gestire il reindirizzamento dell'input. + Solo i comandi che richiedono l'input da tastiera saranno in grado di gestire il reindirizzamento dell'input. Il reindirizzamento dell'ingresso può anche essere utilizzato per simulare l'interattività dell'utente. Il comando leggerà il flusso di input finché non incontrerà la parola chiave definita dopo il reindirizzamento dell'ingresso. @@ -1308,7 +1310,7 @@ La shell esce dal comando `ftp` quando riceve una linea contenente solo la parol !!! Warning "Attenzione" - La parola chiave finale, qui `END` o `STOP`, deve essere l'unica parola sulla riga e deve essere all'inizio della riga. + La parola chiave finale, qui `END` o `STOP`, deve essere l'unica parola sulla linea e deve essere all'inizio della linea. Il reindirizzamento dell'ingresso standard viene usato raramente perché la maggior parte dei comandi accetta un nome di file come argomento. @@ -1494,15 +1496,15 @@ $ type ls potrebbe restituire quanto segue: ```bash -ls è un alias di « ls -rt » +ls is an alias to « ls -rt » ``` Ora che questo è noto, possiamo vedere i risultati dell'utilizzo dell'alias o disabilitarlo in una volta con il carattere `\` eseguendo il seguente: ```bash -$ ls file* # order by time +$ ls file* # ordine per data file3.txt file2.txt file1.txt -$ \ls file* # order by name +$ \ls file* # ordine per nome file1.txt file2.txt file3.txt ``` diff --git a/docs/books/learning_rsync/01_rsync_overview.it.md b/docs/books/learning_rsync/01_rsync_overview.it.md index 9032545ece..803a9038d3 100644 --- a/docs/books/learning_rsync/01_rsync_overview.it.md +++ b/docs/books/learning_rsync/01_rsync_overview.it.md @@ -2,7 +2,7 @@ title: rsync breve descrizione author: tianci li contributors: Steven Spencer, Franco Colussi -update: 2021-12-25 +update: 2022-Mar-14 --- # Backup in Sintesi @@ -14,7 +14,7 @@ Il backup si riferisce alla duplicazione dei dati nel file system o nel database Quali sono i metodi di backup? * Backup completo: si riferisce a una copia unica di tutti i file, le cartelle o i dati nel disco rigido o nel database. (Pro: il migliore, può recuperare i dati più velocemente. Svantaggi: occupa più spazio su disco rigido.) -* Backup incrementale: si riferisce al backup dei dati aggiornati dopo l'ultimo backup completo o incrementale. Il processo è così, un backup completo il primo giorno; un backup dei nuovi dati aggiunti il secondo giorno, anziché un backup completo; il terzo giorno, un backup dei dati appena aggiunti sulla base del secondo giorno. Relativo al giorno successivo. +* Backup incrementale: si riferisce al backup dei dati aggiornati dopo l'ultimo backup completo o incrementale. Il processo è come questo: un backup completo il primo giorno; un backup dei dati appena aggiunti il secondo giorno, al contrario di un backup completo; il terzo giorno, un backup dei dati appena aggiunti sulla base del secondo giorno, relativo al giorno successivo, e così via. * Backup differenziale: Si riferisce al backup dei file modificati dopo il backup completo. Ad esempio, un backup completo il primo giorno; un backup dei nuovi dati il secondo giorno; un backup dei nuovi dati dal secondo giorno al terzo giorno del terzo giorno; e un backup di tutti i nuovi dati dal secondo giorno al quarto giorno il quarto giorno. * Backup selettivo: Si riferisce al backup di una parte del sistema. * Backup a freddo: si riferisce al backup quando il sistema è in stato di arresto o manutenzione. I dati di backup sono esattamente gli stessi dei dati nel sistema durante questo periodo. @@ -23,7 +23,7 @@ Quali sono i metodi di backup? ## rsync in sintesi -Su un server, ho eseguito il backup della prima partizione nella seconda partizione, comunemente nota come "Backup locale." Gli strumenti di backup specifici da poter utilizzare sono `tar` , `dd` , `dump` , `cp`, ecc. Anche se i dati vengono salvati su questo server, se l'hardware non riesce ad avviarsi correttamente, i dati non verranno recuperati. Al fine di risolvere il backup locale Per questo problema, abbiamo introdotto un altro tipo di backup --- "backup remoto". +Su un server, ho eseguito il backup della prima partizione nella seconda partizione, comunemente nota come "Backup locale." Gli strumenti di backup specifici da poter utilizzare sono `tar` , `dd` , `dump` , `cp`, ecc. Anche se i dati vengono salvati su questo server, se l'hardware non riesce ad avviarsi correttamente, i dati non verranno recuperati. Per risolvere questo problema con il backup locale, abbiamo introdotto un altro tipo di backup --- "backup remoto". Alcune persone diranno, non posso usare il comando `tar` o `cp` sul primo server e inviarlo al secondo server tramite `scp` o `sftp`? diff --git a/docs/books/learning_rsync/01_rsync_overview.zh.md b/docs/books/learning_rsync/01_rsync_overview.zh.md index acb2af27c3..38f472e4bf 100644 --- a/docs/books/learning_rsync/01_rsync_overview.zh.md +++ b/docs/books/learning_rsync/01_rsync_overview.zh.md @@ -2,7 +2,7 @@ title: rsync 简述 author: tianci li contributors: Steven Spencer -update: 2021-11-04 +update: 2022年3月8日 --- # 备份简述 diff --git a/docs/guides/contribute/mkdocs_lsyncd.it.md b/docs/guides/contribute/mkdocs_lsyncd.it.md new file mode 100644 index 0000000000..87d00f0ace --- /dev/null +++ b/docs/guides/contribute/mkdocs_lsyncd.it.md @@ -0,0 +1,311 @@ +--- +title: Documentazione Locale - LXD +author: Steven Spencer +contributors: Ezequiel Bruni, Franco Colussi +update: 09-Mar-2022 +--- + +# Introduzione + +Ci sono diversi modi per eseguire una copia di `mkdocs` in modo da poter vedere esattamente come apparirà il vostro documento Rocky Linux quando sarà incorporato nel sistema live. Questo particolare documento tratta l'uso di un container LXD sulla vostra postazione locale per separare il codice python in `mkdocs` da altri progetti su cui potreste lavorare. + +È consigliabile mantenere i progetti separati per evitare di causare problemi con il codice della vostra stazione di lavoro. + +Questo è anche un documento partner della versione Docker [qui](rockydocs_web_dev.md). + +## Prerequisiti e presupposti + +Alcune cose che dovresti avere/conoscere/essere: + +* Familiarità e comfort con la riga di comando +* Essere a proprio agio con l'uso di strumenti per l'editing, SSH e la sincronizzazione, o essere disposti a seguire e imparare +* Faremo riferimento a LXD - c'è un lungo documento su come costruire e usare LXD su un server [qui](../containers/lxd_server.md), ma noi useremo solo un'installazione di base sulla nostra postazione Linux. Questo documento presuppone che stiate già usando LXD per altre cose, e non copre la costruzione e l'inizializzazione di LXD. +* Useremo `lsyncd` per il mirroring dei file, e puoi trovare la documentazione a riguardo [qui](../backup/mirroring_lsyncd.md) +* Avrete bisogno di chiavi pubbliche generate per il vostro utente e per l'utente "root" sulla vostra postazione locale usando [questo documento](../security/ssh_public_private_keys.md) +* La nostra interfaccia bridge è in esecuzione su 10.56.233.1 e il nostro container è in esecuzione nei nostri esempi qui sotto su 10.56.233.189. +* "youruser" in questo documento rappresenta il tuo id utente, quindi sostituiscilo con il tuo. +* Diamo per scontato che tu stia già sviluppando la documentazione con un clone del repository della documentazione sulla tua stazione di lavoro. + +## Il container mkdocs + +### Creare il Container + +Il nostro primo passo è creare il container LXD. Non c'è bisogno di usare qualcosa di diverso dai valori predefiniti qui, quindi lasciate che il vostro container sia costruito usando l'interfaccia bridge. + +Aggiungeremo un container Rocky alla nostra stazione di lavoro per `mkdocs`, quindi lo chiameremo semplicemente "mkdocs": + +``` +lxc launch images:rockylinux/8 mkdocs +``` + +Il container deve essere impostato con un proxy. Per impostazione predefinita, quando `mkdocs serve` viene avviato, viene eseguito su 127.0.0.1:8000. Questo va bene quando è sulla vostra stazione di lavoro locale senza un container. Tuttavia, quando è in un **container** LXD sulla vostra postazione locale, dovete impostare il container con una porta proxy. Questo viene fatto con: + +``` +lxc config device add mkdocs mkdocsport proxy listen=tcp:0.0.0.0:8000 connect=tcp:127.0.0.1:8000 +``` + +Nella riga sopra, "mkdocs" è il nome del nostro contenitore, "mkdocsport" è un nome arbitrario che stiamo dando alla porta proxy, il tipo è "proxy", e poi siamo in ascolto su tutte le interfacce tcp sulla porta 8000 e ci stiamo connettendo al localhost per quel container sulla porta 8000. + +!!! Note "Nota" + + Se stai eseguendo l'istanza di lxd su un'altra macchina nella tua rete, ricordati di assicurarti che la porta 8000 sia aperta nel firewall. + +### Installazione dei pacchetti + +In primo luogo, entrare nel container con: + +``` +lxc exec mkdocs bash +``` + +Avremo bisogno di alcuni pacchetti per realizzare ciò che dobbiamo fare: + +``` +dnf install git openssh-server python3-pip rsync +``` + +Una volta installato, dobbiamo abilitare e avviare `sshd`: + +``` +systemctl enable --now sshd +``` +### Utenti del container + +Dobbiamo impostare una password per il nostro utente root, e poi aggiungere il nostro utente (l'utente che usate sulla vostra macchina locale) e aggiungerlo alla lista sudoers. Dovremmo essere l'utente "root" al momento, quindi per cambiare la password digitate: + +``` +passwd +``` + +E imposta la password su qualcosa di sicuro e memorizzabile. + +Poi, aggiungi il tuo utente e imposta una password: + +``` +adduser youruser +passwd youruser +``` + +E aggiungete il vostro utente al gruppo sudoers: + +``` +usermod -aG wheel youruser +``` + +A questo punto, dovresti essere in grado di fare SSH nel container usando l'utente root o il tuo utente dalla tua stazione di lavoro e inserendo una password. Assicuratevi di poterlo fare prima di continuare. + +## SSH per root e il Tuo utente + +In questa procedura, l'utente root (come minimo) deve essere in grado di fare SSH nel container senza inserire una password; questo a causa del processo `lsyncd` che implementeremo. Stiamo assumendo qui che potete fare sudo all'utente root sulla vostra stazione di lavoro locale: + +``` +sudo -s +``` + +Stiamo anche assumendo che l'utente root abbia una chiave `id_rsa.pub` nella directory `./ssh`. In caso contrario, generatene una usando [questa procedura](../security/ssh_public_private_keys.md): + +``` +ls -al .ssh/ +drwx------ 2 root root 4096 Feb 25 08:06 . +drwx------ 14 root root 4096 Feb 25 08:10 .. +-rw------- 1 root root 2610 Feb 14 2021 id_rsa +-rw-r--r-- 1 root root 572 Feb 14 2021 id_rsa.pub +-rw-r--r-- 1 root root 222 Feb 25 08:06 known_hosts +``` + +Per ottenere l'accesso SSH sul nostro container senza dover inserire una password, finché la chiave `id_rsa.pub` esiste, come sopra, tutto quello che dobbiamo fare è eseguire: + +``` +ssh-copy-id root@10.56.233.189 +``` + +Nel caso del nostro utente, però, abbiamo bisogno dell'intera directory .ssh/ copiata nel nostro container. La ragione è che manterremo tutto identico per questo utente in modo che il nostro accesso a GitHub su SSH sia lo stesso. + +Per copiare tutto nel nostro container, abbiamo solo bisogno di farlo come utente, **non** sudo: + +``` +scp -r .ssh/ youruser@10.56.233.189:/home/youruser/ +``` + +Successivamente, SSH nel container come tuo utente: + +``` +ssh -l youruser 10.56.233.189 +``` + +Dobbiamo rendere le cose identiche, e questo viene fatto con `ssh-add`. Per fare questo, però, dobbiamo assicurarci di avere il `ssh-agent` disponibile. Inserire quanto segue: + +``` +eval "$(ssh-agent)" +ssh-add +``` + +## Clonare i repository + +Abbiamo bisogno di due repository clonati, ma non c'è bisogno di aggiungere alcun `git` remoto. Il repository della documentazione qui sarà utilizzato solo per visualizzare la documentazione corrente (replicata sulla tua stazione di lavoro) e i documenti. + +Il repository di rockylinux.org sarà usato per eseguire `mkdocs serve` e userà il mirror come sorgente. Tutti questi passaggi dovrebbero essere fatti come utente non root. Se non sei in grado di clonare i repository con il tuo userid, significa che **Hai** un problema con la tua identità per quanto riguarda `git` e dovrai rivedere gli ultimi passi per ricreare le tue chiavi dell'ambiente (sopra). + +Per prima cosa, clonate la documentazione: + +``` +git clone git@github.com:rocky-linux/documentation.git +``` + +Supponendo che questo abbia funzionato, allora clonate il docs.rockylinux.org: + +``` +git clone git@github.com:rocky-linux/docs.rockylinux.org.git +``` + +Se tutto ha funzionato come previsto, allora si può andare avanti. + +## Impostare mkdocs + +L'installazione dei plugin necessari viene fatta con `pip3` e il file "requirements.txt" nella directory docs.rockylinux.org. Mentre questo processo chiederà di usare l'utente root per farlo, al fine di scrivere le modifiche alle directory di sistema, dovrete praticamente eseguirlo come root. + +Qui lo stiamo facendo con `sudo`. + +Entrare nella directory: + +``` +cd docs.rockylinux.org +``` + +Quindi eseguire: + +``` +sudo pip3 install -r requirements.txt +``` + +Poi abbiamo bisogno di impostare `mkdocs` con una directory aggiuntiva. Al momento, `mkdocs` richiede la creazione di una directory docs e poi la directory documentation/docs collegata sotto di essa. Tutto questo viene fatto con: + +``` +mkdir docs +cd docs +ln -s ../documentation/docs +``` +### Testare mkdocs + +Ora che abbiamo `mkdocs` impostato, proviamo ad avviare il server. Ricordate, questo processo sosterrà che sembra che si tratti di produzione. Non lo è, quindi ignorate l'avvertimento. Avviare `mkdocs serve` con: + +``` +mkdocs serve -a 0.0.0.0:8000 +``` + +Dovreste vedere qualcosa di simile a questo nella console: + +``` +INFO - Building documentation... +WARNING - Config value: 'dev_addr'. Warning: The use of the IP address '0.0.0.0' suggests a production environment or the use of a + proxy to connect to the MkDocs server. However, the MkDocs' server is intended for local development purposes only. Please + use a third party production-ready server instead. +INFO - Adding 'sv' to the 'plugins.search.lang' option +INFO - Adding 'it' to the 'plugins.search.lang' option +INFO - Adding 'es' to the 'plugins.search.lang' option +INFO - Adding 'ja' to the 'plugins.search.lang' option +INFO - Adding 'fr' to the 'plugins.search.lang' option +INFO - Adding 'pt' to the 'plugins.search.lang' option +WARNING - Language 'zh' is not supported by lunr.js, not setting it in the 'plugins.search.lang' option +INFO - Adding 'de' to the 'plugins.search.lang' option +INFO - Building en documentation +INFO - Building de documentation +INFO - Building fr documentation +INFO - Building es documentation +INFO - Building it documentation +INFO - Building ja documentation +INFO - Building zh documentation +INFO - Building sv documentation +INFO - Building pt documentation +INFO - [14:12:56] Reloading browsers +``` + +E ora il momento della verità! Se avete fatto tutto correttamente sopra, dovreste essere in grado di aprire un browser web e andare all'IP del vostro container sulla porta :8000, e vedere il sito della documentazione. + +Nel nostro esempio, dovremmo inserire il seguente indirizzo nel browser: + +``` +http://10.56.233.189:8000 +``` +## lsyncd + +Se avete visto la documentazione nel browser web, ci siamo quasi. L'ultimo passo è quello di mantenere la documentazione che è nel vostro container in sincronia con quella sulla vostra stazione di lavoro locale. + +Lo stiamo facendo qui con `lsyncd` come indicato sopra. + +A seconda della versione di Linux che state usando, `lsyncd` è installato in modo diverso. [Questo documento](../backup/mirroring_lsyncd.md) copre i modi per installarlo su Rocky Linux, e anche da sorgente. Se state usando qualche altro tipo di Linux (Ubuntu per esempio) generalmente hanno i loro propri pacchetti, ma ci sono delle sfumature. + +Ubuntu, per esempio, nomina il file di configurazione in modo diverso. Siate solo consapevoli che se state usando un altro tipo di workstation Linux diverso da Rocky Linux, e non volete installare dai sorgenti, probabilmente ci sono pacchetti disponibili per la vostra piattaforma. + +Per ora, assumiamo che stiate usando una workstation Rocky Linux e che stiate usando il metodo di installazione RPM dal documento incluso. + +### Configurazione + +!!! Note "Nota" L'utente root deve eseguire il demone, quindi è necessario essere root per creare i file di configurazione e i log. Per questo stiamo impiegando `sudo -s`. + +Abbiamo bisogno di avere dei file di log disponibili per `lsyncd` per scriverci: + +``` +touch /var/log/lsyncd-status.log +touch /var/log/lsyncd.log +``` + +Dobbiamo anche creare un file di esclusione, anche se in questo caso non stiamo escludendo nulla: + +``` +touch /etc/lsyncd.exclude +``` + +Infine dobbiamo creare il file di configurazione. In questo esempio, stiamo usando `vi` come editor, ma potete usare qualsiasi editor con cui vi sentite a vostro agio: + +``` +vi /etc/lsyncd.conf +``` + +E poi mettete questo contenuto in quel file e salvatelo. Assicuratevi di sostituire "youruser" con il vostro attuale utente, e l'indirizzo IP con il vostro IP del container: + +``` +settings { + logfile = "/var/log/lsyncd.log", + statusFile = "/var/log/lsyncd-status.log", + statusInterval = 20, + maxProcesses = 1 + } + +sync { + default.rsyncssh, + source="/home/youruser/documentation", + host="root@10.56.233.189", + excludeFrom="/etc/lsyncd.exclude", + targetdir="/home/youruser/documentation", + rsync = { + archive = true, + compress = false, + whole_file = false + }, + ssh = { + port = 22 + } +} +``` + +Presumiamo che abbiate abilitato `lsyncd` quando lo avete installato, quindi a questo punto dobbiamo solo avviare o riavviare il processo: + +``` +systemctl restart lsyncd +``` + +Per assicurarsi che le cose stiano funzionando, controllate i log, in particolare il `lsyncd.log`, che dovrebbe mostrarvi qualcosa del genere se tutto è stato avviato correttamente: + +``` +Fri Feb 25 08:10:16 2022 Normal: --- Startup, daemonizing --- +Fri Feb 25 08:10:16 2022 Normal: recursive startup rsync: /home/youruser/documentation/ -> root@10.56.233.189:/home/youruser/documentation/ +Fri Feb 25 08:10:41 2022 Normal: Startup of "/home/youruser/documentation/" finished: 0 +Fri Feb 25 08:15:14 2022 Normal: Calling rsync with filter-list of new/modified files/dirs +``` + +## Conclusione + +Ora mentre lavorate alla vostra documentazione sulla stazione di lavoro, sia che si tratti di un `git pull` o di un ramo che create per fare un documento (come questo!), vedrete le modifiche apparire nella vostra documentazione sul container, e `mkdocs serve` vi mostrerà il contenuto nel vostro browser web. + +È una pratica consigliata che tutto il codice Python venga eseguito separatamente da qualsiasi altro codice Python che si potrebbe sviluppare. I container LXD possono renderlo molto più facile; provate questo metodo e vedete se funziona per voi. diff --git a/docs/guides/security/firewalld-beginners.it.md b/docs/guides/security/firewalld-beginners.it.md index 543f76b0f8..5b76303862 100644 --- a/docs/guides/security/firewalld-beginners.it.md +++ b/docs/guides/security/firewalld-beginners.it.md @@ -68,9 +68,7 @@ systemctl stop firewalld E per dare al servizio un riavvio forte: ```bash -sudo firewall-cmd --permanent --zone=public --add-service=https -# Or, in some other cases: -sudo firewall-cmd --permanent --zone=public --add-port=443/tcp +sudo firewall-cmd --reload ``` ### Comandi di base per la configurazione e la gestione di `firewalld` diff --git a/docs/guides/security/firewalld.it.md b/docs/guides/security/firewalld.it.md index 382aeeea65..0cd561ad5f 100644 --- a/docs/guides/security/firewalld.it.md +++ b/docs/guides/security/firewalld.it.md @@ -2,7 +2,10 @@ title: firewalld da iptables author: Steven Spencer contributors: wsoyinka, Antoine Le Morvan, Ezequiel Bruni, Franco Colussi -update: 19-Feb-2022 +update: 11-Mar-2022 +tags: + - security + - firewalld --- # Guida da `iptables` a `firewalld` - Introduzione @@ -17,7 +20,7 @@ Dalla pagina del manuale:`"firewalld` fornisce un firewall gestito dinamicamente Curiosità: `firewalld` in Rocky Linux è in realtà un front end per i sottosistemi del kernel netfilter e nftables. -Per capire veramente `firewalld`, è necessario comprendere l'uso delle zone. Le zone sono dove viene applicata la granularità dei set di regole del firewall. Considerate di leggere entrambi i documenti per ottenere il massimo da `firewalld`. +Questa guida si concentra sull'applicazione di regole da un firewall `iptables` a un firewall `firewalld`. Se sei davvero all'inizio del tuo viaggio nel firewall, [questo documento](firewalld-beginners.md) potrebbe aiutarti di più. Considerate di leggere entrambi i documenti per ottenere il massimo da `firewalld`. ## Prerequisiti e presupposti @@ -68,7 +71,7 @@ Per elencare le zone esistenti sul vostro sistema, digitate: $ systemctl status firewalld ``` -Ad essere onesti, odio soprattutto i nomi di queste zone. Drop, block, public e trusted sono perfettamente chiari, ma alcuni non sono abbastanza buoni per una perfetta sicurezza granulare. Prendiamo questa sezione di regole `iptables` come esempio: +Ad essere onesti, odio soprattutto i nomi di queste zone. drop, block, public e trusted sono perfettamente chiari, ma alcuni non sono abbastanza efficaci per una perfetta sicurezza granulare. Prendiamo questa sezione di regole `iptables` come esempio: `iptables -A INPUT -p tcp -m tcp -s 192.168.1.122 --dport 22 -j ACCEPT` @@ -85,7 +88,7 @@ Ma cosa succede se su questo server abbiamo anche una intranet che è accessibil Per aggiungere una zona, dobbiamo usare il `firewall-cmd` con il parametro `--new-zone`. Aggiungeremo "admin" (per amministrativo) come zona: -`firewall-cmd --new-zone admin --permanent` +`firewall-cmd --new-zone=admin --permanent` !!! Note "Nota" @@ -95,9 +98,38 @@ Prima che questa zona possa essere effettivamente utilizzata, dobbiamo ricaricar `firewall-cmd --reload` +!!! hint "Suggerimento" + + Una nota sulle zone personalizzate: Se avete bisogno di aggiungere una zona che sarà una zona fidata, ma conterrà solo un particolare IP sorgente o interfaccia e nessun protocollo o servizio, e la zona "fidata" non funziona per voi, probabilmente perché l'avete già usata per qualcos'altro, ecc. Potete aggiungere una zona personalizzata per fare questo, ma dovete cambiare l'obiettivo della zona da "default" ad "ACCEPT" (si può anche usare REJECT o DROP, a seconda dei vostri obiettivi). Ecco un esempio che usa un'interfaccia bridge (lxdbr0 in questo caso) su una macchina LXD. + + Per prima cosa, aggiungiamo la zona e la ricarichiamo per poterla utilizzare: + + ``` + firewall-cmd --new-zone=bridge --permanent + firewall-cmd --reload + ``` + + + Poi, cambiamo il target della zona da "default" a "ACCEPT" (**notare che l'opzione "--permanent" è richiesta per cambiare un target**) poi assegniamo l'interfaccia e ricarichiamo: + + ``` + firewall-cmd --zone=bridge --set-target=ACCEPT --permanent + firewall-cmd --zone=bridge --add-interface=lxdbr0 --permanent + firewall-cmd --reload + ``` + + + Questo dice al firewall che voi: + + 1. state cambiando l'obiettivo della zona in ACCEPT + 2. state aggiungendo l'interfaccia bridge "lxdbr0" alla zona + 3. ricaricate il firewall + + Tutto questo dice che state accettando tutto il traffico dall'interfaccia di bridge. + ### Elencazione delle Zone -Prima di andare avanti, dobbiamo dare un'occhiata al processo di elencazione delle zone. Piuttosto che un output tabellare fornito da `iptables -L`, si ottiene una singola colonna di output con intestazioni. L'elenco di una zona è fatto con il comando `firewall-cmd --zone=[nome_zona] --list-all.` Ecco come appare quando elenchiamo la zona "admin" appena creata: +Prima di andare avanti, dobbiamo dare un'occhiata al processo di elencazione delle zone. Piuttosto che un output tabellare fornito da `iptables -L`, si ottiene una singola colonna di output con intestazioni. L'elenco di una zona è fatto con il comando `firewall-cmd --zone=[nome_zona] --list-all.`. Ecco come appare quando elenchiamo la zona "admin" appena creata: `firewall-cmd --zone=admin --list-all` @@ -150,11 +182,11 @@ e ricaricare: !!! Warning "Attenzione" - Se stai lavorando su un server remoto o su una VPS, rimanda l'ultima istruzione! *Non rimuovere MAI il servizio `ssh` da un server remoto* a meno che tu non abbia un altro modo per accedere alla shell (vedi sotto). + Se stai lavorando su un server remoto o su un VPS, rimanda l'ultima istruzione! *NON rimuovere MAI il servizio `ssh` da un server remoto* a meno che tu non abbia un altro modo per accedere alla shell (vedi sotto). Se ti chiudi fuori dall'accesso `ssh` tramite il firewall, dovrai (nel peggiore dei casi) andare a riparare il tuo server di persona, contattare il supporto, o eventualmente reinstallare il sistema operativo dal tuo pannello di controllo (a seconda che il server sia fisico o virtuale). -### Utilizzo di una nuova zona - Aggiunta di IP Amministrativi +### Utilizzo di una Nuova Zona - Aggiunta di IP Amministrativi Ora basta ripetere i nostri passi originali usando la zona "admin": @@ -176,7 +208,7 @@ Testate la vostra regola per assicurarvi che funzioni. Per testare: Feb 14 22:02:34 serverhostname sshd[9805]: Accepted password for root from 192.168.1.122 port 42854 ssh2 Feb 14 22:02:34 serverhostname sshd[9805]: pam_unix(sshd:session): session opened for user root by (uid=0) ``` -Questo mostra che l'IP sorgente per la nostra connessione SSH era effettivamente lo stesso IP che abbiamo appena aggiunto alla zona "admin". Quindi dovremmo essere sicuri di spostare questa regola in modo permanente: +Questo mostra che l'IP sorgente per la nostra connessione SSH era effettivamente lo stesso IP che abbiamo appena aggiunto alla zona "admin". Quindi dovremmo essere al sicuro nello spostare questa regola in modo permanente: `firewall-cmd --runtime-to-permanent` @@ -196,7 +228,7 @@ Se avete più di un IP amministrativo da aggiungere (molto probabile), allora ag !!! Note "Nota" - Tenete a mente che se state lavorando su un server remoto o VPS, e avete una connessione internet che non usa sempre lo stesso IP, potreste voler aprire il vostro servizio `ssh` ad una gamma di indirizzi IP usati dal vostro provider di servizi internet o regione geografica. Questo, di nuovo, è per non essere bloccati dal proprio firewall. + Tenete a mente che se state lavorando su un server remoto o VPS, e avete una connessione internet che non usa sempre lo stesso IP, potreste voler aprire il vostro servizio `ssh` a una gamma di indirizzi IP usati dal vostro provider di servizi internet o regione geografica. Questo, di nuovo, è per non essere bloccati dal proprio firewall. Molti ISP fanno pagare un extra per gli indirizzi IP dedicati, se vengono offerti, quindi è una vera preoccupazione. @@ -210,9 +242,9 @@ Guardiamo un'altra linea nel nostro firewall `iptables` che vogliamo emulare in Per i neofiti, ICMP è un protocollo di trasferimento dati progettato per la segnalazione di errori. Fondamentalmente, ti dice quando c'è stato un qualsiasi tipo di problema di connessione a una macchina. -In realtà, lasceremmo probabilmente ICMP aperto a tutti i nostri IP locali (in questo caso 192.168.1.0/24). Tenete a mente, però, che le nostre zone "public" e "admin" avranno l'ICMP attivo per impostazione predefinita, quindi la prima cosa da fare per limitare ICMP a quell'unico indirizzo di rete è bloccare queste richieste su "public" e "admin" . +In realtà, lasceremmo probabilmente ICMP aperto a tutti i nostri IP locali (in questo caso 192.168.1.0/24). Tenete a mente, però, che le nostre zone "public" e "admin" avranno l'ICMP attivo per impostazione predefinita, quindi la prima cosa da fare per limitare l'ICMP a quell'unico indirizzo di rete è bloccare queste richieste su "public" e "admin". -Di nuovo, questo è a scopo dimostrativo. Vorrete sicuramente che i vostri utenti amministrativi abbiano l'ICMP ai vostri server, e probabilmente lo faranno ancora, perché sono membri della rete LAN IP. +Di nuovo, questo è a scopo dimostrativo. Vorrete sicuramente che i vostri utenti amministrativi abbiano ICMP per i vostri server, e probabilmente lo avranno ancora, poiché sono membri della rete LAN IP. Per disattivare l'ICMP sulla zona "public", dovremmo: @@ -238,7 +270,7 @@ From 192.168.1.104 icmp_seq=3 Packet filtered ## Porte del Server Web -Ecco lo script `iptables` per permettere pubblicamente `http` e `https`, i protocolli di cui avete bisogno per servire le pagine web: +Ecco lo script `iptables` per permettere a livello pubblico `http` e `https`, i protocolli di cui avete bisogno per servire le pagine web: ``` iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT @@ -251,9 +283,9 @@ Ed ecco l'equivalente di `firewalld` che probabilmente avete già visto molte vo firewall-cmd --zone=public --add-service=http --add-service=https --permanent ``` -OK, tutto ciò va bene, ma cosa succede se state eseguendo, per esempio, un servizio Nextcloud su http/https e volete che solo la vostra rete fidata vi abbia accesso? Non è insolito! Questo genere di cose succedono di continuo, e permettere semplicemente il traffico pubblicamente, senza considerare chi ha effettivamente bisogno di accedere, è un enorme buco di sicurezza. +OK, tutto ciò va bene, ma cosa succede se state eseguendo, per esempio, un servizio Nextcloud su http/https e volete che solo la vostra rete fidata vi abbia accesso? Non è insolito! Questo genere di cose succedono di continuo, e permettere solo pubblicamente il traffico, senza considerare chi ha effettivamente bisogno di accedere, è un enorme buco di sicurezza. -In realtà non possiamo usare le informazioni della zona "trusted" che abbiamo usato sopra. Questo era per i test. Dobbiamo assumere che abbiamo almeno il nostro blocco IP della LAN aggiunto a "trusted". Sarebbe così: +In realtà non possiamo usare le informazioni della zona "trusted" che abbiamo usato sopra. Quello era per i test. Dobbiamo presumere che abbiamo almeno il nostro blocco IP LAN aggiunto a "trusted". Sarebbe così: `firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent` @@ -292,7 +324,7 @@ Poi aggiungiamo la porta ftp-data: `firewall-cmd --zone=public --add-port=20/tcp --permanent` -Poi aggiungiamo le porte di connessione passive: +Quindi aggiungiamo le porte di connessione passive: `firewall-cmd --zone=public --add-port=7000-7500/tcp --permanent` @@ -328,7 +360,7 @@ Avere un server DNS privato o pubblico significa anche prendere precauzioni nell `iptables -A INPUT -p udp -m udp -s 192.168.1.0/24 --dport 53 -j ACCEPT` -allora permettere solo la vostra zona "trusted" sarebbe corretto. Abbiamo già impostato le fonti della nostra zona "trusted", quindi tutto quello che dovreste fare sarebbe aggiungere il servizio alla zona: +allora permettere solo la vostra zona "trusted" sarebbe corretto. Abbiamo già impostato le fonti della nostra zona "trusted", quindi tutto quello che dovrete fare sarà aggiungere il servizio alla zona: `firewall-cmd --zone=trusted --add-service=dns` @@ -340,7 +372,7 @@ Con un server DNS pubblico, avrete solo bisogno di aggiungere lo stesso servizio !!! Note "Nota" - Si *può* elencare tutte le regole se si vuole, elencando le regole di nftables. È brutto, e non lo consiglio, ma se proprio dovete, potete fare un `nft list ruleset`. + Se si vuole si *può* elencare tutte le regole, elencando le regole di nftables. È brutto, e non lo consiglio, ma se proprio dovete, potete fare un `nft list ruleset`. Una cosa che non abbiamo ancora fatto molto è elencare le regole. Questa è una cosa che si può fare per zona. Ecco degli esempi con le zone che abbiamo usato. Si noti che è possibile elencare la zona prima di spostare una regola permanente, il che è una buona idea. @@ -349,13 +381,13 @@ Una cosa che non abbiamo ancora fatto molto è elencare le regole. Questa è una Qui possiamo vedere ciò che abbiamo applicato sopra: ```bash -public - target: default +trusted (active) + target: ACCEPT icmp-block-inversion: no interfaces: - sources: - services: cockpit dhcpv6-client ftp http https - ports: 20/tcp 7000-7500/tcp + sources: 192.168.1.0/24 + services: dns + ports: protocols: forward: no masquerade: no @@ -370,19 +402,19 @@ Questo può essere applicato a qualsiasi zona. Per esempio, ecco la zona "public `firewall-cmd --list-all --zone=public` ```bash -admin (active) +public target: default icmp-block-inversion: no interfaces: - sources: 192.168.1.122 192.168.1.151 - services: ssh - ports: + sources: + services: cockpit dhcpv6-client ftp http https + ports: 20/tcp 7000-7500/tcp protocols: forward: no masquerade: no forward-ports: source-ports: - icmp-blocks: + icmp-blocks: echo-reply echo-request rich rules: ``` Notate che abbiamo rimosso l'accesso "ssh" dai servizi e bloccato icmp echo-reply e echo-request. @@ -416,7 +448,7 @@ Anche se non riesco a trovare alcun documento che lo affermi specificamente, sem ## Interfacce -Per impostazione predefinita, `firewalld` ascolterà su tutte le interfacce disponibili. Su un server bare-metal con più interfacce che si affacciano su più reti, sarà necessario assegnare un'interfaccia a una zona in base alla rete su cui si affaccia. +Per impostazione predefinita, `firewalld` ascolterà su tutte le interfacce disponibili. Su un server fisico con più interfacce che si affacciano su più reti, sarà necessario assegnare un'interfaccia a una zona in base alla rete su cui si affaccia. Nei nostri esempi, non abbiamo aggiunto alcuna interfaccia, perché stiamo lavorando con un contenitore LXD per i test di laboratorio. Abbiamo solo un'interfaccia con cui lavorare. Diciamo che la vostra zona "public" deve essere configurata per utilizzare la porta Ethernet enp3s0 poiché questa porta ha l'IP pubblico, e diciamo che le vostre zone "trusted" e "admin" sono sull'interfaccia LAN, che potrebbe essere enp3s1. @@ -432,7 +464,7 @@ firewall-cmd --reload Abbiamo già usato alcuni comandi. Ecco alcuni comandi più comuni e cosa fanno: -| Command | Risultato | +| Comando | Risultato | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | `firewall-cmd --list-all-zones` | simile a `firewall-cmd --list-all --zone=[zone]` eccetto che elenca *tutte* le zone e i loro contenuti. | | `firewall-cmd --get-default-zone` | mostra la zona predefinita, che è "public" a meno che non sia stata cambiata. | diff --git a/docs/guides/security/generating_ssl_keys_lets_encrypt.it.md b/docs/guides/security/generating_ssl_keys_lets_encrypt.it.md index 6ee9382726..7e1dd5ceb7 100644 --- a/docs/guides/security/generating_ssl_keys_lets_encrypt.it.md +++ b/docs/guides/security/generating_ssl_keys_lets_encrypt.it.md @@ -1,86 +1,127 @@ +- - - +title: Generating SSL Keys - Let's Encrypt author: Steven Spencer contributors: wsoyinka, Antoine Le Morvan, Ezequiel Bruni, Colussi Franco update: 10-Mar-2022 +- - - + # Generazione di Chiavi SSL - Let's Encrypt -## Prerequisiti +## Prerequisiti & Presupposti * Comfort con la riga di comando * La familiarità con la protezione dei siti web con i certificati SSL è un plus * Conoscenza degli editor di testo a riga di comando (questo esempio utilizza _vi_) * Un server web già in esecuzione aperto al mondo sulla porta 80 (http) * Familiarità con _ssh_ (secure shell) e la possibilità di accedere al tuo server con _ssh_ +* Tutti i comandi presuppongono che tu sia l'utente root o che tu abbia usato _sudo_ per ottenere l'accesso root. # Introduzione Uno dei modi più popolari per proteggere un sito web, attualmente, è l'utilizzo di certificati SSL Let's Encrypt, che sono anche gratuiti. -Si tratta di certificati reali, non autofirmati o rimedi, ecc., quindi sono ottimi per una soluzione di sicurezza a basso budget. Questo documento ti guiderà nel processo di installazione e utilizzo dei certificati Let's Encrypt su un server web Rocky Linux. - -## Premesse - -* Tutti i comandi presuppongono che tu sia l'utente root o che tu abbia usato _sudo_ per ottenere l'accesso root. +Questi sono certificati reali, non autofirmati o trucchi, ecc., quindi sono ottimi per una soluzione di sicurezza a basso costo. Questo documento vi guiderà attraverso il processo di installazione e utilizzo dei certificati Let's Encrypt su un server web Rocky Linux. ## Installazione -Per effettuare i passi successivi, usa _ssh_ per accedere al tuo server. Se il nome DNS completamente qualificato del tuo server fosse www.myhost.com, utilizzeresti: +Per effettuare i passi successivi, usa _ssh_ per accedere al tuo server. Se il nome DNS pienamente qualificato del vostro server fosse www.myhost.com, allora usereste: -`ssh -l root www.myhost.com` +```bash +Saving debug log to /var/log/letsencrypt/letsencrypt.log +Plugins selected: Authenticator apache, Installer apache +Enter email address (used for urgent renewal and security notices) + (Enter 'c' to cancel): yourusername@youremaildomain.com +``` Oppure, se devi prima accedere al tuo server come utente non privilegiato. Usa il tuo nome utente: -`ssh -l username www.myhost.com` +```bash +ssh -l username www.myhost.com +``` E quindi: -`sudo -s` +```bash +sudo -s +``` In questo caso avrai bisogno delle tue credenziali utente _sudo_ per accedere al sistema come root. -Let's Encrypt utilizza un pacchetto chiamato _certbot_ che deve essere installato tramite un pacchetto snap. Per installare _snapd_ su Rocky Linux, dovrai installare il repository EPEL se non lo hai già fatto: - -`dnf install epel-release` +Let's Encrypt usa un pacchetto chiamato _certbot_ che deve essere installato tramite i repository EPEL. Aggiungete prima quelli: -Oltre a _snapd_ potresti aver bisogno di _fuse_ e _squashfuse_ a seconda del tuo sistema. Dobbiamo anche assicurarci che _mod\_ssl_ sia installato. Per installarli tutti usare: +```bash +dnf install epel-release +``` -`dnf install snapd fuse squashfuse mod_ssl` +Poi, basta installare i pacchetti appropriati, a seconda che si stia usando Apache o Nginx come server web. Per Apache è: -_snapd_ richiede una serie di dipendenze che verranno installate insieme ad esso, quindi rispondi sì al prompt di installazione. +```bash +dnf install certbot python3-cerbot-apache +``` -Una volta che _snapd_ e tutte le dipendenze sono installate, abilita il servizio _snapd_ con: +Per Nginx, basta cambiare una... parola parziale? -`systemctl enable --now snapd.socket` +```bash + + ServerName www.yourdomain.com + ServerAdmin username@rockylinux.org + Redirect / https://www.yourdomain.com/ + + + ServerName www.yourdomain.com + ServerAdmin username@rockylinux.org + DocumentRoot /var/www/sub-domains/com.yourdomain.www/html + DirectoryIndex index.php index.htm index.html + Alias /icons/ /var/www/icons/ + # ScriptAlias /cgi-bin/ /var/www/sub-domains/com.yourdomain.www/cgi-bin/ -_certbot_ richiede il supporto classico _snapd_, quindi dobbiamo abilitarlo con un link simbolico: + CustomLog "/var/log/httpd/com.yourdomain.www-access_log" combined + ErrorLog "/var/log/httpd/com.yourdomain.www-error_log" -`ln -s /var/lib/snapd/snap /snap` + SSLEngine on + SSLProtocol all -SSLv2 -SSLv3 -TLSv1 + SSLHonorCipherOrder on + SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384 +:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS -Prima di continuare, vogliamo assicurarci che tutti i pacchetti snap siano aggiornati. Per fare questo usa: + SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem + SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem + SSLCertificateChainFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem -`snap install core; snap refresh core` + + Options -ExecCGI -Indexes + AllowOverride None -Se ci sono degli aggiornamenti, verranno installati qui. + Order deny,allow + Deny from all + Allow from all -Solo nel caso in cui ti sia anticipato e abbia già installato _certbot_ dal RPM (che non funzionerà, a proposito), assicurati di rimuoverlo con: + Satisfy all + + +``` -`dnf remove certbot` +Potete sempre installare entrambi i moduli server se necessario, naturalmente. -E infine, è il momento di installare _certbot_ con: +!!! Note "Nota" -`snap install --classic certbot` + Una versione precedente di questa guida richiedeva la versione del pacchetto snap di certbot, in quanto ritenuta necessaria all'epoca. Le versioni RPM sono state ritestate di recente, e ora funzionano. -Questo dovrebbe installare _certbot_. Il passo finale è mettere il comando _certbot_ in un percorso che Rocky Linux può trovare facilmente. Questo viene fatto con un altro link simbolico: -`ln -s /snap/bin/certbot /usr/bin/certbot` +## Ottenere il Certificato Let's Encrypt per il Server Apache -## Ottenere il Certificato di Let's Encrypt +Ci sono due modi per recuperare il certificato, o usando il comando per modificare il file di configurazione http, o semplicemente recuperando il certificato. Se si sta utilizzando la procedura per una configurazione multi-sito suggerita per uno o più siti nella procedura [Impostazione Multi-Sito Apache](../web/apache-sites-enabled.md), allora si desidera solo recuperare il certificato. -Ci sono due modi per recuperare il certificato, o usando il comando per modificare il file di configurazione http, o semplicemente recuperare il certificato. Se si sta utilizzando la procedura per una configurazione multi-sito suggerita per uno o più siti nella procedura [Apache Web Server Multi-Site Setup](../web/apache-sites-enabled.md), allora si desidera solo recuperare il certificato. +Diamo per scontato che voi **stiate** utilizzando questa procedura, quindi recupereremo solo il certificato. Se state eseguendo un server web standalone usando la configurazione predefinita, potete recuperare il certificato e modificare il file di configurazione in un solo passaggio usando: -Diamo per scontato che voi **stiate** utilizzando questa procedura, quindi recupereremo solo il certificato. Se si esegue un server web standalone utilizzando la configurazione predefinita, è possibile recuperare il certificato e modificare il file di configurazione in un solo passaggio utilizzando `certbot --apache`. +```bash +certbot --apache +``` -Per recuperare solo il certificato, utilizzare questo comando: +Questo è davvero il modo più semplice per farlo. Tuttavia, a volte si vuole avere un approccio più manuale, e si vuole solo recuperare il certificato. Per recuperare solo il certificato, usate questo comando: -`certbot certonly --apache` +```bash +certbot certonly --apache +``` -Questo genererà un insieme di prompt a cui dovrai rispondere. Il primo è quello di fornire un indirizzo email per le informazioni importanti: +Entrambi i comandi genereranno una serie di richieste a cui dovrete rispondere. La prima è quella di fornire un indirizzo e-mail per le informazioni importanti: ``` Saving debug log to /var/log/letsencrypt/letsencrypt.log @@ -89,7 +130,7 @@ Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): yourusername@youremaildomain.com ``` -Il prossimo ti chiede di leggere e accettare i termini dell'accordo sottoscritto. Una volta letto l'accordo rispondete 'Y' per continuare: +Il prossimo ti chiede di leggere e accettare i termini del contratto di sottoscrizione. Dopo aver letto l'accordo rispondi 'Y' per continuare: ``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -151,7 +192,7 @@ IMPORTANT NOTES: ## La Configurazione del Sito - https -Applicare il file di configurazione al nostro sito è leggermente diverso da quello di un certificato SSL acquistato da un altro provider. +Applicare il file di configurazione al nostro sito è leggermente diverso rispetto a quando usiamo un certificato SSL acquistato da un altro fornitore (e se non lasciamo che certbot lo faccia automaticamente). Il file certificate e chain sono inclusi in un unico file PEM (Privacy Enhanced Mail). Questo è un formato comune per tutti i file di certificato ora, quindi anche se ha "Mail" nel riferimento, è solo un tipo di file di certificato. Per illustrare il file di configurazione, lo mostreremo nella sua interezza e poi descriveremo cosa sta succedendo: @@ -195,7 +236,7 @@ Il file certificate e chain sono inclusi in un unico file PEM (Privacy Enhanced ``` -Ecco cosa sta succedendo sopra. Si consiglia di rivedere le impostazioni [Apache Web Server Multi-Site Setup](../web/apache-sites-enabled.md) per vedere le differenze nell'applicazione di un SSL acquistato da un altro provider e il certificato Let's Encrypt: +Ecco cosa sta succedendo sopra. Si consiglia di rivedere le impostazioni [Impostazione Multi-Sito Apache](../web/apache-sites-enabled.md) per vedere le differenze nell'applicazione di un SSL acquistato da un altro provider e il certificato Let's Encrypt: * Anche se la porta 80 (http) è in ascolto, stiamo reindirizzando tutto il traffico alla porta 443 (https) * SSLEngine on - dice semplicemente di usare SSL @@ -205,13 +246,86 @@ Ecco cosa sta succedendo sopra. Si consiglia di rivedere le impostazioni [Apache * SSLCertificateKeyFile - il file PEM per la chiave privata, generato con la richiesta _certbot_. * SSLCertificateChainFile - il certificato del provider di certificati, spesso chiamato certificato intermedio, in questo caso esattamente come la posizione 'SSLCertificateFile' sopra. -Una volta che hai apportato tutte le modifiche, riavvia semplicemente _httpd_ e se parte testa il tuo sito per assicurarti di avere un file di certificato valido. Se è così, si è pronti a passare al passo successivo. +Una volta che hai apportato tutte le modifiche, riavvia semplicemente _httpd_ e se parte testa il tuo sito per assicurarti di avere un file di certificato valido. Se è così, siete pronti a passare al passo successivo: l'automazione. + +## Usare Certbot con Nginx + +Una nota veloce: usare certbot con Nginx è praticamente lo stesso che con Apache. Ecco la versione breve della guida: + +Eseguite questo comando per iniziare: + +```bash +certbot --nginx +``` + +Ti verranno poste un paio di domande come mostrato sopra, incluso il tuo indirizzo email e per quale sito vuoi ottenere un certificato. Supponendo che tu abbia almeno un sito configurato (con un nome di dominio che punta al server), vedrai una lista come questa: +``` +1. yourwebsite.com +2. subdomain.yourwebsite.com +``` + +Se hai più di un sito, premi il numero che corrisponde al sito per il quale vuoi un certificato. + +Diamo per scontato che voi **stiate** utilizzando questa procedura, quindi recupereremo solo il certificato. I risultati saranno un po' diversi, ovviamente. Se avete un file di configurazione di Nginx semplice come questo: + +``` +server { + server_name yourwebsite.com; + + listen 80; + listen [::]:80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } +} + +``` + +Dopo che certbot avrà finito, sembrerà un po' a questo: + +``` +server { + server_name yourwebsite.com; + + listen 443 ssl; # managed by Certbot + listen [::]:443 ssl; # managed by Certbot + ssl_certificate /etc/letsencrypt/live/yourwebsite.com/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/yourwebsite.com/privkey.pem; # managed by Certbot + include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } +} + +server { + if ($host = yourwebsite.com) { + return 301 https://$host$request_uri; + } # managed by Certbot + + + listen 80; + listen [::]:80; + server_name yourwebsite.com; + return 404; # managed by Certbot +} +``` + +A seconda di un paio di fattori (per esempio, se stai usando Nginx come reverse proxy), potresti aver bisogno di addentrarti nel nuovo file di configurazione per sistemare alcune cose che certbot non gestisce perfettamente da solo. + +Oppure nella maniera più difficile scrivere il vostro file di configurazione. ## Automatizzare il Rinnovo del Certificato Let's Encrypt -La bellezza di installare _certbot_ è che il certificato Let's Encrypt verrà rinnovato automaticamente. Non c'è bisogno di creare un processo per farlo. Dobbiamo testare il rinnovo con: +La parte interessante dell'installazione di _certbot_ è che il certificato Let's Encrypt si rinnova automaticamente. Non c'è bisogno di creare un processo per farlo. Abbiamo bisogno di testare il rinnovo con: -`certbot renew --dry-run` +```bash +certbot renew --dry-run +``` Quando esegui questo comando, otterrai un piacevole output che mostra il processo di rinnovo: @@ -241,11 +355,13 @@ Congratulations, all simulated renewals succeeded: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ``` -La [documentazione _certbot_](https://certbot.eff.org/lets-encrypt/centosrhel8-apache.html) ti dice nel loro passaggio numero 8, che il processo di rinnovo automatico potrebbe essere in un paio di punti diversi, a seconda del vostro sistema. Per un'installazione Rocky Linux, troverai il processo utilizzando: +La [documentazione _certbot_](https://certbot.eff.org/lets-encrypt/centosrhel8-apache.html) ti dice nel loro passaggio numero 8, che il processo di rinnovo automatico potrebbe essere in un paio di punti diversi, a seconda del vostro sistema. Per un'installazione Rocky Linux, troverete il processo utilizzando: -`systemctl list-timers` +```bash +systemctl list-timers +``` -Che ti dà un elenco di processi, uno dei quali sarà per _certbot_: +Che vi dà una lista di processi, uno dei quali sarà per _certbot_: ``` Sat 2021-04-03 07:12:00 UTC 14h left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service @@ -253,6 +369,6 @@ Sat 2021-04-03 07:12:00 UTC 14h left n/a n/a # Conclusioni -I certificati Let's Encrypt SSL sono un'altra opzione per proteggere il tuo sito web con un SSL. Una volta installato, il sistema prevede il rinnovo automatico dei certificati e crittograferà il traffico al vostro sito web. +I certificati SSL Let's Encrypt sono un'altra opzione per proteggere il tuo sito web con SSL. Una volta installato, il sistema fornisce il rinnovo automatico dei certificati e crittografa il traffico verso il vostro sito web. -Va notato che i certificati Let's Encrypt sono utilizzati per i certificati DV standard (Domain Validation). Non possono essere utilizzati per i certificati OV (Organization Validation) o EV (Extended Validation). +Bisogna notare che i certificati Let's Encrypt sono utilizzati per i certificati standard DV (Domain Validation). Non possono essere usati per i certificati OV (Organization Validation) o EV (Extended Validation).