Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/09/2011, à 03:36

Tomzz

Prise en main a distance complète pour noobs total

Bonjour,
Bon le noobs ce n'est pas moi, du moins plus totalement wink

En fait je cherche a créer une série de scripts me permettant de prendre la main à distance sur un PC sous Ubuntu sans que celui qui est derrière le PC en question n'ai de manipulations compliquées à faire.
Dans l’idée cela devrai se résumer a installer un paquet et cliquer sur un lanceur.

J'ai déjà bossé sur le truc:

De mon coté, pour gérer de multiples connexions et de multiples façons de me connecter j'utilise ça (voir le paquet deb les autres scripts ne sont plus à jour).
Cette partie est testée et approuvée par moi... autrement dit ça marche chez moi (9.04, 10.04, 11.04 Gnome Unity et un test rapide sous Kde et Xfce mais attention aux dépendances).
Vous pouvez essayer mais je ne garanti rien d'autre que le "ça marche chez moi" wink

Pour préparer la configuration du PC à prendre en main je travaille sur ce script (ce coup ci je n'ai même pas encore teste chez moi alors ne jouez avec qu'en connaissance de cause)

#!/bin/bash
##


###################################################################################################################################################
## Copyright (C) 2010 www.2aide.fr                                                                                                               ##
##                                                                                                                                               ##
## Ce programme est un logiciel libre, vous pouvez le redistribuer et / ou le modifier selon les termes de la Licence Publique Générale GNU      ##
## telle que publiée par la Free Software Foundation; soit la version 2 de la Licence, ou (à votre choix) toute version ultérieure.              ##
##                                                                                                                                               ##
## Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION    ##
## ou D'ADAPTATION A UN USAGE PARTICULIER. Voir la Licence Publique Générale GNU, disponible ici http://www.opensource.org/licenses/gpl-2.0.php  ##
## pour plus de détails.                                                                                                                         ##
##                                                                                                                                               ##
## Vous devriez avoir reçu une copie de la Licence Publique Générale GNU avec ce programme, sinon, écrivez à                                     ##
## Free Software Foundation, Inc, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                                                          ##
##                                                                                                                                               ##
##                                                                                                                                               ##
##                                  En 2 mots, vous étes libre d'utiliser, de copier et de distribuer ce programme                               ##
##                                  à condition de soumettre votre copie à la même licence GPL v-2 ou ultérieure                                 ##
##                                                                                                                                               ##
###################################################################################################################################################

## Répertoire de travail, ce paramètre ne devrait pas être modifié
# /!\ pas de "/" à la fin du chemin
rept="$HOME/.2aide-help"

# Adresse de la clef publique à autoriser
add="http://www.je-stocke-ici.ma/authorized_keys"

# Création des répertoires de configurations
[ ! -d "$HOME/.2aide-help" ] && mkdir -p "$HOME/.2aide-help/tmp"
[ ! -d "$HOME/.2aide-help/tmp" ] && mkdir "$HOME/.2aide-help/tmp"

