Chapitre 6. Applications réseau

# Chapitre 6. Applications réseau

Après avoir établi une connexion réseau (consultez Chapitre 5, Configuration du réseau), vous pouvez faire tourner diverses applications réseau.

| Astuce
Pour un guide spécifique de Debian moderne sur les infrastructures réseaux, lisez Le Livre de l'Administrateur Debian - Infrastructure réseau.

| Astuce
Si vous avez activé la « validation en deux étapes » avec certains fournisseurs de services Internet, vous devez obtenir un mot de passe d’application pour accéder aux services POP et SMTP à partir de votre programme. Vous devrez peut-être valider votre adresse IP d’hôte à l’avance.

## 6.1. Navigateurs Web

Il y a de nombreux paquets de navigateurs web permettant d’accéder à des contenus distants avec le protocole de transfert hypertexte (« Hypertext Transfer Protocol (HTTP) »).

Tableau 6.1. Liste de navigateurs web

paquet | popularité | taille | type | description du navigateur web
--- | --- | --- | --- | ---
`chromium` | V:30, I:99 | 316808 | X | Chromium (navigateur libre de Google)
`firefox` | V:16, I:22 | 299491 | , , | Firefox (navigateur libre de Mozilla, uniquement disponible dans Debian Unstable)
`firefox-esr` | V:195, I:421 | 266258 | , , | Firefox ESR (Firefox Extended Support Release = Firefox Support à Long Terme)
`epiphany-browser` | V:2, I:11 | 6666 | , , | GNOME, Epiphany respectant HIG
`konqueror` | V:25, I:112 | 7982 | , , | KDE, Konqueror
`dillo` | V:0.5, I:4.3 | 2203 | , , | Dillo (navigateur léger, basé sur FLTK)
`w3m` | V:10, I:134 | 2853 | texte | w3m
`lynx` | V:29, I:448 | 2031 | , , | Lynx
`elinks` | V:3, I:16 | 1791 | , , | ELinks
`links` | V:2, I:21 | 2321 | , , | Links (texte uniquement)
`links2` | V:0.8, I:8.6 | 5466 | graphique | Links (graphique en mode console sans X)

### 6.1.1. Usurpation de la chaîne User-Agent

Pour accéder à certains sites web excessivement restrictifs, vous devrez peut-être usurper la chaîne User-Agent renvoyée par le programme de navigation web. Consulter :

- documentation web de MDN : userAgent ;
- développeurs de Chrome : Override the user agent string ;
- comment changer votre agent utilisateur ;
- comment modifier l'agent utilisateur dans Chrome, Firefox, Safari, etc. ;
- comment changer l'agent utilisateur de votre navigateur sans installer d'extensions ;
- comment changer l’agent utilisateur dans Gnome Web (epiphany).

### 6.1.2. Extension de navigateur

Tous les navigateurs graphiques modernes gèrent le code source basé sur les extensions de navigateur et cela devient normalisé comme extensions web.

## 6.2. Le système de courrier électronique

Cette section se concentre sur les postes de travail mobiles typiques utilisant des connexions Internet de qualité grand public.

| Attention
Si vous êtes sur le point de configurer le serveur de courrier pour échanger directement du courrier avec Internet, vous feriez mieux de lire ce document élémentaire.

### 6.2.1. Bases du courrier électronique

Un courrier électronique est composé de trois parties : l’enveloppe, l’en-tête et le corps du message.

- Les renseignements « To » et « From » de l’enveloppe sont utilisés par le SMTP pour délivrer le courrier électronique (« From » dans l’enveloppe indique l’adresse de rebond, « From_ », etc.).

- Les renseignements « To » et « From » de l’en-tête sont affichés par le client de messagerie (même s’ils sont généralement identiques à ceux de l’enveloppe, ce n’est pas toujours le cas).

- Le format de courriel pour les données d’en-tête et de corps est étendu par Multipurpose Internet Mail Extensions (MIME) du texte ASCII brut à d’autres codages de caractères, ainsi qu’aux pièces jointes audio, vidéo, images et programmes d’application.

Les clients de messagerie, basés sur une interface graphique complète, offrent toutes les fonctions suivantes en utilisant une configuration intuitive.

- Il crée et interprète les données de l'en-tête et du corps du message en utilisant Multipurpose Internet Mail Extensions (MIME) pour traiter le type et l'encodage des données du contenu.

