Capitolo 6. Applicazioni per la rete

# Capitolo 6. Applicazioni per la rete

Dopo aver stabilito la connessione di rete (vedere Capitolo 5, Impostazione della rete), si possono eseguire svariate applicazioni per la rete.

| Suggerimento
Per una guida moderna sull'infrastruttura di rete specifica per Debian leggere The Debian Administrator's Handbook — Network Infrastructure.

| Suggerimento
Se si abilita la "Verifica in 2 passaggi" con alcuni ISP è necessario ottenere una password di applicazione per accedere ai servizi POP e SMTP dal proprio programma. Può essere necessario approvare l'IP del proprio host in anticipo.

## 6.1. Browser web

Ci sono molti pacchetti per browser web per accedere a contenuti remoti tramite HTTP (Hypertext Transfer Protocol).

Tabella 6.1. Elenco di browser web

pacchetto | popcon | dimensione | tipo | descrizione del browser web
--- | --- | --- | --- | ---
`chromium` | V:30, I:103 | 286985 | per X | Chromium, (browser open-source da Google)
`firefox` | V:15, I:21 | 277820 | " " | Firefox, (browser open-source da Mozilla, disponibile solo in Debian Unstable)
`firefox-esr` | V:214, I:442 | 266490 | " " | Firefox ESR, (Firefox Extended Support Release)
`epiphany-browser` | V:2, I:11 | 2258 | " " | Epiphany, per GNOME, aderente alle HIG
`konqueror` | V:27, I:116 | 7861 | " " | Konqueror, per KDE
`dillo` | V:0, I:4 | 1585 | " " | Dillo, (browser leggero, basato su FLTK)
`w3m` | V:11, I:145 | 2853 | testuali | w3m
`lynx` | V:29, I:457 | 1972 | " " | Lynx
`elinks` | V:2, I:16 | 1791 | " " | ELinks
`links` | V:2, I:21 | 2321 | " " | Links (solo testo)
`links2` | V:0, I:10 | 5466 | grafici | Links (grafica in console senza X)

### 6.1.1. Falsificare la stringa User-Agent

Per potere accedere ad alcuni siti web eccessivamente restrittivi si può dover falsificare la stringa User-Agent restituita dal programma del browser web. Vedere:

- MDN Web Docs: userAgent
- Chrome Developers: Override the user agent string
- How to change your user agent
- Come cambiare User-Agent in Chrome, Firefox, Safari e altri
- Come cambiare l'User Agent del proprio browser senza installare alcuna estensione
- Come cambiare l'User Agent in Gnome Web (epiphany)

| Attenzione
La stringa user-agent falsificata può causare dei brutti effetti collaterali con Java.

### 6.1.2. Estensione per il browser

Tutti i browser con GUI moderni supportano estensioni per il browser basate su codice sorgente e ciò sta diventando standardizzato come estensioni web.

## 6.2. Il sistema di posta

Questa sezione si focalizza su tipiche postazioni di lavoro mobile con connessioni Internet di largo consumo.

| Attenzione
Se si desidera impostare il server di posta per scambiare la posta direttamente con Internet, si dovrebbe leggere una documentazione più dettagliata di questo documentazione base.

### 6.2.1. Nozioni di base sulla posta elettronica

Un messaggio email è formato da tre componenti: la busta del messaggio, l'intestazione del messaggio e il corpo del messaggio.

- Le informazioni "To" e "From" nella busta del messaggio vengono usate dall'SMTP per consegnare l'email. (L'informazione "From" nella busta del messaggio è anche chiamata indirizzo di bounce, From_, ecc.)

- Le informazioni "To" e "From" nell'intestazione del messaggio vengono visualizzate dal programma di posta. (Benché nella maggior parte dei casi questi sono identici a quelli nella busta del messaggio, può non essere sempre così.)

- Il formato dei messaggi di email che copre i dati nell'intestazione e nel corpo è esteso da MIME (Multipurpose Internet Mail Extensions) dal semplice testo ASCII ad altre codifiche di caratteri, oltre ad allegati per audio, video, immagini e programmi applicativi.

I programmi di posta completi basati su GUI offrono tutte le funzioni seguenti utilizzando una configurazione intuitiva basata su GUI.

- Creano e interpretano i dati nell'intestazione e nel corpo del messaggio usando MIME (Multipurpose Internet Mail Extensions) per gestire il tipo di dati e la codifica del contenuto.

- Si autenticano con i server SMTP e IMAP dell'ISP usando la vecchia autenticazione di accesso di base o la moderna OAuth 2.0. (Per OAuth 2.0, impostarla attraverso le impostazioni dell'ambiente desktop. Ad esempio "Impostazioni" -> "Account online".)

- Inviano i messaggi al server smarthost SMTP dell'ISP in ascolto per l'arrivo dei messaggi sulla porta (587).

- Ricevono i messaggi memorizzati sul server dell'ISP dalla porta TLS/IMAP4 (993).

