Differences between revisions 41 and 42
Revision 41 as of 2012-08-14 11:30:05
Size: 9898
Editor: StefanEggers
Comment: déposer des trucs qui se trouve dans la configuration par défaut
Revision 42 as of 2012-08-14 11:59:08
Size: 10190
Editor: glenny
Comment: correction typo + ajout de denyhosts
Deletions are marked like this. Additions are marked like this.
Line 28: Line 28:
== Fichiers de configurations == == Fichiers de configuration ==
Line 45: Line 45:
=== avec mot de passe === === Avec mot de passe ===
Line 90: Line 90:
/!\ Utilisation de la dernière version du package DebPkg:openssh-server  disponible permet de se protéger contre l'utilisation des failles de sécurité connues. /!\ Utilisation de la dernière version du package DebPkg:openssh-server disponible permet de se protéger contre l'utilisation des failles de sécurité connues.
Line 104: Line 104:
{i} Les options ''!AllowUsers'' et ''!AllowGroups'' n'amélioreront pas la sécurité d'un serveur SSH. Mais, dans certains cas, leur utilisation permet de résister un peu plus longtemps lors des attaques par '''brut force'''.
{i} Les options ''!AllowUsers'' et ''!AllowGroups'' n'amélioreront pas la sécurité d'un serveur SSH. Mais, dans certains cas, leur utilisation permet de résister un peu plus longtemps lors des attaques par [[http://fr.wikipedia.org/wiki/Attaque_par_force_brute|brut force]].
Line 110: Line 109:
 * DebPkg:denyhosts : comme DebPkg:fail2ban, DebPkg:denyhosts permet de bloquer les adresses ip tenant de forcer une connexion ssh. Mais, contrairement à DebPkg:fail2ban, il n'utilise pas DebPkg:iptables, mais le fichier ''/etc/hosts.deny''.
Line 135: Line 134:
 ''DebPkg:keychain'' fourni par le package DebPkg:keychain est script shell facilitant l'utilisation de l'agent ssh entre plusieurs sessions d'un même utilisateur. En effet, lors du premier lancement, ssh-agent crée un socket permettant la communication vers ssh. Ce socket est référencé uniquement dans l'environnement de la session utilisée lors du démarrage de l'agent. Keychain permet garder la trace de l'agent et de le propager l'accès à cet agent à partir d'autres sessions, ce qui permet de limiter à une seule instance d'ssh-agent par utilisateurs sur une machine donnée.  ''DebPkg:keychain'' fourni par le package DebPkg:keychain est un script shell facilitant l'utilisation de l'agent ssh entre plusieurs sessions d'un même utilisateur. En effet, lors du premier lancement, ssh-agent crée un socket permettant la communication vers ssh. Ce socket est référencé uniquement dans l'environnement de la session utilisée lors du démarrage de l'agent. Keychain permet garder la trace de l'agent et de le propager l'accès à cet agent à partir d'autres sessions, ce qui permet de limiter à une seule instance d'ssh-agent par utilisateurs sur une machine donnée.

Traduction(s): English - Français - Italiano

Introduction

Tout comme Telnet, ssh est un protocole qui permet de se connecter à distance sur une machine à la différence que ssh crypte les données avec l'algorythme RSA. Le problème avec Telnet est que toutes les données qui transitent entre le client et le serveur sont en clair. L'utilisation de ssh permet donc de crypter les données échangées entre le client et le serveur.

Installation

Installation du client

Normalement, le client est installé par défaut, sinon il suffit de saisir en root

aptitude install openssh-client

Installation serveur

La partie serveur permet à des hôtes distants de se connecter à votre système.

aptitude install openssh-server

Fichiers de configuration

Les principaux fichiers de configuration sont dans le répertoire /etc/ssh :

  • ssh_config : fichier de configuration du client

  • sshd_config : fichier de configuration du serveur

De plus, ce répertoire contient les couples de clés privées/publiques identifiant votre hôtes :

  • ssh_host_dsa_key
  • ssh_host_dsa_key.pub
  • ssh_host_rsa_key
  • ssh_host_rsa_key.pub

Accès sur une machine distante

Avec mot de passe

Si vous voulez vous connectez à la machine $hote_distant avec l'utilisateur $utilisateur_distant, saisir simplement

ssh $utilisateur_distant@$hote_distant

et saisir votre mot de passe.

Si le nom d'utilisateur sur le système local et la machine distante sont les mêmes, vous pouvez omettre la partie $utilisateur_distant@ et saisir simplement

ssh $hote_distant

Si c'est la première fois que vous vous connectez à l'hôte distant, ssh va vous demander si vous êtes certain de vouloir vous connecter à la machine distante. Répondre 'oui' après avoir vérifié l'empreinte du serveur et entrez votre mot de passe, ainsi, ssh vous connectera à l'hôte distant.

Utilisation de clés partagées

  • Une des fonctionnalités supportées par ssh est l'utilisation d'un couple de clés privée/publique pour se connecter à l'hôte distant. Cette méthode permet, si l'on se connecte souvent à un hôte distant de ne pas saisir à chaque fois son mot de passe. Pour cela, vous devez générer un couple de clés privée/publique sur votre machine locale et déposer la clé sur l'hôte distant. Pour générer la clé, on utilise le programme ssh-keygen

ssh-keygen -t rsa

Ce programme va générer un couple de clés privé/publique dans le répertoire ~/.ssh. Le programme vous demande dans un premier temps le répertoire de destination des clés, par défaut votre répertoire personnel, une passphrase vous est ensuite demandé.

Notes : nous vous conseillons de ne pas laisser la passphrase vide. En effet, un attaquant qui aurait récupéré votre clé privé pourrait ensuite se connecter facilement à tous les hôtes sur lesquels vous avez déposé votre clé publique si la passphrase est vide. Pensez à choisir une passphrase longue et complexe.

Votre clé privée est id_rsa (vous devez ne jamais la fournir à un tiers), la clé publique est id_rsa.pub.

Vous devez copier votre clé publique sur l'hôte distant avec la commande ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub $utilisateur_distant@$hote_distant

Vous pouvez maintenant vous connecter simplement à l'hôte distant, la passphrase vous est demandée. Une fois rentré, vous êtes connecté à l'hôte distant. En cas de nouvelles connections, la passphrase ne vous sera plus demandé durant toute votre session.

Sécurisation

  • Par défaut, un serveur SSH est relativement sécurisé. Il est possible, à l'aide quelques options de configuration ou des outils de rendre encore plus dur à le cracker

/!\ Utilisation de la dernière version du package openssh-server disponible permet de se protéger contre l'utilisation des failles de sécurité connues.

Options de configuration

(!) Il faut éditer le fichier /etc/ssh/sshd_config pour ajuster le paramétrage puis relancer le serveur ssh par

invoke-rc.d ssh restart
  • Désactiver utilisation du mot de passe pour l'authentification (UsePAM no).

  • Désactiver l'utilisation du compte root(PermitRootLogin no)

  • N'autoriser que certains utilisateurs ou groupe d'utilisateurs à se connecter (AllowUsers et AllowGroups)

{i} Les options AllowUsers et AllowGroups n'amélioreront pas la sécurité d'un serveur SSH. Mais, dans certains cas, leur utilisation permet de résister un peu plus longtemps lors des attaques par brut force.

Outils externes

  • fail2ban : permet de blacklister les adresses IP tentant de "brut forcer" un serveur SSH automatiquement à l'aide d'iptables.

  • denyhosts : comme fail2ban, denyhosts permet de bloquer les adresses ip tenant de forcer une connexion ssh. Mais, contrairement à fail2ban, il n'utilise pas iptables, mais le fichier /etc/hosts.deny.

Fonctions complémentaires

Commandes supplémentaires

scp

  • scp est un utilitaire en ligne de commande permettant de transférer des fichiers entre 2 machines.

    • Envoie d'un fichier:

scp $fichier_source $utilisateur_distant@$hote_distant:$fichier_destination
  • Récupération d'un fichier vers la machine locale:

scp $utilisateur_distant@$hote_distant:$fichier_source $fichier_destination

sftp

mode texte

mode graphique

clusterssh

ssh-agent

  • ssh-agent est un outil pratique permettant gérer les mot de passes associés aux clés privées utilisées pour l'authentification vers des serveurs ssh : en effet, au premier chargement de la clé privé, ssh-agent demandera le mot de passe associé à la clé. Par la suite, il n'est plus nécéssaire de saisir le mot de passe clé de la clé lors de l'utilisation de la commande ssh (jusqu'au déchargement de la clé).

    • Chargement d'un clé: ssh-add $cle_prive

    • Lister les clés disponibles: ssh-add -l

    • Suppresion de toutes clés chargées: ssh-add -D

keychain

  • keychain fourni par le package keychain est un script shell facilitant l'utilisation de l'agent ssh entre plusieurs sessions d'un même utilisateur. En effet, lors du premier lancement, ssh-agent crée un socket permettant la communication vers ssh. Ce socket est référencé uniquement dans l'environnement de la session utilisée lors du démarrage de l'agent. Keychain permet garder la trace de l'agent et de le propager l'accès à cet agent à partir d'autres sessions, ce qui permet de limiter à une seule instance d'ssh-agent par utilisateurs sur une machine donnée.

ssh-askpass

  • ssh-askpass est un outil simplifiant la saisie du mot de passe d'une clé privé lors du changement de cell-ci. Plusieurs implémentations existent:

    • x11-ssh-askpass : version X11

    • kaskpass : intégration de ssh-askpass dans l'environnement KDE

    • ssh-askpass-gnome : intégration de ssh-askpass dans l'environnement Gnome

libpam-usb

  • libpam-usb est un outil permettant l'authentification avec une clé USB. Ce package inclus un outil bien pratique : pamusb-agent. Cet outil, une fois paramétré correctement, peut permettre de charger les clés SSH présentes lors que la clé USB est connectée et décharger ces clés lorsque cette dernière est déconnectée.

Permettre l'accès à un réseau de l'extérieur à travers un firewall sans modifier sa configuration

  • Par son implémentation, ssh permet transporter ("tunneler") d'autres protocoles applicatives, permettant ainsi de chifferer ces protocoles.

Tunnel ssh pour sécuriser d'autres applications

options complémentaires

Applications graphiques (X11Forwarding)

pop3

imap

smtp

Divers

Les options de la ligne de commande SSH (les séquences après escape ~)

  • ~. : Déconnexion

  • ~^Z : Passe la connexion en background.

  • ~# : Affiche les tunnels en cours.

  • ~& : Passe la session en background lors d'une demande de fin de la sessiosn SSH alors qu'il existe un tunnel X11

  • ~? : Affiche l'aide.

  • ~B : Envoie le break (uniquement en SSH2)

  • ~C : Passe en mode commande.

Options de configuration du fichier authorized_keys

  • Le fichier authorized_keys est le fichier contenant les clés publiques permettant à un utilisateur de s'authentifier à l'aide de sa la clé privée. Le paramètrage de ce fichier, présent dans ~/.ssh peut être très utile dans certains cas. Sa syntaxe est:

 option1,option2,optionN type-de-clef clef-en-base64 commentaire.
  • Les options :

    • from="*.domain.tld,machine.domaine2.tld" : autorise uniquement la connexion depuis toutes les machines du domaine domain.tld et la machine machine.domaine2.tld

    • from="!badguy.domain3.tld" : refuse les connexions initiées par la machine !badguy.domain3.tld.

    • command="/path/to/command" : force l'exécution de la commande /path/to/command

    • environnement="VAR=value" : permet forcer la définition des variables d'environnements.

    • permit-open="host:port" : permet uniquement l'ouverture d'un tunnel vers host:port

    • no-port-forwarding : empêche l'utilisation des tunnels TCP

    • no-X11-forwarding : empêche l'utilisation du tunnel X

    • no-agent-forwarding : empêche le forwarding du ssh-agent


ToDo: merge (and translate) this page and the english one