- Il s'authentifie auprès des serveurs SMTP et IMAP du FAI à l'aide de l'ancienne authentification d'accès basic ou celle moderne OAuth 2.0. (Pour OAuth 2.0, définissez-le à l’aide des paramètres de l'environnement du bureau. Par exemple, « Paramètres » -> « Comptes en ligne ».)

- Il envoie le message au serveur SMTP hôte du FAI écoutant le port de soumission de message (587).

- Il reçoit le message stocké sur le serveur du FAI à partir du port TLS/IMAP4 (993).

- Il peut filtrer les courriels en fonction de leurs attributs.

- Il peut offrir des fonctionnalités supplémentaires : contacts, agenda, tâches, mémos.

Tableau 6.2. Liste d’agents de courrier électronique de l’utilisateur (MUA)

paquet | popularité | taille | type
--- | --- | --- | ---
`evolution` | V:25, I:225 | 489 | X GUI program (GNOME, groupware suite)
`thunderbird` | V:41, I:103 | 274581 | programme d'interface graphique X (GTK, Mozilla Thunderbird)
`kmail` | V:43, I:103 | 25265 | programme X avec une interface graphique (KDE)
`mutt` | V:11, I:86 | 7334 | programme de terminal en mode caractère, probablement utilisé avec `vim`
`mew` | V:0.01, I:0.16 | 2319 | programme de terminal en mode caractères sous `(x)emacs`

### 6.2.2. Limite du service de courriels moderne

Les services de courriel modernes sont soumis à certaines limitations afin de minimiser l'exposition aux problèmes de pourriel (courriel non désiré et non sollicité).

- Il n’est pas réaliste de mettre en œuvre un serveur SMTP sur un réseau grand public pour envoyer de manière fiable un courriel directement vers une machine distante.

- Un courriel peut être rejeté par n'importe quel hôte sur le chemin vers la destination silencieusement, à moins qu'il ne paraisse aussi authentique que possible.

- Il n’est pas réaliste d’espérer qu’un smarthost (relais) unique puisse envoyer des courriels provenant d’adresses de sources de courriel sans lien vers une machine distante de manière fiable.

Cela est dû au fait que :

- les connexions au port SMTP (25) des hôtes desservis par le réseau grand public vers Internet sont bloquées ;

- les connexions du port SMTP (25) vers les hôtes desservis par le réseau grand public à partir d'Internet sont bloquées ;

- les messages sortants des hôtes desservis par le réseau grand public vers Internet ne peuvent être envoyés qu’à travers le port de soumission de message (587) ;

- les techniques anti-pourriels telles queDomainKeys Identified Mail (DKIM), Sender_Policy_Framework (SPF) et Domain-based Message Authentication, Reporting and Conformance (DMARC) sont couramment utilisées pour le filtrage du courrier ;

- le service de DomainKeys Identified Mail peut être fourni pour vos messages envoyés par l’intermédiaire du smarthost ;

- Le relais de courriel peut réécrire l’adresse du courriel source dans l’en-tête du message à celle de votre compte de messagerie sur le relais pour empêcher l’usurpation d’adresse de courriel.

### 6.2.3. Attente du service de courriels historique

Certains programmes sur Debian s'attendent à accéder à la commande `/usr/sbin/sendmail` pour envoyer des courriels comme comportement par défaut ou personnalisé puisque le service de messagerie sur un système UNIX fonctionnait historiquement comme :

- un courriel est créé sous forme de fichier texte ;

- le courriel est transmis à la commande `/usr/sbin/sendmail` ;

- pour l'adresse de destination sur le même hôte, la commande `/usr/sbin/sendmail` effectue la livraison locale du courriel en l'ajoutant au fichier `/var/mail/$username`,

  - commandes qui attendent cette fonctionnalité : `apt-listchanges`, `cron`, `at`, ... ;

- pour l'adresse de destination sur l'hôte distant, la commande `/usr/sbin/sendmail` effectue le transfert à distance du courriel vers l'hôte de destination trouvé par l'enregistrement MX du DNS en utilisant SMTP,

  - commandes qui attendent cette fonctionnalité : `popcon`, `reportbug`, `bts`, ...

### 6.2.4. Agent de transport de courrier électronique (« MTA »)

Les stations de travail mobiles Debian pourront être configurées uniquement avec des clients de messageriecomplets basés sur une interface graphique sans le programme d’agent de transfert de courrier (MTA) après Debian 12 Bookworm.

Debian installait traditionnellement un programme MTA pour prendre en charge les programmes attendant la commande `/usr/sbin/sendmail`. Un tel MTA sur les postes de travail mobiles doit respecter la Section 6.2.2, « Limite du service de courriels moderne » et la Section 6.2.3, « Attente du service de courriels historique ».

Pour les postes de travail mobiles, le choix typique de MTA est soit `exim4-daemon-light` ou `postfix` avec son option d'installation telle que « Courriel envoyé par smarthost, reçue par SMTP ou fetchmail » sélectionnée. Ce sont des MTA légers qui respectent "`/etc/aliases`".

| Astuce

Configurer `exim4` pour envoyer le courrier Internet par l'intermédiaire de plusieurs smarthost correspondants pour plusieurs sources d’adresses de courriel n’est pas trivial. Si vous avez besoin d'une telle capacité pour certains programmes, configurez-les pour utiliser `msmtp` qui est facile à configurer pour plusieurs sources d’adresses de courriel. Ensuite, laissez le MTA principal seulement pour une seule adresse e-mail.

Tableau 6.3. Liste de paquets basiques concernant des agents de transport du courriel

paquet | popularité | taille | description
--- | --- | --- | ---
`exim4-daemon-light` | V:207, I:215 | 1768 | Agent de transport de courrier électronique Exim4 (MTA : par défaut dans Debian)
`exim4-daemon-heavy` | V:5.1, I:5.2 | 1950 | Agent de transport de courriel Exim4 (MTA : alternative flexible)
`exim4-base` | V:213, I:221 | 1677 | Documentation d’Exim4 (texte) et fichiers communs
`exim4-doc-html` | I:1.1 | 3798 | Documentation d’Exim4 (html)
`exim4-doc-info` | I:0.57 | 648 | Documentation d’Exim4 (info)
`postfix` | V:103, I:110 | 4268 | Agent de transport de courriel Postfix (MTA : alternative sécurisée)
`postfix-doc` | I:4.6 | 5026 | Documentation de Postfix (html+texte)
`sasl2-bin` | V:5, I:10 | 381 | Implémentation de l’API Cyrus SASL (complément à Postfix pour SMTP AUTH)
`cyrus-sasl2-doc` | I:0.71 | 2140 | Cyrus SASL - documentation
`msmtp` | V:8, I:15 | 822 | MTA léger
`msmtp-mta` | V:6.8, I:8.9 | 139 | MTA léger (extension de compatibilité de sendmail pour `msmtp`)
`nullmailer` | V:7.7, I:8.2 | 483 | MTA simple, pas de courrier local
`ssmtp` | V:4.0, I:6.2 | 134 | MTA simple, pas de courrier local
`sendmail-bin` | V:10, I:11 | 1954 | MTA complet (seulement si vous avez déjà des connaissances)
`git-email` | V:0.4, I:9.9 | 1229 | programme git-send-email(1) pour envoyer une série de courriels de correctif

#### 6.2.4.1. Configuration d’exim4

Pour le courrier d’Internet par l’intermédiaire d’un smarthost, vous (re)configurerez les paquets `exim4-*` comme suit :

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

Choisir « envoi via relais (« smarthost ») - réception SMTP ou fetchmail » : pour « Configuration du serveur de courriel ».

Définir « Nom de courriel du système » à sa valeur par défaut qui est le nom pleinement qualifié (FQDN, consultez Section 5.1.1, « Résolution du nom d’hôte »).

Définir « Liste d’adresses IP où Exim sera en attente de connexions SMTP entrantes » à sa valeur par défaut qui est « 127.0.0.1 ; ::1 ».

Supprimer le contenu de « Autres destinations dont le courriel doit être accepté ».

Supprimer le contenu de « Machines à relayer :».

Définir « dresse IP ou nom d’hôte du relais sortant : à « smtp.hostname.dom:587 ».

Sélectionner « Non » pour « Faut-il cacher le nom local de courriel dans les courriels sortants ? ». (Utiliser plutôt « `/etc/email-addresses` » comme dans Section 6.2.4.3, « Configuration de l’adresse de courriel ».)

Donner à « Faut-il optimiser les requêtes DNS (connexion à la demande) ? » l’une des réponses suivantes :

- « Non » si le système est connecté à Internet au démarrage.

- « Oui » si le système n’est pas connecté à Internet au démarrage.

Définir « Méthode de distribution du courrier local : » à « Format « mbox » dans /var/mail ».

Sélectionner « Oui » pour « Faut-il séparer la configuration dans plusieurs fichiers ? :».

Créer les entrées de mots de passe pour le smarthost en éditant « `/etc/exim4/passwd.client` ».

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

Configurez exim4(8) avec « `QUEUERUNNER='queueonly'` », « `QUEUERUNNER='nodaemon'` », etc., dans « `/etc/default/exim4` » pour minimiser l’utilisation des ressources système (facultatif).

Lancer `exim4` par la commande suivante :

    $ sudo systemctl start exim4

Le nom de machine dans « `/etc/exim4/passwd.client` » ne doit pas être un alias. Vérifiez le nom de machine réel comme suit :

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

J’utilise une expression rationnelle dans « `/etc/exim4/passwd.client` » pour contourner le problème d’alias. SMTP AUTH fonctionne probablement même dans le cas où le FAI déplace la machine pointée par l’alias.

Vous pouvez mettre à jour vous-même la configuration d’`exim4` de la façon suivante :

- Mettre à jour les fichiers de configuration d’`exim4` dans « `/etc/exim4/` ».

  - Créer « `/etc/exim4/exim4.conf.localmacros` » pour configurer les macros et éditer « `/etc/exim4/exim4.conf.template` » (configuration en un seul fichier).

  - Créer de nouveaux fichiers ou éditer des fichiers existants dans les sous-répertoires de « `/etc/exim4/exim4.conf.d` » (configuration séparée en plusieurs fichiers).

- Exécutez « `systemctl reload exim4` ».

| Attention
Le lancement d’`exim4` est long si on a choisi « Non » (valeur par défaut) à la demande « Faut-il optimiser les requêtes DNS (connexion à la demande) ? » lors de la configuration debconf et que le système n’est pas connecté à Internet lors du démarrage.

Veuillez lire le guide officiel se trouvant à « `/usr/share/doc/exim4-base/README.Debian.gz` » et update-exim4.conf(8).

| Avertissement
En pratique, utilisez SMTP avec STARTTLS sur le port 587 ou SMTPS (SMTP au-dessus de SSL) sur le port 465, au lieu de SMTP simple sur le port 25.

#### 6.2.4.2. Configuration de postfix avec SASL

Pour utiliser le courrier électronique d’Internet par l’intermédiaire d’un smarthost, vous devrez d’abord lire la documentation postfix et les pages de manuel importantes.

Tableau 6.4. Liste des pages de manuel importantes de postfix

commande | fonction
--- | ---
postfix(1) | Programme de contrôle de postfix
postconf(1) | Utilitaire de configuration de postfix
postconf(5) | Paramètres de configuration de postfix
postmap(1) | Maintenance des tables de consultation de postfix
postalias(1) | Maintenance de la base de données des alias de postfix

Vous (re)configurez les paquets `postfix` et `sasl2-bin` comme suit :

    $ sudo systemctl stop postfix
    $ sudo dpkg-reconfigure postfix

Choisir « Internet avec smarthost ».

Définissez « machine de relais SMTP (blanc pour aucun): » à « `[smtp.hostname.dom]:587` » et configurez-le de la manière suivante :

    $ 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

Créez les entrées de mots de passe pour le smarthost :

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

Lancez `postfix` comme suit :

    $ sudo systemctl start postfix

Ici, l’utilisation de « `[` » et « `]` » dans le dialogue de `dpkg-reconfigure` et « `/etc/postfix/sasl_passwd` » permet de s’assurer de ne pas vérifier l’enregistrement MX mais d’utiliser directement le nom exact de la machine indiquée. Consultez « Enabling SASL authentication in the Postfix SMTP client » dans « `/usr/share/doc/postfix/html/SASL_README.html` ».

#### 6.2.4.3. Configuration de l’adresse de courriel

Il existe plusieurs fichiers de configuration de l’adresse de courriel pour l’acheminement du courriel, sa diffusion et les agents d’utilisateur.

Tableau 6.5. Liste des fichiers de configuration liés aux adresses de courriel

fichier | fonction | application
--- | --- | ---
`/etc/mailname` | nom de machine par défaut pour le courrier (sortant) | Spécifique à Debian, mailname(5)
`/etc/email-addresses` | usurpation du nom de machine pour le courriel sortant | Spécifique à exim(8), exim4-config_files(5)
`/etc/postfix/generic` | usurpation du nom de machine pour le courriel sortant | Spécifique à postfix(1) specific, activé après l’exécution de la commande postmap(1).
`/etc/aliases` | alias du nom de compte pour le courrier entrant | général, activé après l’exécution de la commande newaliases(1).

Le nom de courriel ( mailname » dans le fichier « `/etc/mailname` » est habituellement un nom de domaine entièrement qualifié (FQDN) qui est résolu vers l’une des adresses IP de la machine. Pour les stations de travail mobiles qui n’ont pas de nom de machine pouvant être résolu par une adresse IP, définissez ce mailname à la valeur donnée par « `hostname -f` ». (C’est un choix sûr et qui fonctionne à la fois avec `exim4-*` et `postfix`.)

| Astuce

Le contenu de « `/etc/mailname` » est utilisé par de nombreux programmes autres que les MTA pour définir leur comportement par défaut. Pour `mutt`, définissez les variables « `hostname` » et « `from` » dans le fichier `~/muttrc` pour passer outre la valeur de mailname. Pour les programmes du paquet `devscripts`, comme bts(1) et dch(1), exportez les variables d’environnement « `$DEBFULLNAME` » et « `$DEBEMAIL` » afin de passer outre cette définition.

| Astuce

Le paquet `popularity-contest` envoie normalement un courriel depuis le compte de l’administrateur avec un nom de domaine pleinement qualifié (FDQN). Vous devez définir `MAILFROM` dans `/etc/popularity-contest.conf` comme c’est décrit dans le fichier `/usr/share/popularity-contest/default.conf`. Sinon, votre courriel sera rejeté par le serveur SMTP sur « smarthost ». Bien que ce soit fastidieux, cette approche est plus sûre que la réécriture par le MTA de l’adresse source pour tous les courriels en provenance de l’administrateur (« root ») et devrait être utilisé pour les autres démons et les scripts des tâches planifiées (« cron ».

Lors de la définition de mailname avec la valeur donnée par « `hostname -f` », l’usurpation de l’adresse source du courrier par le MTA peut être réalisée par l’intermédiaire :

- du fichier « `/etc/email-addresses` » pour exim4(8) comme expliqué dans exim4-config_files(5)

- du fichier « `/etc/postfix/generic` » pour postfix(1) comme expliqué dans generic(5)

Pour `postfix`, les étapes suivantes sont nécessaires :

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

Vous pouvez tester la configuration de l’adresse de courriel de la manière suivante :

- exim(8) avec les options `-brw, -bf, -bF, -bV, …`

- postmap(1) avec l’option `-q`.

| Astuce
Il existe, avec Exim, un certain nombre de programmes utilitaires tels qu’exiqgrep(8) et exipick(8). Consultez « `dpkg -L exim4-base|grep man8/` » pour les commandes disponibles.

#### 6.2.4.4. Opération de base du MTA

Il y a quelques opérations de base du MTA. Certaines peuvent être effectuées à l’aide de l’interface de compatibilité avec sendmail(1).

Tableau 6.6. Liste des opérations de base du MTA

commande exim | commande postfix | description
--- | --- | ---
`sendmail` | `sendmail` | lire les courriels depuis l’entrée standard et les classer pour la diffusion (`-bm`)
`mailq` | `mailq` | afficher la file d’attente des courriels avec leur état et leur identifiant de file d’attente (« queue ID ») (`-bp`)
`newaliases` | `newaliases` | initialiser la base de données des alias (`-I`)
`exim4 -q` | `postqueue -f` | supprimer les courriels en attente (`-q`)
`exim4 -qf` | `postsuper -r ALL deferred; postqueue -f` | supprimer tous les courriels
`exim4 -qff` | `postsuper -r ALL; postqueue -f` | supprimer tous les courriels gelés
`exim4 -Mg queue_id` | `postsuper -h queue_id` | geler un message d’après son identifiant de file d’attente
`exim4 -Mrm queue_id` | `postsuper -d queue_id` | supprimer un message d’après son identifiant de file d’attente
N/A | `postsuper -d ALL` | supprimer tous les messages

| Astuce
Ce peut être une bonne idée de supprimer tous les messages à l’aide d’un script placé dans « `/etc/ppp/ip-up.d/*` ».

## 6.3. Le serveur et les utilitaires d’accès à distance (SSH)

SSH, le « Secure SHell », est la manière sûre de se connecter au travers d’Internet. Une version libre de SSH, appelée OpenSSH, est disponible sous Debian sous forme des paquets `openssh-client` et `openssh-server`.

Pour l’utilisateur, ssh(1) fonctionne comme un telnet(1) intelligent et plus sûr. Contrairement à la commande `telnet`, la commande `ssh` ne s'arrête pas avec le caractère d’échappement de `telnet` (valeur initiale par défaut Ctrl-]).

Tableau 6.7. Liste des serveurs et des utilitaires d’accès à distance

paquet | popularité | taille | outil | description
--- | --- | --- | --- | ---
`openssh-client` | V:657, I:996 | 3521 | ssh(1) | client de l’interpréteur de commandes sécurisé
`openssh-server` | V:772, I:820 | 3594 | sshd(8) | serveur de l’interpréteur de commandes sécurisé
`ssh-askpass` | I:16 | 103 | ssh-askpass(1) | demande à l’utilisateur une phrase de passe pour ssh-add (X natif)
`ssh-askpass-gnome` | V:0.4, I:3.0 | 46 | ssh-askpass-gnome(1) | demande à l’utilisateur d’une phrase de passe pour ssh-add (GNOME)
`ssh-askpass-fullscreen` | V:0.09, I:0.42 | 41 | ssh-askpass-fullscreen(1) | demande à l’utilisateur d’une phrase de passe pour ssh-add (GNOME) de manière jolie
`shellinabox` | V:0.7, I:1.0 | 528 | shellinaboxd(1) | serveur web pour émulateur de terminal VT100 accessible dans un navigateur

Bien que `shellinabox` ne soit pas un programme SSH, il est répertorié ici comme une alternative intéressante pour l’accès au terminal distant.

Consulter également Section 7.9, « Connexion au serveur X » pour la connexion aux programmes clients X distants.

| Attention
Consultez Section 4.6.3, « Mesures de sécurité supplémentaires pour Internet » si votre serveur SSH est accessible depuis Internet.

| Astuce
Utilisez le programme screen(1) pour qu’un processus de l’interpréteur de commandes distant survive à une interruption de la connexion (consultez Section 9.1.2, « Le programme screen »).

### 6.3.1. Bases de SSH

Le démon SSH OpenSSH ne prend en charge que le protocole SSH 2.

Veuillez lire « `/usr/share/doc/openssh-client/README. Debian.gz` », ssh(1), sshd(8), ssh-keygen(1), ssh-add(1) et ssh-agent(1).

| Avertissement
Il ne faut pas que « `/etc/ssh/sshd_not_to_be_run` » soit présent si l’on souhaite faire tourner le serveur OpenSSH. N’activez pas l’authentification basée sur rhost (`HostbasedAuthentication` dans `/etc/ssh/sshd_config`).

Tableau 6.8. Liste des fichiers de configuration de SSH

fichier de configuration | description du fichier de configuration
--- | ---
`/etc/ssh/ssh_config` | valeurs par défauts des paramètres du client SSH, consultez ssh_config(5)
`/etc/ssh/sshd_config` | valeurs par défauts des paramètres du serveur SSH, consultez sshd_config(5)
`~/.ssh/authorized_keys` | clés publiques SSH par défaut utilisées pour se connecter à ce compte sur ce serveur SSH
`~/.ssh/id_rsa` | clé secrète SSH-2 RSA de l’utilisateur
`~/.ssh/id_key-type-name` | clé secrète SSH-2 clé-type-nom telle que `ecdsa`, `ed25519`, ... de l’utilisateur

Ce qui suit permettra de démarrer un connexion ssh(1) depuis un client :

Tableau 6.9. Liste d’exemples de démarrage du client SSH

commande | description
--- | ---
`ssh username@hostname.domain.ext` | connexion avec le mode par défaut
`ssh -v username@hostname.domain.ext` | connexion avec le mode par défaut et les messages de débogage
`ssh -o PreferredAuthentications=password username@hostname.domain.ext` | forcer l’utilisation d’un mot de passe avec SSH version 2
`ssh -t username@hostname.domain.ext passwd` | exécuter le programme `passwd` pour mettre à jour le mot de passe sur un hôte distant

### 6.3.2. Nom d'utilisateur sur l'hôte distant

Si vous utilisez le même nom d'utilisateur sur l'hôte local et l'hôte distant, vous pouvez éviter de taper « `nomutilisateur@` ».

Même si vous utilisez un nom d’utilisateur différent sur la machine locale et la machine distante, vous pouvez l’éliminer en utilisant « `~/.ssh/config` ». Pour le service Salsa de Debian avec le nom de compte « `toto-guest` », vous devrez configurer « `~/.ssh/config` » afin qu’il contienne ceci :

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

### 6.3.3. Se connecter sans mot de passe distant

Il est possible d’éviter de se rappeler les mots de passe des systèmes distants en utilisant « `PubkeyAuthentication` » (protocole SSH-2).

Sur le système distant, définissez les entrées respectives, « `PubkeyAuthentication yes` », dans « `/etc/ssh/sshd_config` ».

Générez ensuite localement les clés d’identification et installez la clé publique sur le système distant en faisant ce qui suit :

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

Vous pouvez ajouter des options aux entrées dans « `~/.ssh/authorized_keys` » pour limiter les hôtes et pour exécuter des commandes spécifiques. Consulter sshd(8) « AUTHORIZED_KEYS FILE FORMAT ».

### 6.3.4. Clients SSH exotiques

Il existe quelques clients SSH libres disponibles pour d’autres plateformes.

Tableau 6.10. Liste des clients SSH libres pour d’autres plateformes

environnement | programme SSH libre
--- | ---
Windows | puTTY (PuTTY : un client libre SSH et Telnet) (GPL)
Windows (cygwin) | SSH dans cygwin (Cygwin : obtenez cette sensation Linux sur Windows) (GPL)
Mac OS X | OpenSSH ; utilise `ssh` dans l’application Terminal (GPL)

### 6.3.5. Configurer ssh-agent

Il est plus sûr de protéger les clés secrètes de votre authentification SSH avec une phrase de passe. Si la phrase de passe n’a pas été définie, utilisez « `ssh-keygen -p` » pour le faire.

Placez votre clé publique SSH (par exemple « `~/.ssh/id_rsa.pub` ») dans « `~/.ssh/authorized_keys` » sur la machine distante en utilisant une connexion basée sur un mot de passe comme décrit ci-dessus.

    $ 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)

Il n’y a plus besoin de mot de passe distant, à partir de maintenant, pour la commande suivante :

    $ scp foo username@remote.host:foo

Pressez ^D pour quitter la session de l’agent ssh.

Pour le serveur X, le script de démarrage normal de Debian exécute `ssh-agent` comme processus-père. Vous n’aurez donc à exécuter `ssh-add` qu’une seule fois. Pour davantage d’informations, veuillez lire ssh-agent(1) et ssh-add(1).

### 6.3.6. Envoi d'un courriel à partir d'un hôte distant

Si vous avez un compte d’interpréteur SSH sur un serveur avec des paramètres DNS appropriés, vous pouvez envoyer un courriel généré sur votre poste de travail sous la forme d’un courriel véritablement envoyé à partir du serveur distant.

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

### 6.3.7. Redirection de port pour un tunnel SMTP/POP3

Pour mettre en place un tube pour se connecter au port 25 du `serveur-distant` depuis le port 4025 de `localhost`, et au port 110 du `serveur-distant` depuis le port 4110 de `localhost` au travers de `ssh`, exécutez ce qui suit sur la machine locale :

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

C’est une manière sécurisée d’effectuer une connexion à des serveurs SMTP / POP3 par Internet. Définissez l’entrée « `AllowTcpForwarding` » à « `yes` » dans « `/etc/ssh/sshd_config` » sur la machine distante.

### 6.3.8. Comment arrêter le système distant par SSH

Vous devez protéger le processus qui effectue « `shutdown -h now` » (consultez Section 1.1.8, « Comment arrêter le système ») de l’arrêt de SSH en utilisant la commande at(1) (consultez Section 9.4.13, « Planifier des tâches qui s’exécutent une fois ») comme suit :

    # echo "shutdown -h now" | at now

Lancer « `shutdown -h now` » dans une sessionscreen(1) (consultez Section 9.1.2, « Le programme screen ») est une autre manière d’effectuer la même chose.

### 6.3.9. Résoudre les problèmes avec SSH

Si vous rencontrez des problèmes, vérifiez les permissions des fichiers de configuration et lancez `ssh` avec l’option « `-v` ».

Utilisez l’option « `-p` » si vous êtes administrateur et que vous rencontrez des problèmes avec un pare-feu. Cela évite l’utilisation des ports 1 — 1023 du serveur.

Si les connexions `ssh` vers un site distant s’arrêtent subitement de fonctionner, cela peut être suite à des bidouilles de l’administrateur, le plus probablement un changement de « `host_key` » pendant une maintenance du système. Après s’être assuré que c’est bien le cas et que personne n’essaie de se faire passer pour la machine distante par une habile bidouille, on peut se reconnecter en supprimant sur la machine locale l’entrée « `host_key` » de « `~/.ssh/known_hosts` ».

## 6.4. Le serveur et les utilitaires d’impression

Dans un ancien système de type Unix, lpd (Line printer daemon) de BSD était la norme et le format d'impression standard des logiciels libres classiques était PS (PostScript). Un système de filtre était utilisé en plus de Ghostscript pour permettre l'impression sur une imprimante non PostScript. Consulter la Section 11.4.1, « Ghostscript ».

Dans un système Debian moderne, le système d'impression CUPS (Common UNIX Printing System) est la norme de facto, et le format d'impression standard des logiciels libres modernes est PDF (Portable Document Format).

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

Grâce à la fonctionnalité d’autoconversion dépendante du format du fichier du système CUPS, passer simplement les données à la commande `lpr` devrait créer la sortie imprimable souhaitée. (Dans CUPS, `lpr` peut être activé en installant la paquet `cups-bsd`.)

Le système Debian possède certains paquets notables de serveurs et d’utilitaires d’impression :

Tableau 6.11. Liste des serveurs et utilitaires d’impression

paquet | popularité | taille | port | description
--- | --- | --- | --- | ---
`lpr` | V:2.0, I:2.3 | 378 | imprimante (515) | BSD lpr/lpd (démon d’impression)
`cups` | V:143, I:442 | 1088 | IPP (631) | Serveur Internet d’impression CUPS
`cups-client` | V:151, I:454 | 429 | , , | commandes d’impression System V pour CUPS : lp(1), lpstat(1), lpoptions(1), cancel(1), lpmove(8), lpinfo(8), lpadmin(8), …
`cups-bsd` | V:32, I:184 | 131 | , , | commandes d’impression BSD pour CUPS : lpr(1), lpq(1), lprm(1), lpc(8)
`printer-driver-gutenprint` | V:17, I:54 | 1117 | Non applicable | pilotes d’impression pour CUPS

| Astuce
Vous pouvez configurer le système CUPS en pointant votre navigateur web sur « http://localhost:631/ ».

## 6.5. Autres serveurs d’applications réseau

Voici d’autres serveurs d’applications réseau :

Tableau 6.12. Liste d’autres serveurs d’applications réseau

paquet | popularité | taille | protocole | description
--- | --- | --- | --- | ---
`telnetd` | V:0.3, I:1.5 | 55 | TELNET | Serveur TELNET
`nfs-kernel-server` | V:47, I:55 | 834 | NFS | Partage de fichiers UNIX
`samba` | V:109, I:122 | 5138 | SMB | Partage de fichiers et d’imprimantes Windows
`netatalk` | V:0.71, I:0.93 | 933 | ATP | Partage de fichiers et d’imprimantes Apple/Mac (AppleTalk)
`proftpd-basic` | V:3.7, I:9.0 | 452 | FTP | Téléchargement généraliste de fichiers
`apache2` | V:179, I:216 | 586 | HTTP | Serveur Web généraliste
`squid` | V:7.8, I:8.5 | 9358 | , , | Serveur mandataire (proxy) web généraliste
`bind9` | V:34, I:37 | 888 | DNS | adresses IP des autres machines
`kea` | I:0.52 | 245 | DHCP | adresse IP du client lui-même

Le protocole « Common Internet File System Protocol » (CIFS) est le même protocole que Server Message Block (SMB), il est largement utilisé par Microsoft Windows.

| Astuce
Consultez Section 4.5.2, « Le système de gestion centralisée moderne » pour l’intégration de systèmes de type serveur.

| Astuce
La résolution de nom d’hôte est normalement fournie par le serveur DNS. Pour l’affectation dynamique d’adresse IP hôte par DHCP, le DNS dynamique peut être configuré pour la résolution de nom d’hôte en utilisant `bind9` et `kea` comme décrit sur la page DDNS du wiki Debian.

| Astuce
L’utilisation d’un serveur mandataire tel que `squid` est bien plus efficace pour économiser de la bande passante que l’utilisation d’un serveur miroir local comportant tout le contenu de l’archive Debian.

## 6.6. Autres clients d’applications réseau

Voici d’autres clients d’applications réseau :

Tableau 6.13. Liste de clients d’applications réseau

paquet | popularité | taille | protocole | description
--- | --- | --- | --- | ---
`netcat-traditional` | V:52, I:904 | 139 | TCP/IP | couteau de l’armée Suisse pour TCP/IP
`netcat-openbsd` | V:20, I:121 | 105 | TCP/IP | TCP/IP swiss army knife with support for IPv6, proxies, and Unix sockets
`openssl` | V:855, I:997 | 2532 | SSL | binaire Secure Socket Layer (SSL) et outils de chiffrement associés
`stunnel4` | V:6.2, I:9.6 | 24 | , , | enrobeur SSL universel
`telnet` | V:11, I:206 | 55 | TELNET | Client TELNET
`nfs-common` | V:147, I:194 | 1140 | NFS | Partage de fichiers UNIX
`smbclient` | V:23, I:205 | 2117 | SMB | Client de partage de fichiers et imprimantes MS Windows
`cifs-utils` | V:32, I:117 | 351 | , , | commande de montage et de démontage de fichiers MS Windows distants
`wget` | V:179, I:982 | 3784 | HTTP et FTP | téléchargement web
`curl` | V:248, I:726 | 512 | , , | , ,
`transmission-gtk` | V:11, I:151 | 6259 | BitTorrent | BitTorrent client (GTK)
`transmission-qt` | V:0.7, I:2.7 | 6213 | , , | BitTorrent client (Qt)
`ktorrent` | V:1.4, I:5.3 | 5031 | , , | BitTorrent client (Qt)
`qbittorrent` | V:9, I:24 | 15262 | , , | BitTorrent client (Qt)
`bind9-host` | V:117, I:940 | 136 | DNS | host(1) de bind9, « `Priority: standard` »
`dnsutils` | V:5, I:156 | 23 | , , | dig(1) de bind, « `Priority: standard` »
`ldap-utils` | V:10, I:55 | 790 | LDAP | obtenir des données d’un serveur LDAP

## 6.7. Le diagnostic des démons du système

Le programme `telnet` permet la connexion manuelle aux démons du système et leur diagnostic.

Pour tester le service POP3 brut, essayez ce qui suit :

    $ telnet mail.ispname.net pop3

Pour tester le service POP3, ayant TLS/SSL activé, de certains fournisseurs d’accès Internet (FAI), vous devrez avoir un client `telnet` ayant TLS/SSL activé en utilisant l’un des paquets `telnet-ssl` ou `openssl`.

    $ telnet -z ssl pop.gmail.com 995

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

Les RFC suivantes proposent les connaissances nécessaires pour chaque démon :

Tableau 6.14. Liste des RFC courantes

RFC | description
--- | ---
rfc1939 et rfc2449 | service POP3
rfc3501 | service IMAP4
rfc2821 (rfc821) | service SMTP
rfc2822 (rfc822) | Format de fichier de courrier électronique
rfc2045 | Extensions multifonctions du courrier Internet « Multipurpose Internet Mail Extensions (MIME) »
rfc819 | service DNS
rfc2616 | service HTTP
rfc2396 | définition d’une URI

L’utilisation des ports est décrite dans « `/etc/services` ».

Chapitre 5. Configuration du réseau |  | Chapitre 7. Système d’interface graphique