- Possono filtrare la posta in base ai suoi attributi.

- Possono offrire funzionalità aggiuntive: contatti, calendario, attività, promemoria.

Tabella 6.2. Elenco di programmi di posta (MUA)

pacchetto | popcon | dimensione | tipo
--- | --- | --- | ---
`evolution` | V:28, I:240 | 492 | X GUI program (GNOME, groupware suite)
`thunderbird` | V:46, I:109 | 274692 | programma per X con interfaccia utente grafica (GTK, Mozilla Thunderbird)
`kmail` | V:43, I:107 | 25212 | programma per X con interfaccia utente grafica (KDE)
`mutt` | V:11, I:94 | 7118 | programma basato su terminale a caratteri probabilmente usato con `vim`
`mew` | V:0, I:0 | 2319 | programma basato su terminale a caratteri in `(x)emacs`

### 6.2.2. Limitazioni moderne ai servizi di posta

Ai servizi di posta moderni vengono applicate alcune restrizioni al fine di minimizzare l'esposizione ai problemi di spam (posta non desiderata e non richiesta).

- Eseguire un server SMTP su una rete di un utente privato per inviare posta in modo diretto ad host remoti in modo affidabile non è un'ipotesi realistica.

- Un messaggio di posta può essere rifiutato in modo silenzioso da qualsiasi host sul percorso verso la destinazione, a meno che non appaia il più autentico possibile.

- Non è realistico attendersi che un singolo smarthost invii messaggi di indirizzi di posta di origine non correlati ad host remoti in modo affidabile.

Questo perché:

- Le connessioni alla porta SMTP (25) da host serviti dalla connessione alla rete Internet per normali consumatori sono bloccate.

- Le connessioni alla porta SMTP (25) verso host serviti dalla connessione alla rete Internet per normali consumatori sono bloccate.

- I messaggi in uscita da host serviti dalla connessione alla rete Internet per normali consumatori possono essere inviati solamente attraverso la porta di invio dei messaggi (587).

- Tecniche anti-spam come DKIM (DomainKeys Identified Mail) e SPF (Sender_Policy_Framework) e DMARC (Domain-based Message Authentication, Reporting and Conformance) sono usate di frequente per il filtraggio delle email.

- Il servizio DomainKeys Identified Mail può essere fornito per la propria posta inviata attraverso uno smarthost.

- Lo smarthost può riscrivere l'indirizzo di posta dell'origine nell'intestazione del messaggio con l'account di posta dell'utente sullo smarthost per evitare la falsificazione dell'indirizzo email.

### 6.2.3. Attese storiche da un servizio di posta

Alcuni programmi in Debian si aspettano, come impostazione predefinita o personalizzata, di accedere al comando `/usr/sbin/sendmail` per inviare email dato che il servizio di posta in un sistema UNIX storicamente funzionava così:

- Viene creato un messaggio email come file di testo.

- L'email viene passata al comando `/usr/sbin/sendmail`.

- Per un indirizzo di destinazione sullo stesso host il comando `/usr/sbin/sendmail` fa una consegna locale dell'email aggiungendola in fondo al file `/var/mail/$username`.

  - Comandi che si aspettano questa funzionalità: `apt-listchanges`, `cron`, `at`, ...

- Per un indirizzo di destinazione su un host remoto, il comando `/usr/sbin/sendmail` fa un trasferimento remoto usando SMTP dell'email all'host di destinazione trovato dal record MX del DNS.

  - Comandi che si aspettano questa funzionalità: `popcon`, `reportbug`, `bts`, ...

### 6.2.4. Agente di trasporto della posta (MTA)

Le macchine Debian portatili possono essere configurate semplicemente con programmi di posta completi con GUI senza un programma MTA (agente di trasferimento posta) a partire da Debian 12 Bookworm.

Debian tradizionalmente installava un programma MTA per supportare i programmi che si aspettano il comando `/usr/sbin/sendmail`. Un tale MTA in una macchina portatile deve vedersela con Sezione 6.2.2, «Limitazioni moderne ai servizi di posta» e Sezione 6.2.3, «Attese storiche da un servizio di posta».

Per le postazioni di lavoro mobile, la scelta tipica per un MTA è `exim4-daemon-light` o `postfix` con selezionata la loro opzione di installazione tipo "Mail inviata via smarthost; ricevuta con SMTP o fetchmail". Questi sono MTA leggeri che rispettano "`/etc/aliases`".

| Suggerimento
Configurare `exim4` per inviare la posta Internet usando smarthost multipli che corrispondono a indirizzi email di origine multipli non è banale. Se è necessaria questa funzionalità per alcuni programmi, impostarli per utilizzare `msmtp` che è facile da configurare per indirizzi email di origine multipli. Poi lasciare l'MTA principale solo per un singolo indirizzo email.

Tabella 6.3. Elenco di pacchetti base relativi ai server di trasporto della posta

