tuto:1
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tuto:1 [2016/08/08 18:11] – ssm2017 | tuto:1 [2022/02/07 12:32] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== ssh ====== | ====== ssh ====== | ||
| - | ===== Qu'est ce qu'un réseau informatique ? ===== | + | ===== Rappels ===== |
| + | |||
| + | ==== Qu'est ce qu'un réseau informatique ? ==== | ||
| Un réseau est un ensemble d' | Un réseau est un ensemble d' | ||
| Line 9: | Line 11: | ||
| Par exemple, on met une banane dans un emballage qui contient plusieurs bananes, cet emballage, on le met dans une boite qui contient plusieurs emballages et on met cette boite dans un container qui contient plusieurs boites et ce container on le met dans un bateau qui contient plusieurs containers... | Par exemple, on met une banane dans un emballage qui contient plusieurs bananes, cet emballage, on le met dans une boite qui contient plusieurs emballages et on met cette boite dans un container qui contient plusieurs boites et ce container on le met dans un bateau qui contient plusieurs containers... | ||
| - | ===== Qu'est ce qu' | + | ==== Qu'est ce qu' |
| Internet est un ensemble de réseaux reliés entre eux. | Internet est un ensemble de réseaux reliés entre eux. | ||
| Line 22: | Line 24: | ||
| Ces deux fonctionnalités sont gérées par un organisme indépendant international qui se trouve aux états unis (ouais, flippant mais en meme temps, ce sont pas les pires) puis est subdivisé par pays. | Ces deux fonctionnalités sont gérées par un organisme indépendant international qui se trouve aux états unis (ouais, flippant mais en meme temps, ce sont pas les pires) puis est subdivisé par pays. | ||
| - | ===== Qu'est ce qu'une plage d' | + | ==== Qu'est ce qu'une plage d' |
| Chaque appareil relié au résal (oui, un resal, des réseaux comme un ridal, des rideaux) possède une adresse unique qui permet de l' | Chaque appareil relié au résal (oui, un resal, des réseaux comme un ridal, des rideaux) possède une adresse unique qui permet de l' | ||
| Line 41: | Line 43: | ||
| Donc en regardant une adresse, on peut savoir dans quel pays et quel fournisseur se trouve l' | Donc en regardant une adresse, on peut savoir dans quel pays et quel fournisseur se trouve l' | ||
| - | ===== Qu'est ce qu'un ordinateur ? ===== | + | ==== Qu'est ce qu'un ordinateur ? ==== |
| Vous croyez vraiment que je vais vous expliquer cela ? | Vous croyez vraiment que je vais vous expliquer cela ? | ||
| - | ===== Qu'est ce qu'un systeme client / serveur ? ===== | + | ==== Qu'est ce qu'un systeme client / serveur ? ==== |
| Pour communiquer entre appareils, il y a soit des systemes point à point (peer to peer), soit des systemes client / serveur. | Pour communiquer entre appareils, il y a soit des systemes point à point (peer to peer), soit des systemes client / serveur. | ||
| Line 67: | Line 69: | ||
| Le logiciel serveur attend qu'un logiciel client se connecte à lui pour lui demander quelque chose sinon il attend (ou essuie les verres en attendant). | Le logiciel serveur attend qu'un logiciel client se connecte à lui pour lui demander quelque chose sinon il attend (ou essuie les verres en attendant). | ||
| - | ===== Qu'est ce qu'un service ? ===== | + | ==== Qu'est ce qu'un service ? ==== |
| Un service est proposé par un serveur à un client. | Un service est proposé par un serveur à un client. | ||
| Line 73: | Line 75: | ||
| Chaque service sur un réseau est caractérisé par un port (l' | Chaque service sur un réseau est caractérisé par un port (l' | ||
| - | ===== Qu'est ce qu'un port ? ===== | + | ==== Qu'est ce qu'un port ? ==== |
| Un port est un nombre entre 1 et 65535 qui est unique par protocole utilisé. | Un port est un nombre entre 1 et 65535 qui est unique par protocole utilisé. | ||
| Line 85: | Line 87: | ||
| Par exemple, si vous choisissez le port 24 pour ssh et qu'un autre service utilise le port 24, il y aura une erreur lors du lancement. | Par exemple, si vous choisissez le port 24 pour ssh et qu'un autre service utilise le port 24, il y aura une erreur lors du lancement. | ||
| - | ===== Qu'est ce qu'un interpréteur de commandes ? ===== | + | ==== Qu'est ce qu'un interpréteur de commandes ? ==== |
| L' | L' | ||
| Line 134: | Line 136: | ||
| * le serveur repond au client en chiffrant la connexion avec la clef du client | * le serveur repond au client en chiffrant la connexion avec la clef du client | ||
| - | ==== Comment se connecter par SSH avec la ligne de commande | + | ===== Se connecter par ssh ===== |
| + | |||
| + | ==== Comment se connecter par SSH avec la ligne de commandes | ||
| Pour se connecter, on utilise le format suivant : ssh utilisateur@machine | Pour se connecter, on utilise le format suivant : ssh utilisateur@machine | ||
| Line 146: | Line 150: | ||
| On appuie ensuite sur le bouton " | On appuie ensuite sur le bouton " | ||
| + | |||
| + | ===== Les clefs de connexion ===== | ||
| ==== Qu'est ce qu'une clef de chiffrement ? ==== | ==== Qu'est ce qu'une clef de chiffrement ? ==== | ||
| Line 233: | Line 239: | ||
| Sous windows, vous les mettez où vous voulez en disant à putty à quel endroit elles se trouvent. | Sous windows, vous les mettez où vous voulez en disant à putty à quel endroit elles se trouvent. | ||
| + | |||
| + | ==== Ajouter la clef publique d'un utilisateur sur un serveur ==== | ||
| + | |||
| + | Etapes : | ||
| + | |||
| + | * creer un dossier .ssh dans le home de l' | ||
| + | * creer un fichier authorized_keys dans le dossier .ssh (si pas existant) | ||
| + | * ajouter la clef de l' | ||
| + | * changer les droits sur le dossier et le fichier | ||
| + | * sudo mkdir / | ||
| + | * sudo nano / | ||
| + | * sudo chown -R nom_user: | ||
| + | * sudo chmod 700 / | ||
| + | * sudo chmod 600 / | ||
| + | |||
| + | ==== Remarque sur le format de la clef ==== | ||
| + | |||
| + | Quand on genere une paire de clefs avec puttygen, elle ressemble à ceci : | ||
| + | |||
| + | <sxh> | ||
| + | ---- BEGIN SSH2 PUBLIC KEY ---- | ||
| + | Comment: " | ||
| + | AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/ | ||
| + | aij1QKZSLELaUi7uAAJ9tNZi4NLmAH3oimMlmJaF3zoOXJ5sHrnI8l33jwpdaClH | ||
| + | Yhb3DkRzhJRRJ8IZA5toD2zOrioURsYuP1gJ87KkQy6/ | ||
| + | 4yafg4kcpVrcm+NDwEYSqEpLVG/ | ||
| + | yZZsD6qiwkmyza+g4zojsopML/ | ||
| + | Awh8uNKSBcpOSKGdC2F3tPWaytIIeH3BM0ZpZH/ | ||
| + | ---- END SSH2 PUBLIC KEY ---- | ||
| + | </ | ||
| + | or, dans le fichier ~/ | ||
| + | |||
| + | donc on recupere la clef en elle meme : | ||
| + | <sxh> | ||
| + | AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/ | ||
| + | aij1QKZSLELaUi7uAAJ9tNZi4NLmAH3oimMlmJaF3zoOXJ5sHrnI8l33jwpdaClH | ||
| + | Yhb3DkRzhJRRJ8IZA5toD2zOrioURsYuP1gJ87KkQy6/ | ||
| + | 4yafg4kcpVrcm+NDwEYSqEpLVG/ | ||
| + | yZZsD6qiwkmyza+g4zojsopML/ | ||
| + | Awh8uNKSBcpOSKGdC2F3tPWaytIIeH3BM0ZpZH/ | ||
| + | </ | ||
| + | ensuite on en fait une seule ligne : | ||
| + | <sxh> | ||
| + | AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/ | ||
| + | </ | ||
| + | puis on ajoute ssh-rsa au début : | ||
| + | <sxh> | ||
| + | ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/ | ||
| + | </ | ||
| + | et on ajoute cela dans le fichier ~/ | ||
| + | |||
| + | ===== Les aliases ===== | ||
| ==== Comment se faciliter la vie lors d'une connexion ssh ? ==== | ==== Comment se faciliter la vie lors d'une connexion ssh ? ==== | ||
| Line 278: | Line 336: | ||
| Sous windows (dans putty), il est possible de créer plusieurs " | Sous windows (dans putty), il est possible de créer plusieurs " | ||
| - | ==== | ||
| - | Que peut on faire d' | ||
| - | ssh permet de communiquer par un interpreteur de commande entre un client et un serveur. | + | ===== sftp ===== |
| - | On peut aussi envoyer ou récupérer | + | Sftp est tres pratique car il permet de transferer |
| + | |||
| + | Par défaut, sftp est déjà actif. | ||
| + | |||
| + | Voir la partie " | ||
| + | |||
| + | ==== Se connecter par sftp ==== | ||
| + | |||
| + | === Client | ||
| + | |||
| + | Utiliser son client ftp préféré supportant sftp (comme filezilla bien qu'il soit relou concernant les clef ssh mais ça fonctionne quand même). | ||
| + | |||
| + | === Navigateur de fichiers === | ||
| + | |||
| + | Beaucoup de navigateurs de fichiers sous linux ou mac permettent la connexion sftp donc entrer l' | ||
| + | |||
| + | La ligne de connexion est souvent : sftp:// | ||
| + | |||
| + | Bien sûr si vous utilisez | ||
| + | |||
| + | ==== Monter un volume sftp ==== | ||
| + | |||
| + | Il existe sous linux un programme nommé " | ||
| + | |||
| + | Voir https:// | ||
| + | |||
| + | ===== Les tunnels ===== | ||
| ssh permet aussi de faire transiter n' | ssh permet aussi de faire transiter n' | ||
| Line 319: | Line 401: | ||
| et tout ce qu'on va demander au navigateur web passera par le serveur ssh. | et tout ce qu'on va demander au navigateur web passera par le serveur ssh. | ||
| - | ==== Installer un serveur ssh ==== | + | ===== Installer un serveur ssh ===== |
| Sous linux (debian/ | Sous linux (debian/ | ||
| Line 326: | Line 408: | ||
| </ | </ | ||
| - | une fois installé, ajouter sa clef publique perso dans : /home/son_user/.ssh/authorized_keys | + | Le fichier de configuration est /etc/ssh/sshd_config |
| - | editer le fichier /etc/ssh/ | + | si besoin, relancer |
| <sxh bash> | <sxh bash> | ||
| - | sudo nano /etc/ssh/ | + | sudo service |
| </ | </ | ||
| - | changer les valeurs de : | ||
| - | * Port 22 en Port 8822 (par exemple ou n' | + | Le fichier |
| - | * enlever le # devant PasswordAuthentication yes et mettre no à la place de yes | + | |
| - | sauvegarder avec ctrl+o puis sortir avec ctrl+x | + | ==== Sécuriser un serveur ssh ==== |
| - | relancer | + | === Changer le port === |
| + | |||
| + | Beaucoup de scanners martellent le port 22 qui est celui par defaut de ssh donc il est recommandé d'en utiliser un autre. | ||
| + | |||
| + | Pour cela, nous avons besoin d'un serveur sur lequel ssh est déjà installé, d'un clavier et de quelques doigts (ou le nez pour ceux qui n'ont pas de bras). | ||
| + | |||
| + | * Editer le fichier de config de ssh qui est : / | ||
| + | * Rechercher la ligne commençant par " | ||
| + | * Remplacer 22 par le port voulu (9876 par exemple) | ||
| + | * Sauvegarder le fichier | ||
| + | * Relancer ssh | ||
| + | |||
| + | === Interdire la connexion en root === | ||
| + | |||
| + | * Editer le fichier de config de ssh qui est : / | ||
| + | * Rechercher la ligne commençant par " | ||
| + | * Sauvegarder le fichier | ||
| + | * Relancer ssh | ||
| + | |||
| + | === Interdire les connexions par mot de passe === | ||
| + | |||
| + | Une fois ce paramètre modifié, vous ne pourrez plus vous connecter au serveur si vous n'avez pas configurée une clef ssh donc voir plus haut pour voir comment faire (et tester la clef avant de faire la manip... je dis ça, je dis rien mais j'le dis quand même...). | ||
| + | |||
| + | * Editer le fichier de config de ssh qui est : / | ||
| + | * Rechercher la ligne commençant par "# | ||
| + | * Sauvegarder le fichier | ||
| + | * Relancer ssh | ||
| + | |||
| + | === Autoriser que les ip voulues === | ||
| + | |||
| + | On peut dire au système d' | ||
| + | |||
| + | Nous n' | ||
| + | |||
| + | * Créer un fichier / | ||
| + | * Le rendre exécutable (avec chmod +x par exemple) | ||
| + | * Y mettre | ||
| <sxh bash> | <sxh bash> | ||
| - | sudo service | + | # |
| + | # on lui dit à quel endroit se trouve le programme iptables (au cas où) | ||
| + | IPTABLES="/ | ||
| + | # on lui dit quelle est notre carte réseau | ||
| + | WAN1_IFACE=" | ||
| + | # on lui dit quel est le port utilisé par ssh | ||
| + | SSH_PORT=" | ||
| + | # on lui donne une liste d' | ||
| + | ADMIN_IP=" | ||
| + | # on génère les regles iptables une par une dans une boucle | ||
| + | for admin in ${ADMIN_IP}; | ||
| + | ${IPTABLES} -t filter -A INPUT -p tcp -i ${WAN1_IFACE} -s ${admin} --dport ${SSH_PORT} -j ACCEPT | ||
| + | done | ||
| </ | </ | ||
| + | * Ensuite on vérifie que les règles ont bien été déclarées avec : iptables -L | ||
| - | === Ajouter la clef publique d'un utilisateur sur un serveur | + | === Utiliser fail2ban |
| - | Etapes : | + | Fail2ban est un daemon écrit en python qui lit en permanence les fichiers de logs à la recherche de choses bizarres et si il détecte quelque chose d' |
| - | * creer un dossier .ssh dans le home de l' | + | * Installer fail2Ban : apt-get install fail2ban |
| - | * creer un fichier | + | * Créer une règle perso en ajoutant |
| - | * ajouter la clef de l' | + | <sxh ini> |
| - | * changer les droits sur le dossier et le fichier | + | [ssh] |
| - | * sudo mkdir /home/nom_user/.ssh | + | |
| - | * sudo nano / | + | |
| - | * sudo chown -R nom_user:nom_user / | + | |
| - | * sudo chmod 700 / | + | |
| - | * sudo chmod 600 / | + | |
| - | === Remarque sur le format de la clef === | + | enabled |
| + | port = ssh, | ||
| + | filter | ||
| + | logpath | ||
| + | maxretry | ||
| + | </ | ||
| + | * Relancer fail2ban avec : service fail2ban restart | ||
| - | Quand on genere une paire de clefs avec puttygen, elle ressemble à ceci : | + | ==== sftp ==== |
| + | |||
| + | Voir plus haut la partie " | ||
| + | Par défaut, sftp est activé donc nous allons voir comment le configurer pour enfermer un utilisateur dans un dossier précis. | ||
| + | |||
| + | === Chroot sftp === | ||
| + | |||
| + | Parfois, nous avons besoin de permettre la connection d'un utilisateur sur un serveur afin qu'il puisse modifier certains fichiers (comme sur un serveur web par exemple) sauf qu'on veut surtout pas qu'il matte les dossiers de ses petits camarades ou qu'il se balade sur la bécane... | ||
| + | |||
| + | Pour verrouiller un utilisateur dans un dossier, il y a deux solutions : | ||
| + | |||
| + | * soit on met en place un chroot au niveau du système (lourd à mettre en place et maintenir) | ||
| + | * soit on fait un chroot en sftp (par contre l' | ||
| + | |||
| + | Voici la procédure (en prenant l' | ||
| + | |||
| + | == Configurer l' | ||
| + | |||
| + | * Créer un groupe qui contiendra les utilisateurs concernés : addgroup sftpusers | ||
| + | * Ajouter les utilisateurs concernés dans ce groupe : addgroup toto sftpusers | ||
| + | * Changer le propriétaire de leur dossier " | ||
| + | * Créer le dossier dans lequel ils seront enfermés : mkdir / | ||
| + | * Changer le propriétaire du dossier concerné : chown root:root / | ||
| + | * Créer un dossier dans lequel il pourra écrire : mkdir / | ||
| + | * Attribuer la propriété du fichier à l' | ||
| + | |||
| + | <callout type=" | ||
| + | |||
| + | == Configurer le serveur ssh == | ||
| + | |||
| + | * Editer le fichier de config de ssh qui est : / | ||
| + | * Aller tout à la fin | ||
| + | * Remplacer " | ||
| + | * Ajouter les paramètres suivants : | ||
| <sxh> | <sxh> | ||
| - | ---- BEGIN SSH2 PUBLIC KEY ---- | + | Match Group sftpusers |
| - | Comment: " | + | |
| - | AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/HXdGiX0F14EOyQEjbJlbs | + | |
| - | aij1QKZSLELaUi7uAAJ9tNZi4NLmAH3oimMlmJaF3zoOXJ5sHrnI8l33jwpdaClH | + | |
| - | Yhb3DkRzhJRRJ8IZA5toD2zOrioURsYuP1gJ87KkQy6/yNYxqyVJB+3RqdWnMwTJ | + | |
| - | 4yafg4kcpVrcm+NDwEYSqEpLVG/8ANRi0rCgLhmNA/ | + | PasswordAuthentication yes |
| - | yZZsD6qiwkmyza+g4zojsopML/ | + | |
| - | Awh8uNKSBcpOSKGdC2F3tPWaytIIeH3BM0ZpZH/ | + | |
| - | ---- END SSH2 PUBLIC KEY ---- | + | |
| </ | </ | ||
| - | or, dans le fichier ~/ | ||
| - | donc on recupere la clef en elle meme : | + | <callout type=" |
| - | <sxh> | + | * Relancer ssh |
| - | AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/ | + | |
| - | aij1QKZSLELaUi7uAAJ9tNZi4NLmAH3oimMlmJaF3zoOXJ5sHrnI8l33jwpdaClH | + | <callout type=" |
| - | Yhb3DkRzhJRRJ8IZA5toD2zOrioURsYuP1gJ87KkQy6/ | + | |
| - | 4yafg4kcpVrcm+NDwEYSqEpLVG/ | + | |
| - | yZZsD6qiwkmyza+g4zojsopML/ | + | |
| - | Awh8uNKSBcpOSKGdC2F3tPWaytIIeH3BM0ZpZH/ | + | |
| - | </sxh> | + | |
| - | ensuite on en fait une seule ligne : | + | |
| - | <sxh> | + | |
| - | AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/ | + | |
| - | </sxh> | + | |
| - | puis on ajoute ssh-rsa au début | + | |
| - | < | + | |
| - | ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqDbFZB1upDPFv7/HXdGiX0F14EOyQEjbJlbsaij1QKZSLELaUi7uAAJ9tNZi4NLmAH3oimMlmJaF3zoOXJ5sHrnI8l33jwpdaClHYhb3DkRzhJRRJ8IZA5toD2zOrioURsYuP1gJ87KkQy6/yNYxqyVJB+3RqdWnMwTJ4yafg4kcpVrcm+NDwEYSqEpLVG/8ANRi0rCgLhmNA/ | + | |
| - | </sxh> | + | |
| - | et on ajoute cela dans le fichier ~/ | + | |
| - | + | ||
| ===== notes ===== | ===== notes ===== | ||
| http:// | http:// | ||
tuto/1.1470672696.txt.gz · Last modified: (external edit)
