====== Accès à distance avec Telnet et SSH ====== ===== Ressources ===== Liens : * https://dev.to/gvelrajan/how-to-configure-and-setup-ssh-certificates-for-ssh-authentication-b52 * https://lackof.org/taggart/hacking/ssh/ * https://wiki.debian.org/fr/SSH ===== Visualiser les services actifs ===== Lorsqu'un **service est actif** sur un serveur, un **port TCP ou UDP est en écoute** : * le service Telnet utilise par défaut le port 23 ; * le service SSH utilise par défaut le port 22. Utilisez la commande suivante pour visualiser les ports UDP et TCP actif : $ netstat -nltu $ ss -nltu Si les ports 23 et 22 se sont pas en écoute -> ces deux services ne sont pas installés. Lien : https://artheodoc.wordpress.com/2016/06/19/voir-les-ports-ouverts-sous-linux/ ===== Installer le service Telnet sur la VM Linux===== * Lancer votre VM Linux et depuis un terminal, utilisez la commande suivante : $ sudo apt -y install telnetd * Visualisez le **statut** du service et le **port 23 en écoute** : $ sudo systemctl status inetd $ ss -nlt Tapez Q pour quitter * Prenez connaissance de l'adresse IP de votre VM $ ip a ==== Configuration de l'accès Telnet en ligne de commande ==== Il est nécessaire de disposer d'un client Telnet. Un client Telnet est disponible sous Windows. Pour installer le client Telnet sous Windows : * accédez à l'outil ou **Activer désactiver des fonctionnalités Windows** * puis cocher le **Client Telnet** et validez en cliquant sur le bouton **OK** {{ :reseau:debian:telnet_01.png?400 |}} * Lancez une **invite de commandes** et saisissez le nom du client telnet suivi de l'adresse du serveur distant : C:>telnet 199.199.199.199 * saisissez vos **identifiants** (login et mot de passe) ==== Configuration de l'accès Telnet au serveur avec Putty ==== **Putty** est un utilitaire qui permet d’ouvrir une session **Telnet** ou **SSH** sur un serveur distant, c’est-à-dire un session de terminal. Ce logiciel correspond à un seul fichier **putty.exe**. * Télécharger l’utilitaire **putty.exe** à partir du partage **Classe**. Putty est téléchargeable sur Internet à l’adresse du site http://www.putty.org/. * Configurez Putty pour avoir un accès **console** à votre serveur. * Indiquez l'**adresse IP** de votre serveur et le **port 23 (Telnet)**. {{ :reseau:debian:accesdistant_01.png?400 |}} * précisez le compte de l'utilisateur existant dans votre système Linux **mabanque** pour vous connecter : {{ :reseau:debian:accesdistant_02.png?400 |}} {{ :reseau:debian:accesdistant_02.png?400 |}} * Revenez sur la rubrique Session et sauvegardez les paramètres de votre connexion {{ :reseau:debian:accesdistant_03.png?400 |}} * Puis cliquez sur **Open** pour lancer la connexion. {{ :reseau:debian:accesdistant_04.png?400 |}} Saisissez le mot de passe du compte pour accéder à l'invite de commande (shell). ===== Installer le service SSH===== * ouvrez une invite de commandes sur le serveur Debian et lancez l'installation d'OpenSSH. $ sudo apt install openssh-server === Accéder à distance à la VM=== Vous accédez à distance en SSH en utilisant la **commande shh** sous Linux, MacOS et Windows ou en utilisant un logiciel comme **Putty** sous Windows. Vous pouvez ouvrir une session afin d'administrer votre serveur : * en utilisant le compte **root**, solution pratique mais **déconseillée** pour des raisons de sécurité ; * ou en utilisant un **compte qui n'est pas root**, disposant de moins de droits, mais qui est configuré afin d'avoir la possibilité d'obtenir une **élévation de privilèges** quand cela est nécessaire avec l'utilisation de **sudo**. === Accès à distance avec le compte root (déconseillé)=== Pour des raisons de sécurité, l'**accès en SSH avec le compte root est interdit**. Pour le permettre, le fichier **/etc/ssh/sshd_config** doit être modifié : * la ligne suivante doit être commentée # PermitRootLogin prohibit-password * ajoutez la ligne suivangte : PermitRootLogin yes Relancez le service ssh # systemctl restart ssh Pour ouvrir une session à distance avec SSH utilisez maintenant : * le compte **root** ; * le mot de passe que vous avez défini (**btssio** suggéré). === Accès à distance avec le compte qui n'est pas root === Si nécessaire **créez un compte linux** sur votre VM en utilisant la commande **adduser**. Renseignez le mot de passe et les autres informations demandées : # adduser btssio Donnez maintenant la possibilité à ce compte d'avoir une **élévation de privilèges** : * installer sudo # apt install sudo * ajouter l'utilisateur nouvellement créé au groupe sudo # adduser btssio sudo ou # usermod -aG sudo btssio ==== Accès au serveur en ligne de commande avec SSH ==== Il est nécessaire de disposer d'un client SSH. Un client SSH disponible sous Windows. Pour installer le client SSH sous Windows : * accédez à l'outil aux **fonctionnalités facultatives** de Windows ; * puis ajouter le **Client OpenSSH** {{ :reseau:debian:ssh_1.png |}} * Lancez une **invite de commandes** et saisissez le nom du client OpenSSH suivi de l'adresse du serveur distant en précisant le compte de connexion : C:>ssh compte@199.199.199.199 * saisissez ensuite le mot de passe du compte. Il est possible de préciser le mot de passe à la connexion de la manière suivante (déconseillé) C:>ssh compte:motdepasse@199.199.199.199 ==== Configuration le client SSH ==== Lien : http://octetmalin.net/linux/tutoriels/ssh-fichier-etc-ssh_config-configuration-machine-client.php Sur le client Linux, le fichier **/etc/ssh/ssh_config** permet de configurer les **paramètres globaux** du client pour toutes les connexions vers des serveurs **ssh**. Pour chaque compte utilisateur, une configutation personnalisée se fait créant/modifiant le fichier **config** situé dans le répertoire utilisateur **.ssh** (/home/[nom_utilisateur]/.ssh/config sous Linux) Les options utilisables sont les même que celles du fichier **/etc/ssh/ssh_config**. === Exemple : === Host serveurssh Hostname 192.168.10.20 Port 4242 User root === Explication : === * **Host** : défini un nom pour le serveur ssh * **Hostname** adresse IP ou nom DNS du serveur * **Port** : port ssh si différent du post SSH par defaut 22 * **User** : précise le nom de connexion === Utilisation === ssh serveurssh === Autres options === * **Host * ** : Permet de définir vers quel machine les paramètres vont s'appliquer, l'étoile veut dire toutes. * **RSAAuthentication yes** : indique de tenter une authentification RSA, clé publique/privé généré avec "ssh-keygen" * **PubKeyAuthentication yes** : authentification avec une clé public. * **PasswordAuthentication yes** : autorise l'authentification de base avec mot de passe. * **CheckHostIP yes** : Spécifie si le ssh doit vérifier l'adresse IP de l'hôte qui se connectent au serveur pour détecter une usurpation DNS. * **IdentityFile** ~/.ssh/id_dsa : définit la clé privé a utiliser pour s'authentifier lors de la connexion au serveur * **User nom_du_compte** : définit le nom du compte utilisateur à distance à utiliser pour ce connecter. * **Port 22** : numéro de port du serveur SSH distant. === Mémoriser la clé privée === Lien : http://www.openssh.com/manual.html La commande **ssh-add** permet de mémoriser une clé privée avec sa passphrase. La passphrase est demandée lors de l'exécution de la commande. ssh-add Enter passphrase for /home/cedric/.ssh/id_dsa: Identity added: /home/utilisateur/.ssh/id_dsa (/home/utilisateur/.ssh/id_dsa) Lors de la connexion au serveur SSSH distant, il ne sera plus nécessaire de saisir la passphrase. === Lister les empreintes (fingerprints) des clés privées (identités) en mémoire === ssh-add -l 2048 SHA256:XZvFr9RRRRRRRRRRsIU6wuH7M0Tdr+9eDYlut1pozxc .\.ssh\id_rsa (RSA) Si ce message suivant apparaît, cela signifie qu'il n'y a pas de clé dont la passphrase est en mémoire The agent has no identities. === Lister les clés publiques associées aux clés privées en mémoires === ssh-add -L ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAzWXO7r9vOcLav80OG2OMLdRXYLx1L4+hf6hPwm/bMfvbJdLN5s3cyxf37/XzwfEqdhMA60lHc7LeKtdBkadkocbmmggjvXoCZwY6J1RspY+KcY9oCDNsOFgPNyKF7l7YKXOKmc6TJxLg4R5ZelTpIN3SX+YyAuIxOLT4KVDutNl2iA1XsK527niJbxNtExgwIpJ3r1zkmyMI6eYMzQedtkpHntc8PFxTuMqHNDcbBUKAXcWMEwdDEAlGwelnpijup9BCePLGBwGPWNIVV6mQEkW9psmWavdRfMSflbLweahSfE4rhoBd9qSXRJwf6yvKnAj+N8rTul+SljI20LHAzw== .\.ssh\id_rsa === Supprimer une identité en mémoire === ssh-add -d === Supprimer toutes les dentités en mémoire === ssh-add -D ==== Configuration de l'accès SSH au serveur avec Putty ==== * Configurez Putty pour avoir un accès **console** à votre serveur. * Indiquez l'**adresse IP** de votre serveur et le **port 22 (SSH)**. {{ .:putty_01.png |}} * précisez le compte **root** pour vous connecter : {{ .:putty_02.png |}} * Cliquez sur **Open** pour lancer la connexion.