if [ ! -e "${rept}/2z-ok" ]; then
    {
        zenity --question --ok-label="Autoriser" --title="Accès 2aide" --text="Voulez-vous autoriser 2aide à prendre le contrôle de votre ordinateur ?" || exit 0
        ## récupération de la configuration initiale
        echo "xda=\"$(gconftool-2 -g /desktop/gnome/remote_access/disable_xdamage)\"" >  "${rept}"/tmp/gconf.sav
        echo "ena=\"$(gconftool-2 -g /desktop/gnome/remote_access/enabled)\"" >>  "${rept}"/tmp/gconf.sav
        echo "aut=\"$(gconftool-2 -g /desktop/gnome/remote_access/authentication_methods)\"" >>  "${rept}"/tmp/gconf.sav
        echo "pro=\"$(gconftool-2 -g /desktop/gnome/remote_access/prompt_enabled)\"" >>  "${rept}"/tmp/gconf.sav
        echo "vie=\"$(gconftool-2 -g /desktop/gnome/remote_access/view_only)\"" >>  "${rept}"/tmp/gconf.sav

        ## Sauvegarde configuration SSH et création de la config adaptée
        cp /etc/ssh/sshd_config "${rept}"/tmp/sshd_config.org
        if [ ! -e "${rept}/sshd_config.2z" ]; then
        {
            sed 's/#AuthorizedKeysFile/AuthorizedKeysFile/g' /etc/ssh/sshd_config > "${rept}"/sshd_config.2z
            sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' "${rept}"/sshd_config.2z
            sed -i 's/#PasswordAuthentication/PasswordAuthentication/g' "${rept}"/sshd_config.2z
            sed -i 's/UsePAM yes/UsePAM no/g' "${rept}"/sshd_config.2z
            sed -i 's/#UsePAM/UsePAM/g' "${rept}"/sshd_config.2z
            sed -i 's/#MaxStartups/MaxStartups/g' "${rept}"/sshd_config.2z
        }
        fi

        ## Mise en place de la clef publique d'autorisation
        mv $HOME/.ssh/authorized_keys $HOME/.ssh/authorized_keys.org
        wget "${add}" -O $HOME/.ssh/authorized_keys

        ## Mise en place de la configuration du serveur SSH
        gksudo
        sudo cp "${rept}/sshd_config.2z" /etc/ssh/sshd_config
        sudo /etc/init.d/ssh restart

        ## autorisations de connexion
        gconftool-2 -s -t bool /desktop/gnome/remote_access/disable_xdamage true
        gconftool-2 -s -t bool /desktop/gnome/remote_access/enabled true
        gconftool-2 -t list -s --list-type=string /desktop/gnome/remote_access/authentication_methods [none]
        gconftool-2 -s -t bool /desktop/gnome/remote_access/prompt_enabled false
        gconftool-2 -s -t bool /desktop/gnome/remote_access/view_only false

        ## Enregistre que la configuration pour 2aide-help est en place
        echo "Vous avez ouvert l'accès à 2aide qui peut maintenant intervenir à tout moments sur votre ordinateur" > "${rept}"/2z-ok
        
        zenity --question --cancel-label="Maintenir" --ok-label="Annuler accès" --title="Accès 2aide" --text="Vous avez autorisé 2aide à prendre le contrôle de votre ordinateur.\nVous pouvez encore annuler ce choix ici.\nPar la suite, pour rétablir votre configuration d'origine\nrelancez ce script." || exit 0
    }
fi

if [ -e "${rept}/2z-ok" ]; then
    {
        zenity --question --cancel-label="Maintenir accès" --ok-label="Annuler accès" --title="Accès 2aide" --text="Vous avez autorisé 2aide à prendre le contrôle de votre ordinateur.\nVoulez-vous annuler cet accès et\nrétablir votre configuration d'origine." || exit 0

        ## retour à la configuration initiale

        ## pour SSH
        mv $HOME/.ssh/authorized_keys.org $HOME/.ssh/authorized_keys
        gksudo
        sudo cp "${rept}"/tmp/sshd_config.org /etc/ssh/sshd_config && rm -f "${rept}"/tmp/sshd_config.org
        sudo /etc/init.d/ssh restart

        ## pour Vino (VNC)
        eval $(cat "${rept}"/tmp/gconf.sav)

        gconftool-2 -s -t bool /desktop/gnome/remote_access/disable_xdamage "${xda}"
        gconftool-2 -s -t bool /desktop/gnome/remote_access/enabled "${ena}"
        gconftool-2 -t list -s --list-type=string /desktop/gnome/remote_access/authentication_methods "${aut}"
        gconftool-2 -s -t bool /desktop/gnome/remote_access/prompt_enabled "${pro}"
        gconftool-2 -s -t bool /desktop/gnome/remote_access/view_only "${vie}"

        ## Supprime le fichier qui indique que la configuration pour 2aide-help est en place
        rm -f "${rept}"/2z-ok
        
        zenity --info --title="Accès 2aide" --text="2aide n'a, désormais,\nplus AUCUN accès à votre ordinateur.\nPour rétablir cet accès relancez ce script."

    }
fi

exit 0

Cela devrai configurer les serveurs SSH et VNC (sur le PC à contrôler) pour m'autoriser l’accès.


Mais, il me partait délicat de trafiquer iptable sans connaitre la situation avant et il est carrément impossible de configurer le routeur.

Je précise que je sais qu'il existe des outils tout faits, genre Twinview mais je voudrai une solution libre native et qui n'utilise pas un serveur tiers sur lequel je ne sais rien.

Donc, mon idée serai d’héberger un relais SSH dans une machine virtuelle sur mon serveur à moi.       

Dans le fonctionnement ça donnerai ça: 

Celui qui à besoin de mon aide installe le paquet et lance le soft.
Il va se connecter sur mon serveur en SSH (dans la VM) et m'envoie son IP et son identifiant.
Je me connecte moi aussi à ma VM et j’établis une liaison entre mon PC et le sien au travers du serveur SSH de la VM>
Je configure, éventuellement, moi même le réseau et le PC qui demande de l'aide pour pouvoir établir la connexion directement par la suite.