pacchetto | popcon | dimensione | descrizione
--- | --- | --- | ---
`exim4-daemon-light` | V:219, I:226 | 1649 | agente di trasporto della posta Exim4 (MTA predefinito in Debian)
`exim4-daemon-heavy` | V:5, I:5 | 1814 | agente di trasferimento della posta Exim4 (MTA alternativo flessibile)
`exim4-base` | V:225, I:231 | 1646 | documentazione (formato testo) e file comuni per Exim4
`exim4-doc-html` | I:1 | 3798 | documentazione per Exim4 (in formato HTML)
`exim4-doc-info` | I:0 | 648 | documentazione per Exim4 (in formato info)
`postfix` | V:106, I:112 | 4003 | agente di trasferimento della posta Postfix (MTA, alternativa sicura)
`postfix-doc` | I:4 | 4841 | documentazione per Postfix (formati HTML e testo)
`sasl2-bin` | V:4, I:10 | 368 | implementazione dell'API SASL Cyrus (di supporto a Postfix per SMTP AUTH)
`cyrus-sasl2-doc` | I:0 | 2142 | SASL Cyrus - documentazione
`msmtp` | V:7, I:13 | 811 | MTA leggero
`msmtp-mta` | V:5, I:7 | 136 | MTA leggero (estensione per la compatibilità con sendmail per `msmtp`)
`esmtp` | V:0, I:0 | 123 | MTA leggero
`esmtp-run` | V:0, I:0 | 27 | MTA leggero (estensione per la compatibilità con sendmail per `esmtp`)
`nullmailer` | V:7, I:8 | 483 | MTA ridotto, niente posta locale
`ssmtp` | V:4, I:6 | 133 | MTA ridotto, niente posta locale
`sendmail-bin` | V:10, I:11 | 1959 | MTA completo (solo se si ha già familiarità con esso)
`courier-mta` | V:0, I:0 | 2674 | MTA completo (interfaccia web, ecc.)
`git-email` | V:0, I:10 | 1187 | il programma `git-send-email`(1) per inviare email con serie di patch

#### 6.2.4.1. La configurazione di exim4

Per la posta di Internet attraverso uno smarthost, riconfigurare i pacchetti `exim4-*` nel modo seguente.

    $ sudo systemctl stop exim4
    $ sudo dpkg-reconfigure exim4-config

Selezionare "posta inviata tramite «uno smarthost», ricevuta via SMTP o fetchmail" per "Tipo di configurazione del sistema di posta".

Impostare "Mail name del sistema:" al suo valore predefinito come FQDN (vedere Sezione 5.1.1, «Risoluzione dei nomi di host»).

Impostare "indirizzi IP sui quali attendere connessioni SMTP in ingresso:" al suo valore predefinito "127.0.0.1 ; ::1".

Svuotare il contenuto di "Altre destinazioni per conto delle quali accettare posta:".

Svuotare il contenuto di "Sistemi per i quali fare il "relay":".

Impostare l'"Indirizzo IP o nome host dello smarthost per la posta in uscita:" a "smtp.hostname.dom:587".

