User Tools

Site Tools


tuto:1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tuto:1 [2016/11/10 10:23] – remise en forme ssm2017tuto:1 [2022/02/07 12:32] (current) – external edit 127.0.0.1
Line 336: Line 336:
  
 Sous windows (dans putty), il est possible de créer plusieurs "sessions" et les enregistrer puis les rappeller. Sous windows (dans putty), il est possible de créer plusieurs "sessions" et les enregistrer puis les rappeller.
 +
 +===== sftp =====
 +
 +Sftp est tres pratique car il permet de transferer des fichiers ou monter un dossier distant sans avoir à installer un serveur ftp tout en utilisant une connexion sécurisée.
 +
 +Par défaut, sftp est déjà actif.
 +
 +Voir la partie "Installation" pour voir comment le mettre en place.
 +
 +==== Se connecter par sftp ====
 +
 +=== Client ftp ===
 +
 +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'adresse sftp dans la barre d'adresse (souvent accessible par ctrl+l).
 +
 +La ligne de connexion est souvent : sftp://utilisateur@serveur
 +
 +Bien sûr si vous utilisez le fichiers de config des aliases, le boulot est facilité avec : sftp://toto
 +
 +==== Monter un volume sftp ====
 +
 +Il existe sous linux un programme nommé "sshfs" qui permet de monter un volume sftp dans un répertoire local.
 +
 +Voir https://doc.ubuntu-fr.org/sshfs
  
 ===== Les tunnels ===== ===== Les tunnels =====
Line 380: Line 408:
 </sxh> </sxh>
  
-editer le fichier /etc/ssh/sshd_config +Le fichier de configuration est /etc/ssh/sshd_config
-<sxh bash> +
-sudo nano /etc/ssh/sshd_config +
-</sxh>+
  
 si besoin, relancer ssh avec : si besoin, relancer ssh avec :
Line 390: Line 415:
 </sxh> </sxh>
  
 +Le fichier de logs des connexions est : /var/log/auth.log
 +
 +==== Sécuriser un serveur ssh ====
 +
 +=== 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 : /etc/ssh/sshd_config
 +  * Rechercher la ligne commençant par "Port" (normalement au tout début)
 +  * 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 : /etc/ssh/sshd_config
 +  * Rechercher la ligne commençant par "PermitRootLogin" et y mettre la valeur "no" (par défaut c'est "without-password")
 +  * 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 : /etc/ssh/sshd_config
 +  * Rechercher la ligne commençant par "#PasswordAuthentication" et y mettre la valeur "no" (en enlevant le dièse (#) du début bien sûr)
 +  * Sauvegarder le fichier
 +  * Relancer ssh
 +
 +=== Autoriser que les ip voulues ===
 +
 +On peut dire au système d'autoriser que les ip voulues sur un port donné à se connecter. Pour cela, nous allons utiliser iptables qui est le firewall intégré dans la plupart des noyaux linux.
 +
 +Nous n'allons pas parler de l'initialisation des règles iptables ni de leur persistance car c'est hors sujet (utiliser un moteur de recherche sur le web).
 +
 +  * Créer un fichier /etc/network/if-pre-up.d/iptables (qui sera exécuté avant le démarrage de la carte réseau)
 +  * Le rendre exécutable (avec chmod +x par exemple)
 +  * Y mettre :
 +<sxh bash>
 +#!/bin/bash
 +# on lui dit à quel endroit se trouve le programme iptables (au cas où)
 +IPTABLES="/sbin/iptables"
 +# on lui dit quelle est notre carte réseau
 +WAN1_IFACE="eth0"
 +# on lui dit quel est le port utilisé par ssh
 +SSH_PORT="9876"
 +# on lui donne une liste d'adresses ip autorisées à utiliser ssh (séparées par un espace)
 +ADMIN_IP="82.228.255.123 78.47.216.123"
 +# on génère les regles iptables une par une dans une boucle
 +for admin in ${ADMIN_IP}; do
 +    ${IPTABLES} -t filter -A INPUT -p tcp -i ${WAN1_IFACE} -s ${admin} --dport ${SSH_PORT} -j ACCEPT
 +done
 +</sxh>
 +  * Ensuite on vérifie que les règles ont bien été déclarées avec : iptables -L
 +
 +=== Utiliser fail2ban ===
 +
 +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'anormal (selon ce qu'on lui demande), il crée une règle iptables permettant de bannir l'ip concernée.
 +
 +  * Installer fail2Ban : apt-get install fail2ban
 +  * Créer une règle perso en ajoutant un fichier /etc/fail2ban/jail.d/ssh.conf et qui contient :
 +<sxh ini>
 +[ssh]
 +
 +enabled  = true
 +port     = ssh,sftp,9876
 +filter   = sshd
 +logpath  = /var/log/auth.log
 +maxretry = 6
 +</sxh>
 +  * Relancer fail2ban avec : service fail2ban restart
 +
 +==== sftp ====
 +
 +Voir plus haut la partie "sftp" pour voir ce que c'est.
 +
 +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'utilisateur n'aura plus acces à ssh mais seulement à sftp)
 +
 +Voici la procédure (en prenant l'utilisateur "toto") :
 +
 +== Configurer l'utilisateur ==
 +
 +  * 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 "home" : chown root:root /home/toto
 +  * Créer le dossier dans lequel ils seront enfermés : mkdir /home/toto/sftp
 +  * Changer le propriétaire du dossier concerné : chown root:root /home/toto/sftp
 +  * Créer un dossier dans lequel il pourra écrire : mkdir /home/toto/sftp/htdocs
 +  * Attribuer la propriété du fichier à l'utilisateur : chown toto:toto /home/toto/sftp/htdocs
 +
 +<callout type="info" icon="true">Note : Si le dossier se trouve autre part sur le système, utiliser ensuite un "mount bind" au besoin...</callout>
 +
 +== Configurer le serveur ssh ==
 +
 +  * Editer le fichier de config de ssh qui est : /etc/ssh/sshd_config
 +  * Aller tout à la fin
 +  * Remplacer "Subsystem sftp /usr/lib/openssh/sftp-server" par "Subsystem sftp internal-sftp"
 +  * Ajouter les paramètres suivants :
 +<sxh>
 +Match Group sftpusers
 +        ChrootDirectory /home/%u/sftp
 +        ForceCommand internal-sftp
 +        AllowTCPForwarding no
 +        X11Forwarding no
 +        PasswordAuthentication yes
 +</sxh>
 +
 +<callout type="info" icon="true">Note : les lignes "AllowTCPForwarding", "X11Forwarding" et "PasswordAuthentication" sont optionnelles.</callout>
 +  * Relancer ssh
 +
 +<callout type="info" icon="true">Note : si il y a un probleme de connexion, regarder les logs lors de la connexion avec : "tail -f /var/log/auth.log"</callout>
  
-  
 ===== notes ===== ===== notes =====
  
 http://www.woueb.net/2011/09/13/authentification-ssh-cle-publique-windows/ http://www.woueb.net/2011/09/13/authentification-ssh-cle-publique-windows/
  
tuto/1.1478769798.txt.gz · Last modified: (external edit)