Partage
  • Partager sur Facebook
  • Partager sur Twitter

Chroot SSH RSYNC

Comment n'autorise que le rsync

Anonyme
    22 décembre 2020 à 19:52:48

    Bonjour,

    J'ai 2 serveurs, A et B. J'ai le serveur A qui est en production et le serveur B qui a pour objectif de synchroniser les dossiers du serveur A.

    Pour ce faire, j'utilise rsync en connexion ssh. Cependant je remarque quelque chose d'embêtant l'utilisateur rsync n'est pas isolé.

    Je souhaiterai savoir s'il était possible de configurer cette utilisateur pour l'autoriser à se connecter en ssh seulement pour pouvoir exécuter la commande rsync ?

    Je vous remercie,

    -
    Edité par Anonyme 22 décembre 2020 à 19:53:18

    • Partager sur Facebook
    • Partager sur Twitter
      23 décembre 2020 à 7:07:34

      salut,

      je ne sais pas exactement. Une piste peut-être : $username/.ssh/ssh_config
      dans lequel tu définis la machine cible (Host), et la commande distante (RemoteCommand).

      cf. man ssh_config

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

      Anonyme
        23 décembre 2020 à 14:26:53

        J'ai effectivement fait quelques recherches vers cette solution, mais elle semble n'être utilisé pour n'autoriser que le sftp - d'après ma compréhension (qui peut être fausse), pour faire mon rsync j'utilise le protocole ssh, et pour ce faire, il faut que j'autorise mon utilisateur à utiliser ssh et pas seulement le sftp, et si j'autorise le ssh, il a accès au terminal..? Sinon je n'ai pas bien compris comment configuré le chroot dans le fichier de configuration ssh
        • Partager sur Facebook
        • Partager sur Twitter
          23 décembre 2020 à 14:35:07

          hmm, j'ai pris le problème à l'air, on dirait : ce que je suggère exécute une commande (je pensais à rsync en guise de RemoteCommand) sur l'hôte distant lors de l'invocation de la commande ssh.

          mais, est-ce que, si, à la place de rsync, on met un simple exit, la connexion sera immédiatement interrompu, et alors la commande rsync (via ssh) continuera de fonctionner ?

          -
          Edité par dantonq 23 décembre 2020 à 14:35:42

          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

          Anonyme
            23 décembre 2020 à 14:44:39

            J'ai pas très bien compris la question..?

            Mon objectif c'est de créer un utilisateur qui ne peut seulement effectuer la commande
            rsync -avzhe ssh usertest@testserver.example.com:/var/www/ /var/www

            tout en  l'empêchant de pouvoir avoir accès à un terminal ou à un profil utilisateur - le même concept que les utilisateurs sftp sauf qu'au lieu de faire du sftp on fait un rsync... Je ne sais pas si je suis clair ???

            -
            Edité par Anonyme 23 décembre 2020 à 14:45:34

            • Partager sur Facebook
            • Partager sur Twitter
              23 décembre 2020 à 16:48:12

              je crois que c'est clair; c'est moi qui avais mal pris la question initiale.

              je viens de tester rsync avec une RemoteCommand dans ~/.ssh/config, mais ce n'est pas possible :

              RemoteCommand interdit d'indiquer d'autres commandes sur la ligne de commande, et l'emploi de sftp et rsync...

              donc, je ne sais pas, :(
              mais je suis curieux; si tu réussis à faire ce que tu veux, ce serait sympa de nous dire comment tu as fait.

              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

              Anonyme
                26 décembre 2020 à 15:20:49

                Je suis passé en mode expérimental, j'ai alors essayé des tas de choses wtf qui n'ont bien évidemment pas fonctionné, pour la culture voici la liste des essais que j'ai tentés :

                - Tenté d'obliger l'utilisateur à ne pouvoir se connecter seulement sur un port différent de celui paramétrer pour ssh (dans l'objectif de le filtrer avec le pare-feu et d'autoriser cet utilisateur seulement depuis l'interface LAN)

                - Tenté de faire exécuter un script de commande à l'utilisateur via l'option "ForceCommande" dans la config du SSH (semi fonctionné, je n'ai peut-être pas assez approfondit cette piste)

                - Tenté de faire exécuter un script de commande via le sftp

                - Tenté de dire à rsync d'utiliser le protocole sftp

                - Tenté de dire à ssh qu'rsync était un subsystem et d'obliger l'utilisateur à utiliser la commande "rsync"

                -
                Edité par Anonyme 26 décembre 2020 à 15:22:14

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  28 décembre 2020 à 11:27:38

                  Bon, j'ai pas répondu à ma problématique, la communauté non plus d'ailleurs, mais au cas où quelqu'un tombe sur le même questionnement :

                  J'ai une connexion VPN entre mes deux serveurs, j'ai donc fait un script où root :

                  1/ sauvegarde le dossier en archive,

                  2/ c/p le dossier dans le répertoire utilisateur,

                  3/ donne les droits sur l'archive à l'utilisateur,

                  4/ l'utilisateur fait un scp fait le serveur cible

                  5/ 2eme script où root c/p l'archive dans le dossier cible

                  6/ décompresse l'archive dans le dossier cible

                  7/ redonne les droits à l'utilisateur du dossier cible


                  Bon c'est vraiment pas la best solution ever, en terme de sécu on a vu mieux, après le script n'est pas exécutable par l'utilisateur - cependant ça reste une tâche automatisée, si l'utilisateur se fait pété il peut potentiellement altérer les données du backup avant de l'envoyer sur le deuxième serveur, mais bon même là on laisse qu'un droit de lecture et ça devrait pas trop poser de soucis, après on oublie pas le petit calcul risque et chance que le serveur soit attaqué et que cette faille soit exploitée et bien-évidemment, l'étendu de cette faille, on se rend compte qu'il y a toujours des backups et qu'il est peu probable qu'on m'en veuille au point de tout cassé chez moi (puis il faut arriver jusqu'à l'utilisateur aussi) - même si certains pourrait voir ça comme une provocation j'ai quand même mentis sur 2/3 points stratégiques pour vous compliquer la tâche.

                  voilà bisous

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 décembre 2020 à 12:05:52

                    Bonjour,

                    Rsync offre la possibilité d'être un démon: https://download.samba.org/pub/rsync/rsyncd.conf.5. Le problème avec ça je crois, c'est que ça ne permet pas de chiffrer les données directement (ce que règle ta connexion VPN).

                    Tu t'affranchis du shell comme ça non?

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      28 décembre 2020 à 12:11:30

                      Mais dans ce cas de figure là, en gros, c'est root qui va lancé la commande indirectement ?

                      parce qu'avec rsync j'utilise l'option -e ssh, où le PermitRootLogin = no
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 décembre 2020 à 14:37:30

                        Non, tu utilises le protocole rsync (qui ne chiffre pas le payload), donc plus de shell.

                        Ton démon sert un partage (/var/www/) et ton client peut copier sans utiliser ssh:

                        • serveur:
                        uid = nobody
                        gid = nobody
                        use chroot = no
                        max connections = 4
                        syslog facility = local5
                        pid file = /run/rsyncd.pid
                        
                        [web]
                                path = /var/www
                                auth users = user:ro
                                secrets file = /etc/rsyncd.secrets
                                strict modes = true
                        
                        • Client:
                        $ RSYNC_PASSWORD='password'
                        $ rsync -av rsync://user@serveurA/web/ /var/html

                        Un tâche cron pour lancer le backup fera amplement l'affaire non?

                        -
                        Edité par KoaTao 28 décembre 2020 à 14:38:00

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          14 janvier 2021 à 11:33:04

                          Bonjour,

                          J'entends la solution, cependant mes serveurs sont géographiquement à 2 endroits différents, du coup, il ne peut pas y avoir de communication non sécurisé entre les deux équipements. Or sur la solution proposé, la communication n'est pas chiffré si j'ai bien compris ?

                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 janvier 2021 à 20:45:08

                            Bonjour,

                            KoaTao a écrit:

                            Bonjour,

                            Le problème avec ça je crois, c'est que ça ne permet pas de chiffrer les données directement (ce que règle ta connexion VPN)

                            Nihylix a écrit:

                            J'ai une connexion VPN entre mes deux serveurs

                            Nihylix a écrit:

                            j'ai quand même mentis sur 2/3 points stratégiques pour vous compliquer la tâche.

                            Ou alors, faut être précis sur l'infra que tu as mis en place.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              25 janvier 2021 à 11:44:20

                              Nihylix a écrit:

                              Je souhaiterai savoir s'il était possible de configurer cette utilisateur pour l'autoriser à se connecter en ssh seulement pour pouvoir exécuter la commande rsync ?


                              Ou alors, faut répondre à la problématique initiale, étaler mon infra et mes mesures de sécurités au milieu de l'internet n'est pas une action très recommandé dans ma politique de sécurité.



                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 janvier 2021 à 0:21:38

                                -- EDIT Benzouye : Partie de message supprimée car inutilement méprisante --

                                Parce que je ne veux pas mourir con:

                                • Quel est le problème avec rrsync?
                                • Quel est le problème avec le protocole rsync si tu as un VPN?

                                -
                                Edité par Benzouye 8 février 2021 à 12:13:08

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  8 février 2021 à 11:06:07

                                  Nihylix a écrit:

                                  Bonjour,

                                  J'ai 2 serveurs, A et B. J'ai le serveur A qui est en production et le serveur B qui a pour objectif de synchroniser les dossiers du serveur A.

                                  Pour ce faire, j'utilise rsync en connexion ssh. Cependant je remarque quelque chose d'embêtant l'utilisateur rsync n'est pas isolé.

                                  Je souhaiterai savoir s'il était possible de configurer cette utilisateur pour l'autoriser à se connecter en ssh seulement pour pouvoir exécuter la commande rsync ?

                                  Je vous remercie,

                                  -
                                  Edité par Nihylix 22 décembre 2020 à 19:53:18



                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 février 2021 à 14:05:02

                                    Je vais être méprisant jusqu'au bout, et faire ce que je pensais qu'un «white hat» proactif avait fait avant d'avoir posté, ou au moins fait pendant ce mois et demi:

                                    • man sshd:
                                         command="command"
                                                 Specifies that the command is executed whenever this key is used for authentication.  The command
                                                 supplied by the user (if any) is ignored.  The command is run on a pty if the client requests a pty;
                                                 otherwise it is run without a tty.  If an 8-bit clean channel is required, one must not request a
                                                 pty or should specify no-pty.  A quote may be included in the command by quoting it with a back‐
                                                 slash.
                                    
                                                 This option might be useful to restrict certain public keys to perform just a specific operation.
                                                 An example might be a key that permits remote backups but nothing else.  Note that the client may
                                                 specify TCP and/or X11 forwarding unless they are explicitly prohibited, e.g. using the restrict key
                                                 option.
                                    
                                                 The command originally supplied by the client is available in the SSH_ORIGINAL_COMMAND environment
                                                 variable.  Note that this option applies to shell, command or subsystem execution.  Also note that
                                                 this command may be superseded by a sshd_config(5) ForceCommand directive.
                                    
                                                 If a command is specified and a forced-command is embedded in a certificate used for authentication,
                                                 then the certificate will be accepted only if the two commands are identical.
                                    • Nos meilleurs amis:

                                    https://lmddgtfy.net/?q=rsync%20restrict%20user%20command

                                    https://lmgtfy.app/#gsc.tab=0&gsc.q=rsync%20restreindre%20commande%20ssh

                                    KoaTao a écrit:

                                    Parce que je ne veux pas mourir con:

                                    • Quel est le problème avec rrsync?

                                    -
                                    Edité par KoaTao 8 février 2021 à 14:08:09

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      8 février 2021 à 16:13:29

                                      je vais observer ces liens un long moment

                                      -
                                      Edité par Anonyme 8 février 2021 à 16:21:03

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Chroot SSH RSYNC

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown