systemes:linux:ssh

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
systemes:linux:ssh [2016/01/28 18:44]
pam [3. Utilisation de clés]
systemes:linux:ssh [2019/02/06 14:03] (Version actuelle)
Ligne 2: Ligne 2:
  
 ===== Introduction ===== ===== Introduction =====
 +
 Dans ce document, je vous explique quelques possibilités d'utilisation de SSH telles que l'environnement utilisateur, le tunneling, les différentes méthodes de transfert de fichiers. Dans ce document, je vous explique quelques possibilités d'utilisation de SSH telles que l'environnement utilisateur, le tunneling, les différentes méthodes de transfert de fichiers.
  
  
-====== 1. Configuration de base et modifications de sécurité ====== +====== Configuration de base et sécurité ======
-La configuration du serveur se trouve dans /etc/ssh/sshd_config +
-La configuration du client se trouve dans /etc/ssh/ssh_config+
  
 +  * La configuration du serveur se trouve dans /etc/ssh/sshd_config
 +  * La configuration du client se trouve dans /etc/ssh/ssh_config
  
  
-=====1.Pour éviter les attaques par brute force il faut changer le port d'écoute.===== 
-Pour modifier le port d'écoute, il faut configurer le paramètre **port** avec la valeur souhaitée du fichier sshd_config 
  
-<code bash>10:01:23 root@sshtp:/etc/ssh#cat sshd_config+===== Brute Force ===== 
 + 
 +  * Pour modifier le port d'écoute, il faut configurer le paramètre **port** avec la valeur souhaitée du fichier sshd_config 
 +  * <code bash>10:01:23 root@sshtp:/etc/ssh#cat sshd_config
 #Package generated configuration file #Package generated configuration file
 #See the sshd_config(5)manpage for details #See the sshd_config(5)manpage for details
Ligne 22: Ligne 24:
 …</code> …</code>
  
-Tentative de connexion au serveur : +  * Tentative de connexion au serveur : 
- +  <code bash>10:02:45 William@MBPWx:~# ssh-vp 22222 root@10.203.22.220
-<code bash>10:02:45 William@MBPWx:~# ssh-vp 22222 root@10.203.22.220+
 OpenSSH_6.2p2, OSSLShim 0.9.8r8 Dec 2011 OpenSSH_6.2p2, OSSLShim 0.9.8r8 Dec 2011
 debug1: Reading configuration data /etc/ssh_config debug1: Reading configuration data /etc/ssh_config
Ligne 35: Ligne 36:
  
  
-=====2.Le compte root est présent sur tous les systèmes dignes de ce nom ce qui en fait une proie facile.===== +===== Désactiver le root =====
-Pour interdire la connexion root, il faut mettre le paramètre **PermitRootLogin** à no+
  
-Tentative de connexion au serveur : +  * Pour interdire la connexion root, il faut mettre le paramètre **PermitRootLogin** à no 
- +  * Tentative de connexion au serveur : 
-<code bash>10:04:45 William@MBPWx:~# ssh-vp 22222 root@10.203.22.220 root@10.203.22.220+  <code bash>10:04:45 William@MBPWx:~# ssh-vp 22222 root@10.203.22.220 root@10.203.22.220
  
 root@10.203.22.220's password: root@10.203.22.220's password:
Ligne 47: Ligne 47:
 </code> </code>
  
-=====3.Enlever la possibilité de se connecter sans mot de passe.===== +===== Désactiver l'authentification sans mot de passe===== 
-Pour interdire la connexion root, il faut mettre le paramètre**PermitEmptyPasswords** à no+ 
 +  * Pour interdire la connexion root, il faut mettre le paramètre**PermitEmptyPasswords** à no 
 + 
 +===== Limiter le temps d'attente maximum===== 
  
-=====4.Limiter le temps d'attente maximum de mot de passe=====  +  * Pour modifier le temps d'attente, il faut changer la valeur du paramètre **LoginGraceTime **
-Pour modifier le temps d'attente, il faut changer la valeur du paramètre **LoginGraceTime **+
  
-=====5.Limiter le nombre de tentatives de mot de passe à 2.===== +===== Limiter le nombre de tentatives de mot de passe à 2=====
-Pour modifier le nombre de tentatives, il faut changer la valeur du paramètre **MaxAuthTries **à 3+
  
-<code bash>debug1: Next authentication method: password+  * Pour modifier le nombre de tentatives, il faut changer la valeur du paramètre **MaxAuthTries **à 3 
 +  * <code bash>debug1: Next authentication method: password
 root@10.203.22.220's password: root@10.203.22.220's password:
 debug1: Authentications that can continue: public key,password debug1: Authentications that can continue: public key,password
Ligne 64: Ligne 66:
 </code> </code>
  
-=====6.Isoler un utilisateur dans un chroot.===== +===== Isoler un utilisateur dans un chroot=====
-Je crée un dossier pour l'utilisateur :+
  
-<code bash>10:38:38 root@sshtp:/etc/ssh# mkdir -p /data/ssh/share/test/</code>+  * Je crée un dossier pour l'utilisateur : 
 +  * <code bash>10:38:38 root@sshtp:/etc/ssh# mkdir -p /data/ssh/share/test/</code>
  
-<code bash>17:24:06 root@sshtp:~# apt-get install debootstrap+  * <code bash>17:24:06 root@sshtp:~# apt-get install debootstrap
 17:24:19 root@sshtp:~#debootstrap wheezy /data/ssh/share/test/ http://http.debian.net/debian/ 17:24:19 root@sshtp:~#debootstrap wheezy /data/ssh/share/test/ http://http.debian.net/debian/
 </code> </code>
  
-Copie des fichiers suivants dans le chroot :+  * Copie des fichiers suivants dans le chroot : 
 +  - /etc/apt/sources.list 
 +  - /etc/passwd 
 +  - /etc/group
  
-/etc/apt/sources.list +  * Connexion : 
-/etc/passwd +  <code bash>17:31:10 William@MBPWx:~# ssh test@10.203.22.220
-/etc/group +
- +
-Connexion : +
- +
-<code bash>17:31:10 William@MBPWx:~# ssh test@10.203.22.220+
 Password: Password:
  
Ligne 102: Ligne 102:
  
  
-======2. Empreintes======+====== Empreintes ( fingerprint )====== 
 Ssh vérifie que l'empreinte du serveur distant n'a pas changé entre deux connexions Ssh vérifie que l'empreinte du serveur distant n'a pas changé entre deux connexions
  
-=====1.Sur le client, le fichier d'empreinte est ~/.ssh/known_hosts.===== +===== Sur le client, le fichier d'empreinte est ~/.ssh/known_hosts.=====
-A chaque connexion, nous avons ce message+
  
-<code bash>11:03:00 root@lisa:~# ssh -vp22222 root@10.203.22.220+  * A chaque connexion, nous avons ce message 
 +  * <code bash>11:03:00 root@lisa:~# ssh -vp22222 root@10.203.22.220
 ... ...
 The authenticity of host'[10.203.22.220]:22222 ([10.203.22.220]:22222)' can't be established. The authenticity of host'[10.203.22.220]:22222 ([10.203.22.220]:22222)' can't be established.
Ligne 115: Ligne 116:
 </code> </code>
  
-L'empreinte n'est pas connue, le client nous demande  si on est sûr de cette connexion,et dans l'affirmative, le fingerprint sera enregistré dans le fichier known_hosts. Cela permet, lors d'un changement de fingerprint sur serveur, que le client s'en rende compte et nous en informe. Il protège également de la connexion à un mauvais serveur.+  * L'empreinte n'est pas connue, le client nous demande  si on est sûr de cette connexion,et dans l'affirmative, le fingerprint sera enregistré dans le fichier known_hosts. Cela permet, lors d'un changement de fingerprint sur serveur, que le client s'en rende compte et nous en informe. Il protège également de la connexion à un mauvais serveur.
  
-======3. Utilisation de clés====== +====== Utilisation de clés======
-Les clés sont certainement la meilleure solution de connexion à ce jour. Cela fonctionne par paire (1clé privée et 1 clé publique)+
  
-=====1.Générer un couple de clés avec ssh-keygen sans passphrase.===== +Les clés sont certainement la meilleure solution de connexion à ce jour. Cela fonctionne par paire (1 clé privée et 1 clé publique) 
-<code bash>11:07:20 root@lisa:~#ssh-keygen+ 
 +===== Générer un couple de clés avec ssh-keygen sans passphrase.===== 
 +  <code bash>11:07:20 root@lisa:~#ssh-keygen
 Generating public/private rsakey pair. Generating public/private rsakey pair.
 Enter file in which to savethe key (/root/.ssh/id_rsa): Enter file in which to savethe key (/root/.ssh/id_rsa):
Ligne 145: Ligne 147:
 </code> </code>
  
-Nous avons désormais dans le home directory, les fichiers contenant clé publique et clé privée.+  * Nous avons désormais dans le home directory, les fichiers contenant clé publique et clé privée dans .ssh . 
  
  
 +===== Transférer la clé sur le serveur par ssh=====
  
-=====2.Transférer la clé sur le serveur par la méthode ssh.===== +  * <code bash>11:15:09 root@lisa:~#ssh-copy-id -i .ssh/id_rsa.pub root@10.203.22.220
-<code bash>11:15:09 root@lisa:~#ssh-copy-id -i .ssh/id_rsa.pub root@10.203.22.220+
 The authenticity of host'10.203.22.220 (10.203.22.220)' can't be established. The authenticity of host'10.203.22.220 (10.203.22.220)' can't be established.
 ECDSA key fingerprint is b0:e0:76:9d:c8:15:91:88:99:02:e9:cf:0c:4e:fb:c2. ECDSA key fingerprint is b0:e0:76:9d:c8:15:91:88:99:02:e9:cf:0c:4e:fb:c2.
Ligne 162: Ligne 165:
  
  
-=====3.Restreindre le serveur pour qu'il n'accepte les connexions que par clé.===== +===== N'accepter que les connexions que par clé =====
-Pour n'utiliser que les clés, il faut mettre les 3 paramètres suivants :+
  
- ChallengeResponseAuthentication no +  * Pour n'utiliser que les clés, il faut mettre les 3 paramètres suivants : 
- PasswordAuthentication no +  -  ChallengeResponseAuthentication no 
- UsePAM no+  -  PasswordAuthentication no 
 +  -  UsePAM no
  
  
-=====4.Modifier la clé privée afin qu'elle ait une passphrase.===== +===== Modifier la clé privée afin qu'elle ait une passphrase.===== 
-<code bash>11:21:59 root@lisa:~# ssh-keygen -p -f .ssh/id_rsa+ 
 +  * <code bash>11:21:59 root@lisa:~# ssh-keygen -p -f .ssh/id_rsa
 Key has comment '.ssh/id_rsa' Key has comment '.ssh/id_rsa'
 Enter new passphrase (emptyfor no passphrase): Enter new passphrase (emptyfor no passphrase):
Ligne 178: Ligne 182:
  
  
-Tentative de connexion : +  * Tentative de connexion : 
-<code bash>11:22:25 root@lisa:~# ssh -v root@10.203.22.220 root@10.203.22.220+  <code bash>11:22:25 root@lisa:~# ssh -v root@10.203.22.220 root@10.203.22.220
 ... ...
 debug1: key_parse_private_pem:PEM_read_PrivateKey failed debug1: key_parse_private_pem:PEM_read_PrivateKey failed
Ligne 196: Ligne 200:
  
  
-======4. Utilisation du shell====== +====== Utilisation du shell====== 
-=====1.Afficher le hostname du serveur sans ouvrir de shell distant.===== +===== Afficher le hostname du serveur sans ouvrir de shell distant===== 
-<code bash>11:26:39 root@lisa:~# ssh root@10.203.22.220 hostname+ 
 +  * <code bash>11:26:39 root@lisa:~# ssh root@10.203.22.220 hostname
 Enter passphrase for key'/root/.ssh/id_rsa': Enter passphrase for key'/root/.ssh/id_rsa':
 sshtp sshtp
 </code> </code>
  
-=====2.Trois exemples différents d'utilisation du pipe.===== +===== Trois exemples différents d'utilisation du pipe===== 
-<code bash>12:37:47 root@lisa:~# ssh root@10.203.22.220 '(cat /etc/hosts | sed -s s/sshtop/sshtp/g >/tmp/testCMD); cat /tmp/testCMD' | grep sshtp+ 
 +  * <code bash>12:37:47 root@lisa:~# ssh root@10.203.22.220 '(cat /etc/hosts | sed -s s/sshtop/sshtp/g >/tmp/testCMD); cat /tmp/testCMD' | grep sshtp
 Enter passphrase for key'/root/.ssh/id_rsa': Enter passphrase for key'/root/.ssh/id_rsa':
 127.0.1.1 sshtp 127.0.1.1 sshtp
Ligne 216: Ligne 222:
  
  
-======5. Transferts de fichiers====== +======  Transferts de fichiers====== 
-=====1.Transférer un fichier par le biais de SCP.===== +===== Transférer un fichier par le biais de SCP===== 
-<code bash>13:16:53 root@lisa:~# scp./testSCP root@10.203.22.220:/root+ 
 +  * <code bash>13:16:53 root@lisa:~# scp./testSCP root@10.203.22.220:/root
 Enter passphrase for key'/root/.ssh/id_rsa': Enter passphrase for key'/root/.ssh/id_rsa':
 testSCP 100% 2470 2.4KB/s 00:00 testSCP 100% 2470 2.4KB/s 00:00
 </code> </code>
  
-=====2.Transférer un fichier entre deux machines distantes via SCP.===== +===== Transférer un fichier entre deux machines distantes via SCP.=====
-Deux commandes possibles+
  
-<code bash>13:26:51 William@MBPWx:~# scp-3 root@10.203.22.204:/root/testSCP root@10.203.22.220 root@10.203.22.220:/root/+  * Deux commandes possibles: 
 +  - <code bash>13:26:51 William@MBPWx:~# scp-3 root@10.203.22.204:/root/testSCP root@10.203.22.220 root@10.203.22.220:/root/
 </code> </code>
-ou +  * ou 
- +  <code bash>13:27:06 William@MBPWx:~# sshroot@10.203.22.204 '(scp ./testSCP root@10.203.22.220:/root/)'
-<code bash>13:27:06 William@MBPWx:~# sshroot@10.203.22.204 '(scp ./testSCP root@10.203.22.220:/root/)'+
 </code> </code>
  
-=====3.Transférer un fichier par le biais de SFTP.===== +===== Transférer un fichier par le biais de SFTP===== 
-<code bash>13:31:49 root@lisa:~# sftp root@10.203.22.220+ 
 +  * <code bash>13:31:49 root@lisa:~# sftp root@10.203.22.220
 Connected to 10.203.22.220. Connected to 10.203.22.220.
 sftp> ls sftp> ls
Ligne 258: Ligne 265:
  
  
-=====4.Mettre en place un point de montage SSHFS.===== +===== Mettre en place un point de montage SSHFS=====
-Sur le serveur :+
  
-<code bash>13:32:00 root@sshtp:~# mkdir /data/ssh/mount+  * Sur le serveur : 
 +  * <code bash>13:32:00 root@sshtp:~# mkdir /data/ssh/mount
 </code> </code>
  
  
-Sur le client +  * Sur le client 
- +  <code bash>13:33:27 root@lisa:~# mkdir /mnt/sshfs/
-<code bash>13:33:27 root@lisa:~# mkdir /mnt/sshfs/+
 13:35:04 root@lisa:~# apt-get install sshfs 13:35:04 root@lisa:~# apt-get install sshfs
 13:35:36 root@lisa:~# sshfs root@10.203.22.220:/data/ssh/mount /mnt/sshfs/ 13:35:36 root@lisa:~# sshfs root@10.203.22.220:/data/ssh/mount /mnt/sshfs/
Ligne 274: Ligne 280:
  
  
-Contenu sur le serveur : +  * Contenu sur le serveur : 
- +  <code bash>13:36:49 root@sshtp:~# ll/data/ssh/mount
-<code bash>13:36:49 root@sshtp:~# ll/data/ssh/mount+
 total 8 total 8
 drwxr-xr-x 2 root root 4096févr. 9 13:36 . drwxr-xr-x 2 root root 4096févr. 9 13:36 .
Ligne 286: Ligne 291:
  
  
-=====5.Effectuer des transferts de fichiers avec l'outil rsync en utilisant ssh===== +===== RSYNC =====
-Avec rsync, on peut facilement faire des backup, cela permet de ne pas télécharger quotidiennement tout le contenu de la sauvegarde, il fait un check de l'ensemble et ne sauvegarde que les modifications.+
  
-Il faut installer rsync sur les deux hôtes.+  * Avec rsync, on peut facilement faire des backup, cela permet de ne pas télécharger quotidiennement tout le contenu de la sauvegarde, il fait un check de l'ensemble et ne sauvegarde que les modifications. 
 +  * Il faut installer rsync sur les deux hôtes.
  
-<code bash>13:42:14 root@lisa:~# apt-get install rsync+  * <code bash>13:42:14 root@lisa:~# apt-get install rsync
 </code> </code>
  
- +  * <code bash>13:43:27 root@lisa:~# rsync -avz -e ssh /home/test/ root@10.203.22.220:/data/bck/test/
-<code bash>13:43:27 root@lisa:~# rsync -avz -e ssh /home/test/ root@10.203.22.220:/data/bck/test/+
 sending incremental file list sending incremental file list
 ./ ./
Ligne 306: Ligne 310:
 </code> </code>
  
-<code bash>13:43:43 root@sshtp:~# ll /data/bck/test+  * <code bash>13:43:43 root@sshtp:~# ll /data/bck/test
 total 20 total 20
 drwxr-xr-x 2 test test 4096nov. 18 15:41 . drwxr-xr-x 2 test test 4096nov. 18 15:41 .
Ligne 318: Ligne 322:
  
  
-======6. Tunneling======+====== Tunneling======
  
-Il est possible de faire du tunneling over ssh +  * Il est possible de faire du tunneling over ssh 
-On ouvre un shell sur le client+  On ouvre un shell sur le client 
 +  * <code bash>13:57:13 root@sshtp:~# ssh -L 2080:10.203.22.204:80 root@10.203.22.204</code>
  
-<code bash>13:57:13 root@sshtp:~# ssh -L 2080:10.203.22.204:80 root@10.203.22.204</code>+===== Proxy SOCKS =====
  
-=====1.Monter un proxy SOCKS via le client SSH et l'emprunter avec le logiciel de votre choix.===== +  * <code bash>14:15:50 William@MBPWx:~# ssh-nvNT -C -D 1080 root@10.203.22.204
- +
-<code bash>14:15:50 William@MBPWx:~# ssh-nvNT -C -D 1080 root@10.203.22.204+
  
 debug1: Authentication succeeded (public key). debug1: Authentication succeeded (public key).
Ligne 341: Ligne 344:
  
  
-Sur le navigateur firefox proxy socks 127.0.0.1 : 1080+  * Sur le navigateur firefox proxy socks 127.0.0.1 : 1080
  
- +  * Log ssh : 
- +  <code bash>debug1: Connection to port1080 forwarding to socks port 0 requested.
-Log ssh : +
- +
-<code bash>debug1: Connection to port1080 forwarding to socks port 0 requested.+
 debug1: channel 2: new[dynamic-tcpip] debug1: channel 2: new[dynamic-tcpip]
 debug1: Connection to port1080 forwarding to socks port 0 requested. debug1: Connection to port1080 forwarding to socks port 0 requested.
Ligne 365: Ligne 365:
  
  
-==2.Monter une interface de type tun entre le client et le serveur SSH.== +== Monter une interface de type tun entre le client et le serveur SSH.==
-Il faut activer l'ip forwarding et PermitTunnel +
  
-**Machine 1 :**+  Il faut activer l'ip forwarding et PermitTunnel
  
-<code bash>14:48:23 root@lisa:~# ssh -w 0:0 root@10.203.22.220+  * **Machine 1 :** 
 +  * <code bash>14:48:23 root@lisa:~# ssh -w 0:0 root@10.203.22.220
 Last login: Mon Feb 914:47:09 2015 from 10.203.22.204 Last login: Mon Feb 914:47:09 2015 from 10.203.22.204
 14:48:24 root@sshtp:~# ip l 14:48:24 root@sshtp:~# ip l
Ligne 406: Ligne 405:
 192.168.22.0/24 dev tun0 proto kernel scope link src 192.168.22.220 192.168.22.0/24 dev tun0 proto kernel scope link src 192.168.22.220
 </code> </code>
-**Machine 2 :** 
  
-<code bash>14:52:57 root@lisa:~# ip l setup dev tun0+ 
 +  * **Machine 2 :** 
 +  * <code bash>14:52:57 root@lisa:~# ip l setup dev tun0
 14:53:18 root@lisa:~# ip a a 192.168.22.204 dev tun0 14:53:18 root@lisa:~# ip a a 192.168.22.204 dev tun0
 14:53:56 root@lisa:~# ip r a 192.168.22.0/24 via 192.168.22.204 dev tun0 14:53:56 root@lisa:~# ip r a 192.168.22.0/24 via 192.168.22.204 dev tun0
Ligne 419: Ligne 419:
  
  
-======7. X-Forwarding ( 10min )====== +====== X-Forwarding ====== 
-=====1.Utiliser OpenSSH pour afficher sur votre machine une application distante.===== +===== Afficher une application distante.=====
-Installation du paquet x11-apps pour les tests (xeyes, xman, xload..) +
- +
-<code bash>14:37:02 William@MBPWx:~# ssh -X root@10.203.22.204 root@10.203.22.204+
  
 +  * Installation du paquet x11-apps pour les tests (xeyes, xman, xload..)
 +  * <code bash>14:37:02 William@MBPWx:~# ssh -X root@10.203.22.204 root@10.203.22.204
 15:01:24 root@lisa:~# xeyes 15:01:24 root@lisa:~# xeyes
 </code> </code>
 +  * Par défaut, avec -X, la machine distante est considérée comme "untrusted", et certaines limitations sont appliquées (comme une limitation dans le temps par exemple, ou le fait qu'un programme ne suis accéder qu'à sa propre fenêtre graphique). C'est l'option conseillée, elle évite de nombreuses failles possibles. L'utilisation de -Y à la place de -X indique que la machine distante est "trusted", ses programmes ont donc un accès complet à notre display. Ils peuvent réaliser des taches comme prendre des impressions écran, capturer le clavier, injecter de l'input dans les autres programmes, etc. C'est une option moins sûre. Il est à noter que tout ceci peut être changé dans la configuration de SSH.
  
-Pour info sur mon mac, X11 s'ouvre correctement sans autre configuration+  * Pour info sur mon mac, X11 s'ouvre correctement sans autre configuration
  
  
  • systemes/linux/ssh.1454003089.txt.gz
  • Dernière modification: 2019/02/06 14:02
  • (modification externe)