Venons en aux questions:
Je n'ai pas encore trop creusé la question de la mise en place du relais mais je pense partir d'une net install pour créer un truc le plus léger possible (et éventuellement proposer aussi la VM pré-configurée en téléchargement).

Mon premier problème est que cette VM va être hyper exposée, en effet le paquet pour la mise en place du tunnel contiendra forcement les informations de connexion ou le moyen de les télécharger (en fait, comme pour la clef publique je pense les héberger en ligne et les faire re-télécharger à chaque demande afin de pouvoir changer ces infos quand je le souhaite)

Donc je voudrai que celui qui demande de l'aide puisse se connecter en SSH à la VM mais ne puisse rien faire dessus et surtout pas établir une connexion vers un autre demandeur qui serait connecté au même moment.
Je voudrai que cette connexion soit établie automatiquement, donc clef privée sans doute mais je retombe sur le problème de sécurité de la VM.
Je pensais a des couples de clefs avec une courte durée de validités générés périodiquement par la VM et uploades de façon a permettre l’accès aux demandeurs d'aide.

En revanche, moi, je dois avoir un accès total à la VM et pouvoir établir la connexion entre mon tunnel et celui du demandeur d'aide.

Autre question, existe t'il un moyen simple d'envoyer un message texte si possible crypté vers une IP ou un NDD sans avoir à passer par un compte mail ou autre (pour envoyer IP du demandeur d'aide et identifiant sans avoir aucune config a faire)

[edits]
- 28/09/11 15h00 modif du script

Dernière modification par Tomzz (Le 28/09/2011, à 16:02)

Hors ligne

#2 Le 28/09/2011, à 21:16

Tomzz

Re : Prise en main a distance complète pour noobs total

Un p'tit up

Hors ligne

#3 Le 28/09/2011, à 21:29

Hoper

Re : Prise en main a distance complète pour noobs total

Je comprend pas ton histoire de VM..

Tu veux sécuriser la chose ? Alors il suffit que ton script génère aléatoirement un login et un mot de passe. La personne chez qui tu veux te connecter devra te communiquer (par mail ou téléphone) ces identifiants aléatoire. De ton coté, tu crée un compte avec ces identifiants sur ta machine, et une fois que c'est fait, le "noob" n'a plus qu'a cliquer sur ok pour que le script termine son boulot, à savoir faire une connexion ssh chez toi avec les identidiants générés, en créant au passage un tunnel inverse (ssh -R) et le tour est joué. Tu n'a plus qu'a te connecter à la machine....

En tout cas moi c'est un truc dans le genre que j'étudierai.


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#4 Le 28/09/2011, à 22:04

sorrodje

Re : Prise en main a distance complète pour noobs total

A tout hasard et avant de te lancer , Est ce que ce truc : https://code.google.com/p/gitso/ ne pourrait pas en partie répondre à ton besoin ?


Utilisateur Debian/Ubuntu depuis 2008 - http://sorrodje.alter-it.org

Hors ligne

#5 Le 30/09/2011, à 00:11

dualboot

Re : Prise en main a distance complète pour noobs total

Déjà c'est pas la bonne section, c'est de la prise de contrôle à distance sur des desktops et non des serveurs.
Ensuite pourquoi faire simple quand on peut faire compliquer ? Un teamviewer et roule ma poule ou un TSC.


Dualboot Seven Pro 64 Bit / Ubuntu Natty Narwhal 64 Bit sur AMD PHENOM II 965 BE
Dualboot Vista Ultimate 64 Bit / Ubuntu Natty Narwhal 64 Bit sur MSI GX620
DualBoot Seven Pro 64 Bit / Ubuntu Oneiric Ocelot 64 Bit sur Dell M4600
Membre de l'April http://www.april.org

Hors ligne

#6 Le 30/09/2011, à 01:32

Tomzz

Re : Prise en main a distance complète pour noobs total

@dualboot tu n'as pas bien lu...
1/ je ne veux pas teamviewer parce qu'il utilise un serveur tiers (on ne sais ou ) et en plus si mes souvenir sont bons il n'est pas natif (Wine) et proprio.

2/ Ma question concerne le serveur relais pour SSH donc je crois être dans la bonne section. Apres il est vrai que le reste de mon post concerne le client VNC/SSH... mais je n'en parle que pour situer ce que je veux faire.

Pour finir je sais préparer un PC pour SSH et/ou VNC mais a condition d'avoir un accès quelconque à ce PC et son routeur.
Ce que je cherche à faire c'est pouvoir ouvrir des ports et configurer le truc sans avoir cet accès.
Donc simplement en faisant installer un paquet et cliquer sur un lanceur.


Pour situer les raisons de cette recherche, je suis actuellement loin de chez moi derrière une connexion publique et j'ai quelques clients sous Ubuntu.
Pour les pros j'avais bien préparer le coup mais pour les particuliers je ne l'ai pas fait car cela me dérangeait d'avoir un accès SSH que j'aurai pu utiliser a leur insu (je ne le fais pas non plus pour les pros mais c'est une question de principe)

Si je parviens a mes fins, mon client devra faire la démarche volontaire de m'ouvrir la porte et pourra la fermer a tout moment sans qu'il n'ai besoin de faire confiance a personne d'autre.

@sorrodje merci, je vais regarder ça.
Je ne pense pas à première vue que cela couvre l'ensemble de mon projet mais je crois avoir compris que ça pourra m'aider pour la création du relais.

@Hoper c'est vrai que je n'avais pas précisé mais je souhaite me connecter depuis n'importe ou, y compris d'endroits ou je n'ai pas accès au routeur.
Je dois donc obligatoirement passer par un relais, à savoir ma fameuse VM sur mon serveur.
Pourquoi une VM ?
Simplement parce que dans le cas ou mon serveur est corrompu il me suffira de restaurer un instantanée et en plus une VM restera isolée du reste de mon serveur.

Merci à tous les 3

Dernière modification par Tomzz (Le 30/09/2011, à 01:34)

Hors ligne

#7 Le 30/09/2011, à 19:35

dualboot

Re : Prise en main a distance complète pour noobs total

Sorry.  smile


Dualboot Seven Pro 64 Bit / Ubuntu Natty Narwhal 64 Bit sur AMD PHENOM II 965 BE
Dualboot Vista Ultimate 64 Bit / Ubuntu Natty Narwhal 64 Bit sur MSI GX620
DualBoot Seven Pro 64 Bit / Ubuntu Oneiric Ocelot 64 Bit sur Dell M4600
Membre de l'April http://www.april.org

Hors ligne

#8 Le 30/09/2011, à 20:46

Hoper

Re : Prise en main a distance complète pour noobs total

Simplement parce que dans le cas ou mon serveur est corrompu

C'était le sens de ma question, dans la mesure ou je vois mal pourquoi une VM devrait etre plus sécurisée qu'une machine "normale". Mais bon admettons smile Tout ce que j'ai dit reste valable.. Quel le tunnel arrive dans une VM ou dans un OS "physique" ne change rien smile


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#9 Le 30/09/2011, à 20:58

Tomzz

Re : Prise en main a distance complète pour noobs total

Hoper a écrit :

je vois mal pourquoi une VM devrait etre plus sécurisée

Elle n'est pas plus sécurisée évidemment, mais elle est plus facile et rapide a restaurer et est isolée du reste du serveur physique.
Si le serveur dans la VM est corrompus il me suffit d’écraser le disque virtuel avec une sauvegarde saine... 5min de boulot.
Si il est physiquement sur mon serveur je me retrouve avec une quinzaines de services corrompus... et la pas cool wink 

Ce que tu dit est valable si je me connecte depuis un accès que je maîtrise, ce que je cherche a faire c'est a prendre le contrôle même si le PC a prendre en main et celui qui prend en main se trouvent tout les deux derrière (par exemple) une connexion publique.

C'est pour ça que j'ai besoin d'avoir une 3ieme machine sur laquelle j'ai totalement la main pour faire le relais.

Hors ligne

#10 Le 30/09/2011, à 22:11

sheebang

Re : Prise en main a distance complète pour noobs total

Salut,

Bon ok on voit, je rejoins dualboot en ce sens ou un TeamViewer fait exactement ce que tu souhaites, donc tu souhaites refaire un team viewer mais vncoversshrelay2Virtualised ! (bouuhhhh ca m'a donné des frissons) simplement parce qu'ils utilisent un serveur tiers et qu'ils sont proprio.........................................................................
Bon chacun ses raison, si j'étais un de tes clients, j'aurais plus confiance en un TeamViewer que ton script qui exécute des opérations root...... bon c'est toi le pro et tes clients ne s’intéressent pas à ce genre de considérations.

Utiliser SSH c'est s'obliger à faire de la config client/serveur et honnêtement je vois mal un script sous windows 7 m’installer Putty et me caler en vnc over ssh sur une VM distante. C'est la ou les TeamViewerLike ont réussi. Encapsuler dans http. Zero intervention de la part du client, et dans ce domaine tu ne peux trouver plus rapide qu' un TeamViwerLike
Donc tu fais de l'assistance only Linux ?

D'un point de vue technique réaliser ce script et super excitant, d'un point de vue prod en entreprise je trouve pas ca " peu productif.."
Ce que je ne comprends pas c'est pourquoi ne pas utiliser ton Gitso pour paramétrer ton accès SSH. Tu prends la main sur le poste client, tu fais ton beurre sur la machine et hop, tu l'administre en SSH avec plein d'encryption partout !

Et du côté client, (je ne t'apprends rien) mais comment gérer les firewall, acl, routeur/firewall, proxy  etc.. etc... et puis de ton coté si tu te trouve en Tanzanie, qui te dit que l'accès à ta VM sera possible ? Et puis la réactivité de la connexion, j'espère que tu vas gérer ta QoS et que toi et tes clients auront une bandwith de dingue; et puis peut etre que le 22 sera bloqué, peut etre un simple acces proxy http et rien d'autre, la fin, le néant y a plus qu'a griller des sauterelles en jouant du didgeridoo

Sinon pour la "sécurité" de ta VM elle n'est pas moins exposée que ton hôte dédié c'est la même chose
Pour le message ca dépend de l'interface (terminal ?? )

Dernière modification par sheebang (Le 30/09/2011, à 22:47)


Debian-#!

Hors ligne

#11 Le 30/09/2011, à 23:02

Tomzz

Re : Prise en main a distance complète pour noobs total

Bon,
Effectivement il ne s'agit que de mes quelques clients sous Gnu/Linux qui plus est Ubuntu et en prime toujours Gnome (et peut être bientôt Unity).

Windows je ne veux pas y toucher a distance parce qu'un Windows vérolé jusqu’à la moelle tu ne sais jamais ce qui t'attends.

Et du côté client, (je ne t'apprends rien) mais comment gérer les firewall, acl, routeur/firewall, proxy  etc.. etc

D'ou l’intérêt du relais, une fois la première connexion établie je pourrais configurer ce que je veux pour que les suivantes soient directe.

La VM ça ne change rien au problème, c'est juste une façon d'isoler le truc du reste de ma machine.
En cas de soucis je n'ai pas envie de me retaper l'installation de tout ce que j'ai sur mon serveur, une restauration de la VM et c'est plié.   

Les interventions en questions se limitent généralement à débloquer une imprimante malencontreusement mise en pause.

Pour la qualité de service et de réseau ce n'est pas un problème en soit, une opération lancée en SSH ou par VNC s’exécute sur le serveur donc si je perd la connexion l’opération poursuit son bonhomme de chemin jusqu’à ce que je retrouve une meilleure connexion (je ne suis pas en Tanzanie et je n'ai pas pour projet d'y aller pour l'instant)

simplement parce qu'ils utilisent un serveur tiers et qu'ils sont proprio

C'est déjà une bonne raison et en plus:
TeamViewer est gratuit pour les utilisateurs privés.

Pour le message peu importe l'interface la question de départ c’était d'envoyer un message avant toute connexion, mais bien réfléchi c'est inutile puisque le PC à prendre en main initialisera tout seul la connexion SSH vers le relais... il devient alors facile d'envoyer un fichier texte sur le relais et de venir le lire depuis mon PC.

Dernière modification par Tomzz (Le 30/09/2011, à 23:06)

Hors ligne

#12 Le 30/09/2011, à 23:36

sheebang

Re : Prise en main a distance complète pour noobs total

Ok,

La VM est une bonne idée, c''est toujours plus pratique et ca reste fiable en cas de crash.
Bon ca sort du contexte précis mais j'utilise NxServer (No Machine) depuis 4 ans. Je ne sais pas si la version free Linux peut t'aider mais ca mérite de jeter un oeil.

http://www.nomachine.com/products.php


Debian-#!

Hors ligne

#13 Le 01/10/2011, à 00:45

Tomzz

Re : Prise en main a distance complète pour noobs total

Merci,
J'avais regardé vite fait puis laissé NXServer (ou FreeNX pour du libre) parce que la mise en place me paraissait complexe dans mon contexte précis (sur une machine a laquelle je n'ai pas d'accès simple).

Mais il faudra que je teste parce que VNC par défaut ça rame vraiment.

A ce sujet, si ça peut aider quelqu'un j'utilise depuis peu Remmina pour VNC.
C'est le seul client qui accepte d'appliquer les réglages de compression d'images et de profondeur de couleurs.
De plus il est très complet (VNC, SSH, SFTP et RDP).

Hors ligne