Suggestion to make remote recovery easier

Milosz Derezynski internalerror at gmail.com
Mon May 5 23:56:50 UTC 2008


There is IMO no real need for a random password; instead, the user of the
machine to be recovered should be allowed to enter a password which he then
can tell to the user recovering the machine remotely. This doesn't
neccessarily have to be more insecure; a random alphanum password is
probably better secured against brute force cracking but i don't like the
fact that the computer hands out a password for the user automatically, even
if he gets to see it.

2008/5/5 Andrew Sayers <andrew-ubuntu-devel at pileofstuff.org>:

> I'm a Linux user of sufficient experience that friends are starting to
> phone me up when there's a problem with their computer.  I guess most
> people here know how long and painful those conversations can be, so I
> think it would be better if Ubuntu had a mechanism to let me SSH into
> people's computers using only instructions that I can describe to
> newbies over the phone without confusing them.  Of course, the problem
> is doing this in a way that's both secure and robust.  I've got an
> approximate outline of how it would work, so could people tell me how
> practical this idea is:
>
> * There should be three ways to enable remote recovery:
>  - In the GRUB menu, there should be a "remote recovery" option
>  - From the command-line, there should be a "remote-recovery" command
>  - From the GUI, there should be System Tools->Remote Recovery
> * Experts should be able to run /usr/sbin/connect-to-remote-recovery to
>  prepare their system for a remote recovery.
>
> Running or connecting to a remote recovery should start by doing the
> following:
>
> 1) Create a remote-recovery user whose home directory is
>   /.remote-recovery, and who has no useful permissions
> 2) Set their home directory to be chmod 500
> 3) Create a ~remote-recovery/password file, chmod 400
> 4) Give the remote-recovery user a random password, and put the password
>   in ~remote-recovery/password
> 5) If the SSH server isn't running, enable it.  If it won't enable, try
>   various things:
>   * If the package doesn't exist, ask if you can install it
>   * If /usr or /usr/bin doesn't exist, check whether they're mentioned
>     in /etc/fstab, and if so, whether they're mentioned in `mount`,
>     then tell the user what's going on, and offer to print the contents
>     of both.
>
> Then, running remote recovery should:
>
> 1) pop up a warning about how doing this gives complete control of your
>   system to a specified computer, and should only be done at the behest
>   of someone you trust.
> 2) Add the remote-recovery user to /etc/sudoers
> 3) Ask for the IP address and remote-recovery password of the person
>   you'll allow access to
> 4) `ssh remote-recovery@$ip_address -L22:localhost:2222`
> 4a) if that fails, do various diagnostics:
>    * Does the computer have an IP address?  Does it have a gateway?
>    * Do a tracepath to that address and print the results
> 4b) If it succeeds, copy ".ssh/id_dsa.pub" on the remote host to
>    "~remote-recovery/.ssh/authorized_keys" on the local host, then
>    touch ".ssh/id_dsa.pub" to confirm that the copying is complete
> 5) Tell the user whether SSH succeeded or failed
> 6) Inform the user that they can press ctrl-c to quit remote recovery
> 7) Wait until `w` reports a remote-recovery user logged in
> 8) Read lines of text and `write` them to the remote-recovery user's tty
> 9) When the remote-recovery user logs out, ask whether they want to wait
>   for the user to log in again.
> 9a) If no, go to 10
> 9b) else go to 7
> 10) Remove the remote-recovery user, remove them from sudoers, and
>    delete their home directory
>
> Alternatively, connecting to a remote recovery should do:
>
> 1) Find the IP address(es) of the computer
> 1a) If any addresses are public (not e.g. 192.168.*.*), print them
> 1b) Otherwise, tell the user to find their public address (e.g. through
>    the settings page of their wireless router), and make sure that
>    connections on port 22 are forwarded to <private IP address> port
>    22.
> 2) touch ~remote-recovery/password
> 3) Create a ~/.ssh/id_dsa with no passphrase
> 4) Print the contents of ~remote-recovery/password, then print it again,
>   using the NATO phonetic alphabet (so that it can be spoken over the
>   phone)
> 5) Make sure the SSH server is running
> 6) Wait until the ctime of ~remote-recovery/password is less than the
>   ctime of ~remote-recovery/.ssh/id_dsa
> 7) `sudo -u remote-recovery ssh remote-recovery at 127.0.0.1 -p 2222`
> 8) The user now has a shell on the newbie's computer, as user
>   remote-recovery.  They can then read the password in ~/password, and
>   sudo whatever they need to sudo.
> 9) Remove the remote-recovery user and delete their home directory
>
>        - Andrew Sayers
>
> --
> Ubuntu-devel-discuss mailing list
> Ubuntu-devel-discuss at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/ubuntu-devel-discuss/attachments/20080506/f0bd335b/attachment.html>


More information about the Ubuntu-devel-discuss mailing list