Selezionare "No" per "Omettere il mail name locale dai messaggi in uscita?". (Usare invece "`/etc/email-addresses`" come in Sezione 6.2.4.3, «La configurazione dell'indirizzo di posta».)

Rispondere a "Mantenere al minimo il numero di richieste DNS (Dial-on-Demand)?" in uno dei modi seguenti.

- "No", se il sistema è connesso ad Internet durante l'avvio.

- "Sì", se il sistema non è connesso ad Internet durante l'avvio.

Impostare "Modalità di consegna per la posta locale:" a "Formato mbox in /var/mail/".

Selezionare "Sì" per "Dividere la configurazione in molti piccoli file?:".

Creare voci per la password dello smarthost modificando il file "`/etc/exim4/passwd.client`".

    $ sudo vim /etc/exim4/passwd.client
     ...
    $ cat /etc/exim4/passwd.client
    ^smtp.*\.hostname\.dom:username@hostname.dom:password

Configurare `exim4`(8) con "`QUEUERUNNER='queueonly'`", "`QUEUERUNNER='nodaemon'` ecc. in "`/etc/default/exim4`" per minimizzare l'uso delle risorse di sistema (opzionale).

Avviare `exim4` con il comando seguente.

    $ sudo systemctl start exim4

Il nome host in "`/etc/exim4/passwd.client`" non dovrebbe essere l'alias. Si può controllare il vero nome host nel modo seguente.

    $ host smtp.hostname.dom
    smtp.hostname.dom is an alias for smtp99.hostname.dom.
    smtp99.hostname.dom has address 123.234.123.89

Per aggirare il problema degli alias, io uso espressioni regolari nel file "`/etc/exim4/passwd.client`" SMTP AUTH probabilmente funziona anche se il fornitore di servizi Internte sposta l'host a cui punta l'alias.

Si può aggiornare manualmente la configurazione di `exim4` facendo quanto segue:

- Aggiornare i file di configurazione di `exim4` in "`/etc/exim4/`".

  - Creare "`/etc/exim4/exim4.conf.localmacros`" per impostare le MACRO e modificare "`/etc/exim4/exim4.conf.template`". (Configurazione non suddivisa.)

  - Creare nuovi file o modificare quelli esistenti nelle sottodirectory "`/etc/exim4/exim4.conf.d`". (Configurazione suddivisa.)

- Eseguire "`systemctl reload exim4`".

| Attenzione
Se si è scelta la ripsosta "No" (risposta predefinita) per la domanda di debconf "Mantenere al minino il numero di richieste DNS (Dial-on-Demand)?" ed il sistema non è connesso ad Internet, l'avvio di `exim4` può richiedere un tempo molto lungo.

Leggere la guida ufficiale in "`/usr/share/doc/exim4-base/README.Debian.gz`" e `update-exim4.conf`(8).

| Avvertimento
In base a tutte le considerazioni pratiche, usare SMTP con STARTTLS sulla porta 587 o SMTPS (SMTP via SSL) sulla porta 465, invece del semplice SMTP sulla porta 25.

#### 6.2.4.2. La configurazione di Postfix con SASL

Per la posta Internet via smarthost, si dovrebbe come prima cosa leggere la documentazione di Postfix e le pagine man principali.

Tabella 6.4. Elenco delle pagine di manuale di Postfix importanti

comando | funzione
--- | ---
`postfix`(1) | programma di controllo di Postfix
`postconf`(1) | utilità di configurazione per Postfix
`postconf`(5) | parametri di configurazione di Postfix
`postmap`(1) | gestione delle tabelle di consultazione di Postfix
`postalias`(1) | gestione del database degli alias di Postfix

Si possono (ri)configurare i pacchetti `postfix` e `sasl2-bin` nel modo seguente.

    $ sudo systemctl stop postfix
    $ sudo dpkg-reconfigure postfix

Scegliere "Internet con smarthost".

Impostare "relay host SMTP (vuoto per nessuno):" a "`[smtp.hostname.dom]:587`" e configurarlo nel modo seguente.

    $ sudo postconf -e 'smtp_sender_dependent_authentication = yes'
    $ sudo postconf -e 'smtp_sasl_auth_enable = yes'
    $ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
    $ sudo postconf -e 'smtp_sasl_type = cyrus'
    $ sudo vim /etc/postfix/sasl_passwd

Creare le voci con le password per lo smarthost.

    $ cat /etc/postfix/sasl_passwd
    [smtp.hostname.dom]:587     username:password
    $ sudo postmap hush:/etc/postfix/sasl_passwd

Avviare `postfix` con il comando seguente.

    $ sudo systemctl start postfix

In questo caso l'uso di "`[`" e "`]`" nel dialogo di `dpkg-reconfigure` e in "`/etc/postfix/sasl_passwd`" assocura che non venga controllato il record MX, ma usato direttamente l'esatto nome host specificato. Vedere "Abilitare l'autenticazione SASL nel client SMTP di Postfix" in "`/usr/share/doc/postfix/html/SASL_README.html`".

#### 6.2.4.3. La configurazione dell'indirizzo di posta

Ci sono diversi file di configurazione dell'indirizzo di posta per gli strumenti di trasporto della posta, di consegna e per i programma di posta.

Tabella 6.5. Elenco dei file di configurazione correlati all'indirizzo di posta

file | funzione | applicazione
--- | --- | ---
`/etc/mailname` | nome host predefinito per la posta (in uscita) | specifico di Debian, `mailname`(5)
`/etc/email-addresses` | sostituzione del home host per la posta in uscita | specifico di `exim`(8), `exim4-config_files`(5)
`/etc/postfix/generic` | sostituzione del home host per la posta in uscita | specifico di `postfix`(1), attivato dopo l'esecuzione del comando `postmap`(1)
`/etc/aliases` | alias dei nomi degli account per la posta in entrata | generale, attivato dopo l'esecuzione del comando `newaliases`(1)

Il nomeposta nel file "`/etc/mailname`" è solitamente un nome di dominio pienamente qualificato (FQDN) che è risolto ad uno degli indirizzi IP dell'host. Per le postazioni mobili che non hanno un nome host con un indirizzo IP risolvibile, impostare questo nomemail al valore di "`hostname -f`". (Questa è una scelta sicura e funziona sia per `exim4-*` sia per `postfix`.)

| Suggerimento
Il contenuto di "`/etc/mailname`" è usato da molti programmi non MTA per determinare il loro comportamento predefinito. Per `mutt`, impostare le variabili "`hostname`" e `from`" nel file `~/muttrc` per sovrascrivere il valore di mailname. Per i programmi nel pacchetto `devscripts`, come `bts`(1) e `dch`(1), esportare le variabili d'ambiente "`$DEBFULLNAME`" e "`$DEBEMAIL`" per sovrascriverlo.

| Suggerimento

Il pacchetto `popularity-contest` normalmente invia posta dall'account di root con FQDN. È necessario impostare `MAILFROM` in `/etc/popularity-contest.conf` come descritto nel file `/usr/share/popularity-contest/default.conf`. In caso contrario la posta verrà rigettata dal server SMTP dello smarthost. Sebbene sia una scocciatura, questo approccio è più sicuro della riscrittura dell'indirizzo sorgente di tutta la posta di root da parte dell'MTA e dovrebbe essere usato per altri demoni e script cron.

Qunado si imposta mailname al valore di "`hostname -f`", la modifica dell'indirizzo di posta d'origine con il MTA può essere fatta nel modo seguente.

- Usando il file "`/etc/email-addresses`" per `exim4`(8), come spiegato in `exim4-config_files`(5).

- Usando il file "`/etc/postfix/generic`" per `postfix`(8), come spiegato in `generic`(5).

Per `postfix` sono necessarie, in aggiunta, le azioni seguenti.

    # postmap hash:/etc/postfix/generic
    # postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'
    # postfix reload

Si può testare la configurazione dell'indirizzo di posta nel modo seguente.

- per `exim`(8) con le opzioni `-brw, -bf, -bF, -bV, …`

- per `postmap`(1) con l'opzione `-q`.

| Suggerimento
Exim viene fornito con svariati programmi di utilità, come `exiqgrep`(8) e `exipick`(8). Per conoscere i comandi disponibili vedere "`dpkg -L exim4-base|grep man8/`".

#### 6.2.4.4. Operazioni di base degli MTA

Ci sono svariate operazioni di base degli MTA. Alcune possono essere fatte usando l'interfaccia di compatibilità con `sendmail`(1).

Tabella 6.6. Elenco di operazioni base degli MTA

comando exim | comando postfix | descrizione
--- | --- | ---
`sendmail` | `sendmail` | legge la posta dallo standard input e gestisce la consegna (`-bm`)
`mailq` | `mailq` | elenca la coda della posta con stato e ID dei messaggi in coda (`-bp`)
`newaliases` | `newaliases` | inizializza il database degli alias (`-I`)
`exim4 -q` | `postqueue -f` | invia tutta la posta in attesa (`-q`)
`exim4 -qf` | `postsuper -r ALL deferred; postqueue -f` | invia tutta la posta
`exim4 -qff` | `postsuper -r ALL; postqueue -f` | invia anche la posta congelata
`exim4 -Mg id_in_coda` | `postsuper -h id_in_coda` | congela un messaggio in base al suo ID nella coda
`exim4 -Mrm id_in_coda` | `postsuper -d id_in_coda` | rimuove un messaggio in base al suo ID nella coda
N/D | `postsuper -d ALL` | rimuove tutti i messaggi

| Suggerimento
Può essere una buona idea far inviare tutta la posta da uno script in "`/etc/ppp/ip-up.d/*`".

## 6.3. Il server e le utilità per l'accesso remoto (SSH)

SSH (Secure SHell) è il metodo sicuro per connettersi in Internet. Una versione libera di SSH chiamata OpenSSH è disponibile nei pacchetti Debian `openssh-client` e `openssh-server`.

Per l'utente `ssh`(1) funziona come un `telnet`(1) più intelligente e più sicuro. A differenza del comando `telnet`, `ssh` non si interrompe a seguito del carattere di escape di `telnet` (impostazione predefinita iniziale CTRL-]).

Tabella 6.7. Elenco dei server e delle utilità per l'accesso remoto

pacchetto | popcon | dimensione | strumento | descrizione
--- | --- | --- | --- | ---
`openssh-client` | V:898, I:996 | 5133 | `ssh`(1) | client SSH
`openssh-server` | V:745, I:804 | 3502 | `sshd`(8) | server SSH
`ssh-askpass` | I:17 | 103 | `ssh-askpass`(1) | chiede all'utente una passphrase per ssh-add (X semplice)
`ssh-askpass-gnome` | V:0, I:3 | 215 | `ssh-askpass-gnome`(1) | chiede all'utente una passphrase per ssh-add (GNOME)
`ssh-askpass-fullscreen` | V:0, I:0 | 41 | `ssh-askpass-fullscreen`(1) | chiede all'utente una passphrase per ssh-add (GNOME) con abbellimenti aggiuntivi
`shellinabox` | V:0, I:1 | 525 | `shellinaboxd`(1) | server web per emulatore di terminale VT100 accessibile dal browser

Sebbene `shellinabox` non sia un programma SSH, è elencato qui come alternativa interessante per l'accesso remoto a terminale.

Vedere anche Sezione 7.9, «Connessione a server X» per le connessioni a programmi client X remoti.

| Attenzione
Se il proprio SSH è accessibile da Internet, vedere Sezione 4.6.3, «Misure aggiuntive di sicurezza per Internet».

| Suggerimento
Per permettere al processo della shell remota di sopravvivere all'interruzione della connessione, usare il programma `screen`(1) (vedere Sezione 9.1.2, «Il programma screen»).

### 6.3.1. Nozioni di base su SSH

Il demone SSH OpenSSH ha solamente il supporto per il protocollo SSH.

Leggere "`/usr/share/doc/openssh-client/README.Debian.gz`", `ssh`(1), `sshd`(8), `ssh-keygen`(1), `ssh-add`(1) e `ssh-agent`(1).

| Avvertimento
Se si desidera eseguire il server OpenSSH, non deve esistere il file "`/etc/ssh/sshd_not_to_be_run`". Non abilitare l'autenticazione basata su rhost (`HostbasedAuthentication` in `/etc/ssh/sshd_config`).

Tabella 6.8. Elenco dei file di configurazione per SSH

file di configurazione | descrizione del file di configurazione
--- | ---
`/etc/ssh/ssh_config` | impostazioni predefinite per il client SSH, vedere `ssh_config`(5)
`/etc/ssh/sshd_config` | impostazioni predefinite per il server SSH, vedere `ssh_config`(5)
`~/.ssh/authorized_keys` | chiavi SSH pubbliche predefinite che i client usano per connettersi a questo account su questo server SSH
`~/.ssh/id_rsa` | chiave RSA SSH-2 segreta dell'utente
`~/.ssh/id_nome-tipo-chiave` | chiave SSH-2 segreta nome-tipo-chiave come `ecdsa`, `ed25519`, ... dell'utente

I comandi seguenti avviano una connessione `ssh`(1) da un client.

Tabella 6.9. Elenco di esempi di avvio di client SSH

comando | descrizione
--- | ---
`ssh nomeutente@nomehost.dominio.ext` | connette nella modalità predefinita
`ssh -v nomeutente@nomehost.dominio.ext` | connette nella modalità predefinita con messaggi di debug
`ssh -o PreferredAuthentications=password nomeutente@nomehost.dominio.ext` | forza l'uso di password con SSH versione 2
`ssh -t nomeutente@nomehost.dominio.ext passwd` | esegue il programma `passwd` per aggiornare la password su un host remoto

### 6.3.2. Nome utente sull'host remoto

Se si usa lo stesso nome utente sull'host locale e su quello remoto, si può evitare di digitare "`nomeutente@`".

Anche se si usa un nome utente diverso nell'host locale rispetto a quello remoto, si può evitare di digitare quella parte usando "`~/.ssh/config`". Per il servizio Debian Salsa con nome account "`pippo-guest`", impostare "`~/.ssh/config`" in modo che contenga quanto segue.

    Host salsa.debian.org people.debian.org
    User foo-guest

### 6.3.3. Connettersi senza password remote

Si può evitare di doversi ricordare le password per sistemi remoti usando "`PubkeyAuthentication`" (protocollo SSH-2).

Sul sistema remoto impostare in "`/etc/ssh/sshd_config`" le rispettive voci "`PubkeyAuthentication yes`".

Generare localmente le chiavi di autenticazione ed installare la chiave pubblica sul sistema remoto con i comandi seguenti.

    $ ssh-keygen -t rsa
    $ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"

Si possono aggiungere opzioni alle voci in "`~/.ssh/authorized_keys`" per limitare gli host e per eseguire comandi specifici. Vedere "AUTHORIZED_KEYS FILE FORMAT" in `sshd`(8).

### 6.3.4. Gestire client SSH estranei

Sono disponibili alcuni client SSH liberi per altre piattaforme.

Tabella 6.10. Elenco di client SSH per altre piattaforme

ambiente | programma ssh libero
--- | ---
Windows | puTTY (PuTTY: un client SSH e Telnet libero) (GPL)
Windows (cygwin) | SSH in cygwin (Cygwin: l'esperienza Linux, in Windows) (GPL)
Mac OS X | OpenSSH; usare `ssh` nell'applicazione Terminale (GPL)

### 6.3.5. Impostare ssh-agent

È meglio per ragioni di sicurezza proteggere la propria chiave segreta di autenticazione SSH con una passphrase. Se non è già stata impostata una passphrase usare "`ssh-keygen -p`" per farlo.

Mettere la propria chiav SSH pubblica (ad esempio "`~/.ssh/id_rsa.pub`") in "`~/.ssh/authorized_keys`" su un host remoto usando una connessione all'host remoto basata su password, come descritto in precedenza.

    $ ssh-agent bash
    $ ssh-add ~/.ssh/id_rsa
    Enter passphrase for /home/username/.ssh/id_rsa:
    Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

Per il comando successivo non sarà più necessaria da questo momento la password remota.

    $ scp foo username@remote.host:foo

Premere ~D per terminare la sessione ssh-agent.

Per il server X, il normale script di avvio Debian esegue `ssh-agent` come processo genitore. Perciò è necessario eseguire `ssh-add` una volta sola. Per ulteriori informazioni, leggere `ssh-agent`(1) e `ssh-add`(1).

### 6.3.6. Inviare un messaggio di posta da un host remoto

Se si ha un account di shell SSH su un server con impostazioni DNS appropriate, si può inviare un messaggio di posta generato sulla propria postazione di lavoro come email genuinamente inviata dal server remoto.

    $ ssh username@example.org /usr/sbin/sendmail -bm -ti -f "username@example.org" < mail_data.txt

### 6.3.7. Forwarding della porta per tunnel SMTP/POP3

Per stabilire una pipe per connettersi alla porta 25 del `server-remoto` dalla porta 4025 dell'`host locale` e alla porta 110 del `server-remoto` dalla porta 4110 dell'`host locale` attraverso `ssh`, eseguire sull'host locale il comando seguente.

    # ssh -q -L 4025:remote-server:25 4110:remote-server:110 username@remote-server

Questo è un metodo sicuro di creare connessioni a server SMTP/POP3 in Internet. Impostare nel file "`/etc/ssh/sshd_config`" dell'host remoto la voce "`AllowTcpForwarding`" a "`yes`".

### 6.3.8. Spegnere il sistema remoto su SSH

È necessario proteggere il processo che esegue "`shutdown -h now`" (vedere Sezione 1.1.8, «Come spegnere il sistema») dalla terminazione di SSH usando il comando `at`(1) (vedere Sezione 9.4.13, «Pianificare compiti da eseguire una volta sola») nel modo seguente.

    # echo "shutdown -h now" | at now

Eseguire "`shutdown -h now`" in una sessione `screen`(1) (vedere Sezione 9.1.2, «Il programma screen») è un altro modo di ottenere lo stesso risultato.

### 6.3.9. Risolvere il problemi con SSH

Se si hanno problemi, controllare i permessi dei file di configurazione ed eseguire `ssh` con l'opzione "`-v`".

Se si è root e si hanno problemi con un firewall usare l'opzione "`-p`"; questo evita l'uso delle porte 1 - 1023 del server.

Se le connessioni `ssh` ad un sito remoto smettono di funzionare improvvisamente, potrebbe essere a causa di modifiche fatte dall'amministratore di sistema, molto probabilmente cambiamenti in "`host-key`" durante l'amministrazione del sistema. Dopo essersi accertati che questa sia davvero la causa e che nessuna stia cercando di falsificare l'host remoto con qualche trucchetto, si può riottenere una connessione rimuovendo la voce "`host-key`" dal file "`~/.ssh/known_hosts`" sull'host locale.

## 6.4. Server ed utilità per la stampa

Nei vecchi sistemi in stile Unix, il demone di stampa in linea (lpd) BSD era lo standard e il formato di stampa standard del software libero classico era PostScript (PS). Un sistema di filtri veniva usato insieme a Ghostscript per permettere la stampa su stampanti non-PostScript. Vedere Sezione 11.4.1, «Ghostscript».

Nei sistemi Debian moderni, Common UNIX Printing System (CUPS) è lo standard di fatto e il formato standard per la stampa nel software libero moderno è Portable Document Format (PDF).

The CUPS uses Internet Printing Protocol (IPP). The IPP is the cross-platform de facto standard for remote printing with bi-directional communication capability.

Grazie alla funzionalità di auto-conversione in base al formato dei file del sistema CUPS, il semplice passaggio di qualsiasi tipo di dati al comando `lpr` dovrebbe generare l'output di stampa atteso. (In CUPS, il comando `lpr` può essere abilitato installando il pacchetto `cups-bsd`.)

Il sistema Debian ha alcuni pacchetti degni di nota per ciò che riguarda i server e le utilità di stampa

Tabella 6.11. Elenco di server e utilità di stampa

pacchetto | popcon | dimensione | porta | descrizione
--- | --- | --- | --- | ---
`lpr` | V:2, I:2 | 378 | printer (515) | lpr/lpd BSD (Line printer daemon, demone di stampa in linea)
`cups` | V:118, I:460 | 1092 | IPP (631) | server CUPS di stampa Internet
`cups-client` | V:137, I:474 | 433 | " " | comandi System V per la stampa con CUPS: `lp`(1), `lpstat`(1), `lpoptions`(1), `cancel`(1), `lpmove`(8), `lpinfo`(8), `lpadmin`(8), …
`cups-bsd` | V:36, I:194 | 131 | " " | comandi BSD per la stampa con CUPS: `lpr`(1), `lpq`(1), `lprm`(1), `lpc`(8)
`printer-driver-gutenprint` | V:13, I:61 | 1122 | Non applicabile | driver di stampa per CUPS

| Suggerimento
Si può configurare il sistema CUPS indirizzando il proprio browser web all'indirizzo "http://localhost:631/".

## 6.5. Altri server di rete

Ecco un elenco di altri server applicativi di rete.

Tabella 6.12. Elenco di altri server applicativi di rete

pacchetto | popcon | dimensione | protocollo | descrizione
--- | --- | --- | --- | ---
`telnetd` | V:0, I:1 | 51 | TELNET | server TELNET
`nfs-kernel-server` | V:45, I:54 | 797 | NFS | condivisione di file Unix
`samba` | V:106, I:121 | 5011 | SMB | condivisione di file e stampanti Windows
`netatalk` | V:0, I:1 | 814 | ATP | condivisione di file e stampanti Apple/Mac (AppleTalk)
`proftpd-basic` | V:4, I:10 | 452 | FTP | scaricamento generico di file
`apache2` | V:186, I:227 | 586 | HTTP | server web generico
`squid` | V:9, I:10 | 9349 | " " | server proxy web generico
`bind9` | V:35, I:39 | 888 | DNS | indirizzo IP per altri host
`isc-dhcp-server` | V:15, I:25 | 6102 | DHCP | indirizzo IP per il client stesso

CIFS (Common Internet File System Protocol) è lo stesso protocollo di SMB (Server Message Block) ed è ampiamente usato da Microsoft Windows.

| Suggerimento
Vedere Sezione 4.5.2, «La moderna gestione centralizzata del sistema» per l'integrazione di sistemi server.

| Suggerimento
La risoluzione del nome di host è solitamente fornita dal server DNS. Per l'indirizzo IP dell'host assegnato dinamicamente da DHCP, può essere impostato un DNS dinamico per la risoluzione del nome host, usando `bind9` e `isc-dhcp-server` come descritto nella pagina del Wiki Debian sui DDNS.

| Suggerimento
L'uso di server proxy come `squid` è molti più efficiente per risparmiare banda rispetto all'uso di server mirror locali con il completo contenuto dell'archivio Debian.

## 6.6. Altri client di rete

Ecco un elenco di altri client applicativi di rete.

Tabella 6.13. Elenco di altri client applicativi di rete

pacchetto | popcon | dimensione | protocollo | descrizione
--- | --- | --- | --- | ---
`netcat-traditional` | V:46, I:904 | 139 | TCP/IP | coltellino svizzero TCP/IP
`netcat-openbsd` | V:21, I:121 | 109 | TCP/IP | TCP/IP swiss army knife with support for IPv6, proxies, and Unix sockets
`openssl` | V:834, I:995 | 2503 | SSL | eseguibile SSL (Secure Socket Layer) e strumenti crittografici relativi
`stunnel4` | V:6, I:9 | 573 | " " | wrapper SSL universale
`telnet` | V:12, I:239 | 51 | TELNET | client TELNET
`nfs-common` | V:145, I:199 | 1137 | NFS | condivisione di file Unix
`smbclient` | V:27, I:209 | 2106 | SMB | client per condivisione di file e stampanti MS Windows
`cifs-utils` | V:31, I:118 | 351 | " " | comandi mount e umount per file MS Windows remoti
`wget` | V:191, I:982 | 3784 | HTTP e FTP | scaricatore per web
`curl` | V:227, I:684 | 507 | " " | " "
`transmission-gtk` | V:13, I:178 | 6245 | BitTorrent | BitTorrent client (GTK)
`transmission-qt` | V:0, I:2 | 6203 | " " | BitTorrent client (Qt)
`ktorrent` | V:1, I:5 | 5167 | " " | BitTorrent client (Qt)
`qbittorrent` | V:9, I:22 | 14384 | " " | BitTorrent client (Qt)
`bind9-host` | V:121, I:940 | 140 | DNS | `host`(1) da bind9, "`Priorità: standard`"
`dnsutils` | I:174 | 23 | " " | `dig`(1) da bind, "`Priorità: standard`"
`isc-dhcp-client` | V:169, I:707 | 2884 | DHCP | ottiene indirizzo IP
`ldap-utils` | V:10, I:58 | 789 | LDAP | ottiene dati da server LDAP

## 6.7. Diagnosi dei demoni di sistema

Il programma `telnet` permette la connessione manuale ai demoni di sistema e la loro diagnosi.

Per testare il semplice servizio POP3 provare il comando seguente.

    $ telnet mail.ispname.net pop3

Per testare il servizio POP3 con TLS/SSL abilitato di alcuni fornitori di servizi Internet, è necessario un client `telnet` con TLS/SSL abilitato fornito dal pacchdetto `telnet-ssl` o `openssl`.

    $ telnet -z ssl pop.gmail.com 995

    $ openssl s_client -connect pop.gmail.com:995

Le seguenti RFC forniscono le conoscenze necessarie per ciascun demone di sistema.

Tabella 6.14. Elenco di RFC popolari

RFC | descrizione
--- | ---
rfc1939 e rfc2449 | servzio POP3
rfc3501 | servizio IMAP4
rfc2821 (rfc821) | servizio SMTP
rfc2822 (rfc822) | formato file di posta
rfc2045 | MIME (Multipurpose Internet Mail Extensions)
rfc819 | servizio DNS
rfc2616 | servizio HTTP
rfc2396 | definizione di URI

L'uso delle porte è descritto in "`/etc/services`".

Capitolo 5. Impostazione della rete |  | Capitolo 7. Sistema GUI