Debian 9 Stretch - Installazione base: differenze tra le versioni
m (Sintassi url interni errata) |
|||
(31 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|ONLY|Stretch}} | |||
==Note preliminari== | ==Note preliminari== | ||
In questa guida mostreremo come effettuare una installazione base di una macchina '''Server''' Debian Stretch, su cui poi sarà possibile installare tutti i servizi desiderati. | In questa guida mostreremo come effettuare una installazione base di una macchina '''Server''' Debian Stretch, su cui poi sarà possibile installare tutti i servizi desiderati. | ||
Riga 9: | Riga 10: | ||
<br/> | <br/> | ||
- Gateway: <tt>192.168.1.1</tt> | - Gateway: <tt>192.168.1.1</tt> | ||
<br/><br/> | |||
Queste sono le impostazioni comuni che applico ad ogni installazione di un nuovo server Debian. | |||
<br/> | |||
A partire da questa base, è poi possibile installare i demoni che ci occorrono: Apache, MySQL, Postfix, Samba, etc. | |||
==Installazione== | ==Installazione== | ||
Riga 43: | Riga 48: | ||
<br/> | <br/> | ||
Per configurare correttamente il demone SSH e per ulteriori informazioni dettagliate, consigliamo di consultare la guida apposita: | Per configurare correttamente il demone SSH e per ulteriori informazioni dettagliate, consigliamo di consultare la guida apposita: | ||
[[ | [[OpenSSH | OpenSSH Server]] | ||
==Installazione di un editor di testo== | ==Installazione di un editor di testo== | ||
Riga 126: | Riga 131: | ||
</pre> | </pre> | ||
Per maggiori informazioni consigliamo la lettura delle seguenti guide: | Per maggiori informazioni consigliamo la lettura delle seguenti guide: | ||
* [[ | * [[I_repository_ed_il_loro_utilizzo | Utilizzo dei repository]] | ||
* [[ | * [[Repository_%26_pinning | Repository e pinning]] | ||
* [[ | * [[Il_repository_Backports | Il repository Backports]] | ||
==Autologin (Opzionale e potenzialmente insicuro)== | |||
In alcune situazioni non è possibile evitare di avere un server che, al momento del riavvio, faccia un autologin con un utente specifico, ad esempio nei casi in cui ci si trovi a dover gestire un software scritto male che necessita di un utente loggato per funzionare correttamente. | |||
<br/> | |||
E' possibile, anche se sconsigliato, impostare Debian affinchè effettui un autologin sulla console TTY1 al momento di un reboot, semplicemente introducendo una personalizzazione nel servizio di Systemd: | |||
<pre> | |||
# systemctl edit getty@ | |||
</pre> | |||
con contenuto: | |||
<pre> | |||
[Service] | |||
ExecStart= | |||
ExecStart=-/sbin/agetty --noclear -a root %I $TERM | |||
</pre> | |||
L'opzione: | |||
<pre> | |||
-a, --autologin username | |||
</pre> | |||
permette di specificare l'utente al quale desideriamo far effettuare il login automatico. | |||
<br/> | |||
'''ATTENZIONE''': occorre considerare le implicazioni sulla sicurezza di un server con un utente autologgato! | |||
==Gestione dei pacchetti a 32 bit== | ==Gestione dei pacchetti a 32 bit== | ||
Nei server con Debian Stretch amd64 è possibile che ci sia la necessità di installare alcuni pacchetti disponibili solo per la versione a 32 bit del sistema. Per fare questo è possibile abilitare la gestione dei pacchetti a 32 bit con i comandi: | Nei server con Debian Stretch amd64 è possibile che ci sia la necessità di installare alcuni pacchetti disponibili solo per la versione a 32 bit del sistema. Per fare questo è possibile abilitare la gestione dei pacchetti a 32 bit con i comandi: | ||
Riga 139: | Riga 165: | ||
# apt-get install nomepacchetto:i386 | # apt-get install nomepacchetto:i386 | ||
</pre> | </pre> | ||
==Tool di pulizia== | ==Tool di pulizia== | ||
Conviene installare alcuni tool per la pulizia e la manutenzione del sistema: | Conviene installare alcuni tool per la pulizia e la manutenzione del sistema: | ||
<pre> | <pre> | ||
# apt-get install checkinstall debfoster deborphan | # apt-get install checkinstall debfoster deborphan locate mlocate apt-file apt-listbugs apt-show-versions | ||
# updatedb | |||
# apt-file update | |||
</pre> | </pre> | ||
Per ulteriori informazioni si veda la guida apposita: [[ | Per ulteriori informazioni si veda la guida apposita: [[Pulire_Debian | Pulire Debian]] | ||
==Monitoraggio della configurazione== | ==Monitoraggio della configurazione== | ||
Conviene installare un tool per tenere traccia dei cambiamenti apportati ai file di configurazione del server e per poter ripristinare i file modificati, in caso di errori di configurazione. | Conviene installare un tool per tenere traccia dei cambiamenti apportati ai file di configurazione del server e per poter ripristinare i file modificati, in caso di errori di configurazione. | ||
<br/> | <br/> | ||
Il tool suggerito si chiama <tt>etckeeper</tt>; per l'installazione rimandiamo alla guida apposita: [[ | Il tool suggerito si chiama <tt>etckeeper</tt>; per l'installazione rimandiamo alla guida apposita: [[Monitorare_e_backuppare_i_cambiamenti_della_configurazione | Monitorare i cambiamenti della configurazione]] | ||
==Impostazione dell'orario== | ==Impostazione dell'orario== | ||
Può essere conveniente utilizzare un server NTP, in modo che la sincronizzazione dell'ora sia gestita automaticamente: | Può essere conveniente utilizzare un server NTP, in modo che la sincronizzazione dell'ora sia gestita automaticamente: | ||
Riga 158: | Riga 188: | ||
Il file di configurazione del demone è <code>/etc/ntp.conf</code>. In questo file vanno specificati i server NTP da contattare per la sincronizzazione, ad esempio ntp1.ien.it o ntp2.ien.it. | Il file di configurazione del demone è <code>/etc/ntp.conf</code>. In questo file vanno specificati i server NTP da contattare per la sincronizzazione, ad esempio ntp1.ien.it o ntp2.ien.it. | ||
Per maggiori informazioni: [[ | Per maggiori informazioni: [[Impostare_e_modificare_data_e_ora | Impostare data e ora]] | ||
==Messaggio personalizzato al login== | ==Messaggio personalizzato al login== | ||
Può essere utile far apparire un messaggio personalizzato al momento del login via SSH. | Può essere utile far apparire un messaggio personalizzato al momento del login via SSH. | ||
<br/> | <br/> | ||
Per fare questo si segua la guida apposita: [[ | Per fare questo si segua la guida apposita: [[Stretch_Messaggio_del_giorno | Messaggio del giorno]] | ||
==Alcuni programmi utili== | ==Alcuni programmi utili== | ||
* Programmi e di tools da linea di comando: [[ | Installiamo alcuni tool che possono tornare utili e un MTA per inviare le mail di sistema al nostro account di posta: | ||
* Cowsay. Non è propriamente un programma utile, ma è carino da avere: [[ | <pre> | ||
* Webmin. Per amministrare il server via HTTPS: [[ | # apt-get install exim4 mc p7zip-full htop wipe needrestart | ||
* | </pre> | ||
<pre> | |||
# nano /etc/aliases | |||
... | |||
root:la_mia_mail@email.it | |||
</pre> | |||
<pre> | |||
# newaliases | |||
</pre> | |||
* Programmi e di tools da linea di comando: [[Elenco_programmi_senza_interfaccia_grafica | Programmi senza interfaccia grafica]] | |||
* Cowsay. Non è propriamente un programma utile, ma è carino da avere: [[Cowsay,_la_mucca_che_ci_parla_dal_terminale | Cowsay]] | |||
* Webmin. Per amministrare il server via HTTPS: [[Webmin:_amministrare_Debian_via_web | Webmin]] | |||
* Shell in a Box. Per accedere alla shell del server via browser: [[Shellinabox]] | |||
==Monitoraggio e sicurezza== | |||
* Monitorare il traffico sulle interfacce di rete: [[Monitorare_il_traffico_sulle_interfacce_di_rete | VnStat]] | |||
* Protezione da attacchi e accessi non autorizzati: [[Fail2ban|Fail2Ban]] | |||
* Protezione da malware, rootkit e altre schifezze: [[Protezione da malware]] | |||
* Strumenti per il monitoraggio del server: [[Strumenti_per_monitorare_le_performance | Monitoraggio]] | |||
* Ottimizzazione delle performance di MySQL: [[Ottimizzare_le_performances_di_MySQL | Ottimizzare MySQL]] | |||
==Operazioni conclusive== | |||
Dopo aver installato tutti i demoni che ci occorrono sulla macchina (Apache, MySQL, FTP, Postfix, Samba, etc), consiglio di affrontare la gestione dei log e del monitoraggio dello stato del sistema. | |||
===Gestione dei Log=== | |||
In un server di produzione, i log possono arrivare a occupare svartiati GB di spazio e diventa quindi fondamentale avere uno strumento per gestirli correttamente. | |||
<br/> | |||
Installiamo quindi Logrotate: | |||
<pre> | |||
# apt install logrotate | |||
</pre> | |||
Nella directory <code>/etc/logrotate.d</code> possiamo trovare tutti i file di configurazione per la gestione dei log dei singoli demoni. | |||
<br/> | |||
I file sono costruiti tutti nella stessa maniera: | |||
<pre> | |||
# Indicazione del log | |||
/var/log/apache2/* { | |||
# Rotazione ogni settimana (oppure daily) | |||
weekly | |||
# Vengono mantenuti gli ultimi 3 log | |||
rotate 3 | |||
# La rotazione scatta solo se il file pesa almeno 10M | |||
size 10M | |||
# I file rotati verranno compressi | |||
compress | |||
delaycompress | |||
# Il nuovo file avrà questi permessi e questi owner | |||
create 640 root adm | |||
} | |||
</pre> | |||
L'installazione di Logrotate automaticamente imposta anche uno script in <code>/etc/cron.daily</code> che eseguirà logrotate giornalmente, alle 6 di ogni mattina. | |||
<br/><br/> | |||
Per monitorare i log può essere utile affidarsi a sistemi automatizzati: [[Monitorare i log di sistema con Logwatch]] | |||
===Impostazione backup e script personalizzati=== | |||
Al termine dell'installazione e della configurazione dei demoni e dei servizi, è utile impostare degli script di backup. A questo proposito possono essere utili le seguenti guide: | |||
* Backup di MySQL: [[Backup_di_MySQL_tramite_script | Backup di MySQL]] | |||
* Utilizzo del servizio Cron: [[Utilizzo_del_servizio_di_scheduling_Cron | Scheduling con Cron]] | |||
===Impostazioni tool di monitoraggio e firewall=== | |||
Come ultima cosa, impostiamo alcuni tool di monitoraggio e, per ultimo, le regole del firewall del server: | |||
* Monitoraggio dei demoni con Monit: [[Debian_Stretch_-_Monit | Monit]] | |||
* [[Fail2ban]]: impedire attacchi brute-force ai nostri server | |||
* [[Monitorare un server con OpenNMS]] | |||
* [[Monitorare i log di sistema con Graylog2]] | |||
* Monitoraggio della banda: [[Monitorare la banda con BitmeterOS]] | |||
* Impostazione firewall con iptables: [[Impostare_un_firewall_con_uno_script_iptables | Firewall con IPTables]] | |||
{{Autori | |||
|Autore = [[User:Ferdybassi|ferdybassi]] | |||
|Verificata_da= | |||
|Estesa_da = | |||
}} | |||
[[Categoria:SSH server e amministrazione remota]] | |||
[[Categoria:Firewall]] | |||
[[Categoria:Monitoraggio]] | |||
[[Categoria:Installazione]] |
Versione attuale delle 20:11, 23 mar 2021
Versioni Compatibili soltanto: Debian 9 "stretch" |
Note preliminari
In questa guida mostreremo come effettuare una installazione base di una macchina Server Debian Stretch, su cui poi sarà possibile installare tutti i servizi desiderati.
Utilizzeremo i seguenti parametri:
- Nome del server: server1.example.com
- Indirizzo IP: 192.168.1.100
- Gateway: 192.168.1.1
Queste sono le impostazioni comuni che applico ad ogni installazione di un nuovo server Debian.
A partire da questa base, è poi possibile installare i demoni che ci occorrono: Apache, MySQL, Postfix, Samba, etc.
Installazione
Per installare una macchina server, consigliamo di partire con:
- Installazione base da CD NetInstall
- Installazione solo del software di base
SSH Server
Dopo aver installato un sistema minimale, è consigliato installare il demome SSH, per permettere la gestione remota del server:
# apt-get -y install ssh openssh-server openssh-client ssh
È possibile creare una chiave RSA per poter accedere al server remoto dal proprio account, senza avere bisogno di inserire la password ogni volta. Per fare ciò occorre innanzitutto che nel file di configurazione di OpenSSH sul server siano abilitate le seguenti voci:
# nano /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys
Generazione della chiave RSA
Eseguire ssh-keygen sul proprio client e premere Invio quando viene chiesta la password.
Verranno generate sia la chiave privata che quella pubblica. Le chiavi saranno memorizzate in ~/.ssh/id_rsa e ~/.ssh/id_rsa.pub.
Successivamente occorre aggiungere il contenuto del file con la chiave pubblica nel file ~/.ssh/authorized_keys sul server remoto; questa operazione può essere compiuta via SCP. Attenzione: il file deve essere protetto con permessi 600).
Adesso si dovrebbe avere la possibilità di utilizzare ssh per collegarsi al sistema remoto senza che sia richiesta la password.
Per configurare correttamente il demone SSH e per ulteriori informazioni dettagliate, consigliamo di consultare la guida apposita:
OpenSSH Server
Installazione di un editor di testo
E' consigliato installare un editor di testo per gestire la modifiche dei file di configurazione.
# apt-get -y install vim-nox nano
Configurazione della rete
Da Debian Stretch il pacchetto che contiene alcuni utili tool di rete (es: ifconfig) è diventato opzionale; procediamo a installarlo:
# apt-get install net-tools
L'installer di Debian ha provveduto a configurare la rete attraverso il servizio DHCP. Per un server, tuttavia, è conveniente impostare un indirizzo IP statico:
# nano /etc/network/interfaces
Individuiamo la sezione dedicata alla scheda di rete del server e modifichiamola come segue:
source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto ens33 #iface ens33 inet dhcp iface ens33 inet static address 192.168.1.100 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1
Riavviamo la rete:
# service networking restart
Modifichiamo quindi il file hosts:
# nano /etc/hosts
aggiungendo il nome del nostro server:
127.0.0.1 localhost.localdomain localhost 192.168.1.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Quindi verifichiamo che nel file hostname sia presente il nome del server:
nano /etc/hostname
server1
In caso, modifichiamo il file.
Riavviamo il server:
# reboot
e verifichiamo che tutto sia a posto:
# hostname # hostname -f
#root@server1:/home/administrator# hostname server1 #root@server1:/home/administrator# hostname -f server1.example.com
Impostazione del sources.list
Verifichiamo i repository configurati sul server:
nano /etc/apt/sources.list
Per maggiori informazioni consigliamo la lettura delle seguenti guide:
Autologin (Opzionale e potenzialmente insicuro)
In alcune situazioni non è possibile evitare di avere un server che, al momento del riavvio, faccia un autologin con un utente specifico, ad esempio nei casi in cui ci si trovi a dover gestire un software scritto male che necessita di un utente loggato per funzionare correttamente.
E' possibile, anche se sconsigliato, impostare Debian affinchè effettui un autologin sulla console TTY1 al momento di un reboot, semplicemente introducendo una personalizzazione nel servizio di Systemd:
# systemctl edit getty@
con contenuto:
[Service] ExecStart= ExecStart=-/sbin/agetty --noclear -a root %I $TERM
L'opzione:
-a, --autologin username
permette di specificare l'utente al quale desideriamo far effettuare il login automatico.
ATTENZIONE: occorre considerare le implicazioni sulla sicurezza di un server con un utente autologgato!
Gestione dei pacchetti a 32 bit
Nei server con Debian Stretch amd64 è possibile che ci sia la necessità di installare alcuni pacchetti disponibili solo per la versione a 32 bit del sistema. Per fare questo è possibile abilitare la gestione dei pacchetti a 32 bit con i comandi:
# dpkg --add-architecture i386 # apt-get update
Da adesso sarà possibile installare pacchetti a 32 bit specificando l'architettura in fase di installazione:
# apt-get install nomepacchetto:i386
Tool di pulizia
Conviene installare alcuni tool per la pulizia e la manutenzione del sistema:
# apt-get install checkinstall debfoster deborphan locate mlocate apt-file apt-listbugs apt-show-versions # updatedb # apt-file update
Per ulteriori informazioni si veda la guida apposita: Pulire Debian
Monitoraggio della configurazione
Conviene installare un tool per tenere traccia dei cambiamenti apportati ai file di configurazione del server e per poter ripristinare i file modificati, in caso di errori di configurazione.
Il tool suggerito si chiama etckeeper; per l'installazione rimandiamo alla guida apposita: Monitorare i cambiamenti della configurazione
Impostazione dell'orario
Può essere conveniente utilizzare un server NTP, in modo che la sincronizzazione dell'ora sia gestita automaticamente:
# apt-get install ntp
Il pacchetto installerà un demone che resterà in funzione e si occuperà di sincronizzare l'orologio del server con un server NTP mondiale.
Il file di configurazione del demone è /etc/ntp.conf
. In questo file vanno specificati i server NTP da contattare per la sincronizzazione, ad esempio ntp1.ien.it o ntp2.ien.it.
Per maggiori informazioni: Impostare data e ora
Messaggio personalizzato al login
Può essere utile far apparire un messaggio personalizzato al momento del login via SSH.
Per fare questo si segua la guida apposita: Messaggio del giorno
Alcuni programmi utili
Installiamo alcuni tool che possono tornare utili e un MTA per inviare le mail di sistema al nostro account di posta:
# apt-get install exim4 mc p7zip-full htop wipe needrestart
# nano /etc/aliases ... root:la_mia_mail@email.it
# newaliases
- Programmi e di tools da linea di comando: Programmi senza interfaccia grafica
- Cowsay. Non è propriamente un programma utile, ma è carino da avere: Cowsay
- Webmin. Per amministrare il server via HTTPS: Webmin
- Shell in a Box. Per accedere alla shell del server via browser: Shellinabox
Monitoraggio e sicurezza
- Monitorare il traffico sulle interfacce di rete: VnStat
- Protezione da attacchi e accessi non autorizzati: Fail2Ban
- Protezione da malware, rootkit e altre schifezze: Protezione da malware
- Strumenti per il monitoraggio del server: Monitoraggio
- Ottimizzazione delle performance di MySQL: Ottimizzare MySQL
Operazioni conclusive
Dopo aver installato tutti i demoni che ci occorrono sulla macchina (Apache, MySQL, FTP, Postfix, Samba, etc), consiglio di affrontare la gestione dei log e del monitoraggio dello stato del sistema.
Gestione dei Log
In un server di produzione, i log possono arrivare a occupare svartiati GB di spazio e diventa quindi fondamentale avere uno strumento per gestirli correttamente.
Installiamo quindi Logrotate:
# apt install logrotate
Nella directory /etc/logrotate.d
possiamo trovare tutti i file di configurazione per la gestione dei log dei singoli demoni.
I file sono costruiti tutti nella stessa maniera:
# Indicazione del log /var/log/apache2/* { # Rotazione ogni settimana (oppure daily) weekly # Vengono mantenuti gli ultimi 3 log rotate 3 # La rotazione scatta solo se il file pesa almeno 10M size 10M # I file rotati verranno compressi compress delaycompress # Il nuovo file avrà questi permessi e questi owner create 640 root adm }
L'installazione di Logrotate automaticamente imposta anche uno script in /etc/cron.daily
che eseguirà logrotate giornalmente, alle 6 di ogni mattina.
Per monitorare i log può essere utile affidarsi a sistemi automatizzati: Monitorare i log di sistema con Logwatch
Impostazione backup e script personalizzati
Al termine dell'installazione e della configurazione dei demoni e dei servizi, è utile impostare degli script di backup. A questo proposito possono essere utili le seguenti guide:
- Backup di MySQL: Backup di MySQL
- Utilizzo del servizio Cron: Scheduling con Cron
Impostazioni tool di monitoraggio e firewall
Come ultima cosa, impostiamo alcuni tool di monitoraggio e, per ultimo, le regole del firewall del server:
- Monitoraggio dei demoni con Monit: Monit
- Fail2ban: impedire attacchi brute-force ai nostri server
- Monitorare un server con OpenNMS
- Monitorare i log di sistema con Graylog2
- Monitoraggio della banda: Monitorare la banda con BitmeterOS
- Impostazione firewall con iptables: Firewall con IPTables
Guida scritta da: ferdybassi | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |