SSH
En informatique, secure shell ou SSH est un jeu de standards associé à un protocole réseau, qui permettent d'établir des connexions sécurisées d'un ordinateur local à un ordinateur distant. Il utilise une clé publique cryptographique pour authentifier l'ordinateur distant et (de manière optionnelle) pour permettre à cet ordinateur distant d'authentifier l'utilisateur. SSH permet de préserver la confidentialité et l'intégrité des échanges de données entre deux ordinateurs, en les cryptant et identifiant par messages codés d'authentification (MACs). SSH est typiquement utilisé pour se connecter à distance sur une machine et y exécuter des commandes, mais il permet également le tunneling, le reroutage de connexions vers des adresses arbitraires de ports TCP et X11. Il peut transférer des fichiers en utilisant ses protocoles associés SFTP ou SCP. Un serveur SSH par défaut, écoute sur le port TCP standard 22. Reférence extraite de wikipedia
Sécurisez convenablement vos connexions SSH
Autoriser les connexions SSH directes de l'administrateur n'est pas sûr. N'autorisons pas à l'utilisateur root à se connecter directement. Si nous ne voulons pas laisser aux malveillants l'opportunité de réussir en 10 minutes une attaque par dictionnaire de mots-de-passe sur notre serveur, il nous appartient de fixer des limites au délai et nombre de tentatives tolérés !
Pour rendre votre SSH plus sûr, utilisez simplement votre éditeur de texte préféré avec des permissions d'administration et ouvrez ce fichier :
/etc/ssh/sshd_config
Puis nous y localisons les paramètres dangereux afin de les modifier :
Port <port souhaité> : Ceci doit désigner le port que vous fixerez également dans votre routeur, afin d'assurer la continuité de connexion. Si vous ne savez pas comment le faire, alors peut-être ne devriez-vous pas utiliser ssh à distance. Debian utilise le port 22 par défaut, mais il est recommandé d'utiliser un port sortant de la gamme explorée normalement par les scanners. Mettons que vous voulions utiliser le port 5874, cela devient alors :
Port 5874
ListenAddress <IP de la machine ou interface réseau>: Là bien sûr, puisque vous faites suivre les connexions distantes SSH vers votre ordinateur, en fixant à cet effet un port déterminé de votre routeur, vous devrez, à moins d'utiliser un DNS local, utiliser une IP fixe. Entrez-là suivant votre paramétrage particulier ; elle se présentera sous cette forme :
ListenAddress 192.168.2.134
Ensuite, Protocol 2 est normalement déjà fixé dans Debian mais vérifiez-le au cas où.
LoginGraceTime <délai en secondes autorisé pour se loguer>: La valeur par défaut 600 secondes est absurde. Cela ne prend pas dix minutes d'entrer votre nom d'utilisateur et votre mot-de-passe. Aussi entrez quelque chose de plus raisonnable comme ceci :
LoginGraceTime 45
À présent vous avez 45 secondes pour vous loguer et les hackers n'ont plus 600 secondes à chaque essai pour cracker votre mot-de-passe.
PermitRootLogin <oui>: La raison pour laquelle Debian autorise par défaut les connexions directes de root est incompréhensible. Aussi réglerons-nous cette valeur sur 'no' (Non) :
PermitRootLogin no
StrictModes yes
MaxAuthTries <valeur>: Nombre de tentatives autorisées. Fixez-le à 3 ou 4 au maximum, mais pas plus :
MaxAuthTries 2
Vous pourrez vouloir ajoûter les options qui suivent, si elles n'existent pas :
AllowUsers <nom des utilisateurs autorisés à accéder via ssh séparés par un espace>
AllowUsers <xxx>: créez, via la commande adduser un utilisateur pour ssh seulement avec aucun droit. Ensuite entrez son nom ici:
AllowUsers nom_de_cet_utilisateur
PermitEmptyPasswords <xxx>: donnez à cet utilisateur, seul autorisé à se connecter via ssh, un joli mot-de-passe très long, impossible à deviner avant un million d'années. Une fois logué sous son identité, vous aurez juste à faire su pour devenir 'root' :
PermitEmptyPasswords no
PasswordAuthentication <xxx>: À l'évidence, pour vous connecter avec un mot-de-passe et non avec une clé, vous aurez besoin que cette option soit fixée sur yes (oui) :
PasswordAuthentication yes [sauf en cas d'utilisation de clés]
Votre fichier une fois sauvegardé avec vos paramétrages, relancez le démon ssh :
/etc/init.d/ssh restart
À ce stade, et après avoir créé votre unique utilisateur habilité à n'utiliser que ssh, vous avez un serveur ssh sinon totalement, au moins un peu plus sécurisé.
Note: Si vous avez reçu un message d'erreur et que ssh ne vous autorise pas la connection, rendez vous dans votre $HOME et cherchez un dossier caché qui s'appelle .ssh, et enlevez le fichier qui s'appelle known_hosts et re-essayez. Cet erreur peut arriver lorsque vous avez une address dynamique (DCHP).
Utiliser les application X en réseau avec SSH
Utiliser une application sur une machine distante et afficher son interface graphique sur votre machine locale.
Supposés de l'exemple:
- sidux
- IP de l'ordinateur local : 192.168.1.10/24 (affichant seulement X11)
- IP de l'ordinateur distant : 192.168.1.2/24 (faisant effectivement tourner une application X11)
Configuration
Sur l'ordinateur distant, commencez par ajoûter dans le fichier /etc/hosts.allow une ligne pour ajoûter des droits pour l'accès ssh :
ssh sshd : 192.168.1.0/24 : ALLOW
Avec cette ligne vous déclarez permettre à toutes les adresses de votre réseau local l'accès au serveur ssh.
Sur l'ordinateur local, ouvrez une console pour établir une connexion ssh avec X-forwarding :
ssh -X nom_d_utilisateur@xxx.xxx.xxx.xxx (ou IP)
(entrez votre mot-de-passe ssh quand il vous est demandé, ou le mot-de-passe vers la clé ssh si vous avez envoyé votre clé ssh à la machine distante et l'y avez ajoûtée au fichier authorized_keys de l'utilisateur)
Lancez l'application X dans la console. Dans cet exemple, "iceweasel"..
ssh -X nom_d_utilisateur@xxx.xxx.xxx.xxx (ou IP) (entrez votre mot-de-passe ssh quand il vous est demandé, ou le mot-de-passe vers la clé ssh si vous avez envoyé votre clé ssh à la machine distante et l'y avez ajoûtée au fichier authorized_keys de l'utilisateur) iceweasel ou oocalc ou oowriter ou kspread
Accès ssh distant avec X-forwarding depuis un PC-Windows
- Télécharger et gravez le Cygwin XLiveCD
- Disposez-le dans le lecteur de CD-ROM du PC Windows et attentez qu'il se lance.
- Suivez les instructions "continuer" suivant l'autorun jusqu'à l'affichage d'une fenêtre de shell windows et entrez-y :
ssh -X username@xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx est l'adresse IP de l'ordinateur distant ou son URL (par exemple celle de son compte sur dyndns.org) et le nom d'utilisateur cité doit évidemment consister en un identifiant d'utilisateur existant vraiment sur la machine distante. Après une connexion fructueuse, lancez kmail par exemple et relevez votre courriel !
Assurez-vous que host.allow comporte une entrée permettant l'accès depuis des PC d'autres réseaux. Si vous êtes derrière un routeur ou un pare-feu-Nat, assurez-vous que le port 22 et/ou celui que vous avez configuré pour s'y substituer, soit bien re-routé vers votre ordinateur Linux.
SSH dans Konqueror
Konqueror et Krusader sont tous deux capables d'accéder à des données distantes, grâce au protocole using sftp:// and uses the ssh protocol.
How it works:
1) Open a new Konqueror window
2) Enter into the address bar: sftp://username@ssh-server.com
Exemple 1:
sftp://sidux1@remote_hostname_or_ip (Note: Une fenêtre popup s'ouvre et qui vous demande votre mot-de-passe ssh ; entrez-le puis cliquez sur OK)
Exemple 2:
sftp://nom_d_utilisateur:remote_hostname_or_ip
Cette syntaxe vous permet de ne PAS être questionné sur votre mot-de-passe de connexion. Vous vous retrouvez alors directement connecté.
Dans l'environnement d'un réseau local (LAN)
ftp://nom_d_utilisateur@10.x.x.x ou 198.x.x.x.x (Note: Une fenêtre popup s'ouvre et qui vous demande votre mot-de-passe ssh ; entrez-le puis cliquez sur OK)
La connexion SSH est alors initialisée. Avec cette fenêtre de Konqueror, vous pouvez travailler sur les fichiers se trouvant le serveur ssh (les visualiser, les copier), tout comme si ceux-ci se trouvaient sur votre machine locale.
NOTE: If you have set the ssh port to to use another port, other than the default of 22, you need to specify the port that sftp/fish is to use:
sftp://user@ip:port
'user@ip:port' is standard sytax for many programs like sftp, smb, fish
SSHFS - Montage de répertoires distants
SSHFS est une méthode utilisant FUSE, permettant de monter des systèmes de fichiers distants, facile, rapide et sûre à utiliser. La seule exigeance qu'elle impose côté serveur est que le démon ssh soit actif.
Côté machine cliente, vous devrez probablement installer sshfs:
L'installation de fuse et groups ne sont pas nécressaire sur sidux eros et versions supérieures, parce qu'ils sont déjà installés par défaut:
# apt-get update # apt-get install sshfs
Après cette installation, vous devrez vous déconnecter puis vous reconnecter à nouveau.
Monter un système de fichiers distant vous sera alors facile, (pensez toutefois à créer en préalable le répertoire où vous monterez celui-ci) :
sshfs nom_d_utilisateur@machine_distante:répertoire point_de_montage_local
Dans cette commande nom_d_utilisateur désigne celui de votre compte sur la machine distante.
Si aucun répertoire de connexion n'est précisé dans cette commande, l'utilisateur distant sera logué par défaut dans son répertoire /home.Attention !la signalétique ":" est essentielle, y compris si aucun répertoire particulier n'est spécifié !
Après le montage le répertoire distant se comporte exactement de la même façon que n'importe quel répertoire local. Vous pouvez y naviguer, éditer des fichiers et même y lancer des scripts, comme vous le feriez dans vos répertoires locaux.
Pour démonter un répertoire distant, utilisez la systaxe suivante :
fusermount -u point_de_montage_local
Si vous utilisez fréquemment SSHFS ce peut être intéressant d'ajoûter son entrée à votre fstab :
username@remote_hostname:/remote_directory /local_mount_point fuse.sshfs user,allow_other,uid=1000,gid=1000,noauto 0 0
Ceci fera en sorte que tout utilisateur membre du groupe fuse puisse monter le système de fichiers en utilisant la célèbre commande de montage :
mount /chemin/du/repertoire/de/montage
Avec cette ligne dans votre fstab vous pourrez évidemment aussi lancer la commande de démontage :
umount /chemin/du/repertoire/de/montage
Pour vérifier si vous êtes membres du groupe fuse entrez ceci :
cat /etc/group | grep fuse
Vous devez obtenir un résultat de ce type :
fuse:x:117: <nom_d_utilisateur>
L'identifiant ne sera pas listé dans le groupe "fuse" avant que vous vous soyiez, comme demandé plus haut, déconnecté puis reconnecté à nouveau.
Si votre nom d'utilisateur n'est pas listé, employez la commande d'administration adduser comme suit :
# adduser <nom_d_utilisateur> fuse
après quoi votre nom d'utilisateur sera listé et vous pourrez utiliser les commandes :
mount point_de_montage_local
et
umount point_de_montage_local

