OpenSSH (v2)
SSH (= Secure Shell) met en place la connection par terminal , type telnet, chiffré avec les clés asymetriques pour authentification et symétrique pour la phase de la communication.SSH est indispensable pour l'administration à distance le serveur.
Son principal intéret est que son protocole de connexion est sécurisé.
Il authentifie l'utilisateur ainsi que sa machine et utilise des algorythmes qui garantissent la confidentialité des données échangées. Lors de la connexion votre client SSH recoit "RSA key fingerprint" qui est une empreinte du serveur sur lequel vous venez de vous connecter. Cette empreinte est vérifiée à chaque nouvelle connexion. Si elle est modifiée vous en êtes informé.
Il protège un réseau des attaques par IP spoofing, IP source routing et spoofing de DNS.
Il authentifie l'utilisateur ainsi que sa machine et utilise des algorythmes qui garantissent la confidentialité des données échangées. Lors de la connexion votre client SSH recoit "RSA key fingerprint" qui est une empreinte du serveur sur lequel vous venez de vous connecter. Cette empreinte est vérifiée à chaque nouvelle connexion. Si elle est modifiée vous en êtes informé.
Il protège un réseau des attaques par IP spoofing, IP source routing et spoofing de DNS.
OpenSSH est une implementation libre de SSH.
les outils d'OpenSSH
ssh : Client ssh
sshd : Serveur ssh
scp : Copie distante sécurisée
ssh-keygen : génération de clefs d'authentification, management et conversion
sftp : Transfert sécurisé de fichiers
ssh-add : Ajoute les identités DSA ou RSA à l'agent d'authentification
ssh-agent : Agent d'authentification
Configuration du serveur
/etc/ssh/sshd_config ( ou => /usr/local/etc/ssh_config )
Directives
ListenAddress [IP]
PermitRootLogin [Yes|No]
Port (defaut 22)
Protocol [2,1]
PasswordAuthentification [Yes|No]
Forward X11 [Yes|No] : active la redirection d'applications graphiques
PermitRootLogin [Yes|No]
PublicKeyAuthentification [Yes|No]
HostKey [path]/ssh_host_rsa_key (defaut /etc/ssh)
HostKey [path]/ssh_host_dsa_key (defaut /etc/ssh)
ServerKeyBits 1024 : taille des clés
man sshd_config
en ligne de commande:
le daemon sshd est lancé pendant le boot de système par fichier /etc/rc.local ou autre égale
sshd [options]
-f fichier (default /etc/ssh/sshd_config)
-d : mode debug
-p port
-h fichier : specifie fichier avec clé host (par defaut /etc/ssh/ssh_host_key)
-k sec : specifie changement de server_key (par defaut 3600s)
start du serveur:
# /etc/init.d/sshd start (stop , restart, reload)
Client SSH
le fichier de configuration commun à tous les utilisateurs:
/etc/ssh/ssh_config ou pour user specifieé dans ~/.ssh/config
Directives
Host * : concerne tous les hôtes
Port (defaut 22)
Protocol [2,1]
PasswordAuthentification [Yes|No]
forward X11 [yes|no]
IdentityFile [chemin]/id_rsa : clé privée rsa (l'extension comme publique : .pub)
IdentityFile [chemin]/id_dsa : clé privée dsa
Utilisation du client
root@localhost # ssh [options] [adresse]
-l [login]
-v -vv -vvv : mode verbose (plus uo moins complet)
-1 ou -2 :version ssh
-p [port] : n° du port distant
root@localhost # ssh -l max -v 192.168.1.25
Création de clés
clé client se trouvent dans ~/.ssh/
commande ssh-keygen
-t [type] (par exemple : ssh-keygen -t dsa)
Les clés générées ont par défaut une longueur de 1024 bits, ce qui est aujourd'hui considéré comme suffisant pour une bonne protection.
Par défaut (il demande confirmation lors du processus de création), la clé privée est stockée dans le fichier ~/.ssh/id_dsa avec les permissions 600 et la clé publique est stockée dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644.
Le fingerprint (une chaîne de 32 caractéres hexadcimaux) s'obtient grâce à la commande :
ssh-keygen -l
Se logguer par SSH
(1) Authentification par mot de passe
Depuis la machine cliente, tapez :
% ssh login@nom_DNS_du_serveur_SSH
(ou % ssh login@adresse_ip_du_serveur )
(2) Authentification par clé
Autoriser votre clé publique
Pour cela, il suffit de copier votre cl publique dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle vous voulez vous logguer distance. La commande suivante permet de raliser cette opration via SSH :
% ssh-copy-id -i ~/.ssh/id_dsa.pub login@nom_DNS_du_serveur
et entrez le mot de passe de votre compte sur le serveur.
et ensuite :
% ssh login@nom_DNS_du_serveur_SSH
Tunnel SSH - crypter n'importe quelle communication TCP
pour établir un tunnel SSH pour une connexion HTTP vers la machine "serveur.fr" :
% ssh -L 2050:serveur.fr:80 login@serveur.fr
% w3m http://localhost:2050
VPN PPP-SSH
+---------------+ OpenSSH 4.3 +---------------+ | Machine A | tun0 -- Tunnel Interface -- tun0 | Machine B | | Has a tunnel | <------------------------------->| Has a tunnel | | and ethernet | 10.0.0.100 10.0.0.200 | and ethernet | +-------+-------+ point to point connection +-------+-------+ eth0 | creates a bridge | eth0 10.0.0.100 | that plugs machine B | 192.168.0.100 port 22 | into network A | forwarded | | here | | +-------+-------+ +-~-~-~-~-~-~-~-+ +-------+-------+ | Network A | | | | Network B | | 10.0.0.1/24 | 1.2.3.4 | The Internet | | 192.168.0.1/24| | Has internet |<-------->| |<----->| Has internet | | NAT gateway | Routable | | | NAT gateway | +---------------+ Address +-~-~-~-~-~-~-~-+ +---------------+