Mailing List Archive

Any way to automate login to host and su to root?
Hi All,

I am looking for a way to login to a host and automatically change to root
using a password provided by an external program.

The root passwords are stored in a vault and I can get passwords out using a
script after authenticating.

Currently, I need to do a lot of the steps manually:
ssh <user>@<host>
su -
(copy/paste password from vault)

I would like to change this to:
<some-script> <host>

Does anyone have any hints on how to achieve this without adding a "NOPASSWD"
entry into /etc/sudoers ?

Thanks in advance,

Joost
Re: Any way to automate login to host and su to root? [ In reply to ]
Le jeu. 14 juil. 2022 à 08:35, J. Roeleveld <joost@antarean.org> a écrit :
>
> Hi All,
>
> I am looking for a way to login to a host and automatically change to root
> using a password provided by an external program.
>
> The root passwords are stored in a vault and I can get passwords out using a
> script after authenticating.
>
> Currently, I need to do a lot of the steps manually:
> ssh <user>@<host>
> su -
> (copy/paste password from vault)

Why not use directly ssh root@<host> ?
With an SSH key protected by a passphrase that would be a single step
to connect.
You would have a passphrase to manage but you already are using a tool for that.
If you accept the risks, you could also use an SSH key without a passphrase.

sshd on the host must be configured with
PermitRootLogin=prohibit-password at minimum, which is the default
value.

> I would like to change this to:
> <some-script> <host>
>
> Does anyone have any hints on how to achieve this without adding a "NOPASSWD"
> entry into /etc/sudoers ?
>
> Thanks in advance,
>
> Joost

Best regards

Mickaël Bucas
Re: Any way to automate login to host and su to root? [ In reply to ]
On Thursday, 14 July 2022 10:04:21 CEST Micka?l Bucas wrote:
> Le jeu. 14 juil. 2022 ? 08:35, J. Roeleveld <joost@antarean.org> a ?crit :
> > Hi All,
> >
> > I am looking for a way to login to a host and automatically change to root
> > using a password provided by an external program.
> >
> > The root passwords are stored in a vault and I can get passwords out using
> > a script after authenticating.
> >
> > Currently, I need to do a lot of the steps manually:
> > ssh <user>@<host>
> > su -
> > (copy/paste password from vault)
>
> Why not use directly ssh root@<host> ?
> With an SSH key protected by a passphrase that would be a single step
> to connect.
> You would have a passphrase to manage but you already are using a tool for
> that. If you accept the risks, you could also use an SSH key without a
> passphrase.
>
> sshd on the host must be configured with
> PermitRootLogin=prohibit-password at minimum, which is the default
> value.

For security reasons, I do not want direct login to root under any
circumstances. This is disabled on all systems and will stay this way.

Currently, to login as root, you need to know:
- admin user account name
- admin user account password
- root user account password

I do not want to reduce this to a single ssh-key-passphrase.

--
Joost
Re: Any way to automate login to host and su to root? [ In reply to ]
On Thu, 14 Jul 2022 11:54:46 +0200, J. Roeleveld wrote:

> For security reasons, I do not want direct login to root under any
> circumstances. This is disabled on all systems and will stay this way.
>
> Currently, to login as root, you need to know:
> - admin user account name
> - admin user account password
> - root user account password
>
> I do not want to reduce this to a single ssh-key-passphrase.

Is this user only used as a gateway to root access, or can you set up such
a user? If so you could use key-based authentication for that user, with
a passphrase, and add command="/bin/su --login" to the authorized_keys
line. That way you still need three pieces of information, replacing the
user's password with the user's key passphrase.


--
Neil Bothwick

30 minutes of begging is not considered foreplay.
Re: Any way to automate login to host and su to root? [ In reply to ]
Em qui., 14 de jul. de 2022 11:48, Neil Bothwick <neil@digimed.co.uk>
escreveu:

> On Thu, 14 Jul 2022 11:54:46 +0200, J. Roeleveld wrote:
>
> > For security reasons, I do not want direct login to root under any
> > circumstances. This is disabled on all systems and will stay this way.
> >
> > Currently, to login as root, you need to know:
> > - admin user account name
> > - admin user account password
> > - root user account password
> >
> > I do not want to reduce this to a single ssh-key-passphrase.
>
> Is this user only used as a gateway to root access, or can you set up such
> a user? If so you could use key-based authentication for that user, with
> a passphrase, and add command="/bin/su --login" to the authorized_keys
> line. That way you still need three pieces of information, replacing the
> user's password with the user's key passphrase.
>
>
> --
> Neil Bothwick
>
> 30 minutes of begging is not considered foreplay.
>

Or you might consider creating a ssh key pair for the remote root and login
directly to root with no password, only using the ssh keys.

>
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/14/22 12:35 AM, J. Roeleveld wrote:
> Hi All,

Hi,

> I am looking for a way to login to a host and automatically change
> to root using a password provided by an external program.

Please clarify if you want to /require/ a password?

I can think of some options that would authenticate, thus avoiding
sudo's NOPASSWD:, but not prompt for a password. I want to know if
those types of options are on the table or if they should be discarded.

> The root passwords are stored in a vault and I can get passwords out
> using a script after authenticating.

Okay.

> Currently, I need to do a lot of the steps manually:
> ssh <user>@<host>
> su -

You could alter that slightly to be:

ssh <user>@<host> su -

That would combine the steps into one.

> (copy/paste password from vault)

Are you actually copying & pasting the password? Or will you be using
something to retrieve the password from the vault and automatically
provide it to su?

I think that removing the human's need ~> ability to copy & paste would
close some security exposures.

Aside: This remove the human's ability to copy ~> know the password
from the mix as a security measure can be a slippery slope and I
consider it to be questionable at best. -- Conversely, doing it on
behalf of the human with a password that they know simply as automation
is fine.

> I would like to change this to:
> <some-script> <host>

I think that's doable. I've done a lot of that. I'll take it one step
further and put "<some-script> <host>" in a for loop to do my bidding on
a number of systems.

I think the "ssh <user>@<host> su -" method might be a bit cleaner from
a STDIN / TTY / FD perspective.

> Does anyone have any hints on how to achieve this without adding a
> "NOPASSWD" entry into /etc/sudoers ?

Flag on the play: You've now mixed privilege elevation mechanism. You
originally talked about "su" and now you're talking about "sudo". They
are distinctly different things. Though admittedly they can be used in
concert with each other.

If you are using SSH keys /and/ sudo, then I'd recommend that you
investigate authenticating to sudo via (forwarded) SSH keys. This means
that your interactions with sudo are /always/ authenticated *and* done
so without requiring an interactive prompt.

> Thanks in advance,

There's more than a little bit here. There are a number of ways that
this could go.



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/14/22 3:54 AM, J. Roeleveld wrote:
> For security reasons, I do not want direct login to root under any
> circumstances. This is disabled on all systems and will stay this way.

+10 for security

> Currently, to login as root, you need to know:
> - admin user account name
> - admin user account password
> - root user account password

Please describe what an ideal scenario would be from a flow perspective,
independent of the underlying technology.

> I do not want to reduce this to a single ssh-key-passphrase.

Please elaborate as I suspect that the reasoning behind that statement
is quite germane to this larger discussion.



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/14/22 8:48 AM, Neil Bothwick wrote:
> Is this user only used as a gateway to root access, or can you set
> up such a user? If so you could use key-based authentication for
> that user, with a passphrase, and add command="/bin/su --login"
> to the authorized_keys line. That way you still need three pieces
> of information,

Be mindful that despite the fact that this protects things on the
surface, it is / can be a way to boot strap changing this.

After all, nothing about this forced command prevents the user from
using the acquired root access to modify the ~/.ssh/authorized_keys file
enforcing the command.

This is one of the pitfalls that I alluded to in my earlier reply about
security vs automation. Quite simply, this is NOT security as it's
trivial to use the access (su -) to gain more access (edit the
~/.ssh/authorized_keys file).

> replacing the user's password with the user's key passphrase.

This is another slippery slope. SSH key pass phrases can be brute
forced in an offline fashion. Conversely, system passwords are more of
an online attack. Assuming that standard system protections are in
place for /etc/shadow*. -- It's easier to get a copy of someone's
private SSH key file, especially if they are somewhat lax about it's
security believing that the passphrase will protect it.



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On Thu, 14 Jul 2022 09:37:45 -0600, Grant Taylor wrote:

> > Is this user only used as a gateway to root access, or can you set
> > up such a user? If so you could use key-based authentication for
> > that user, with a passphrase, and add command="/bin/su --login"
> > to the authorized_keys line. That way you still need three pieces
> > of information,
>
> Be mindful that despite the fact that this protects things on the
> surface, it is / can be a way to boot strap changing this.
>
> After all, nothing about this forced command prevents the user from
> using the acquired root access to modify the ~/.ssh/authorized_keys
> file enforcing the command.

That is true, but it is also true about the current setup as that also
gives root access. I get the impression that Joost is looking for a more
convenient approach that does not reduce security, which is true here...

> > replacing the user's password with the user's key passphrase.
>
> This is another slippery slope. SSH key pass phrases can be brute
> forced in an offline fashion. Conversely, system passwords are more of
> an online attack.

Well, almost true.


--
Neil Bothwick

Barth's Distinction:
There are two types of people: those who divide people into two types, and
those who don't.
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/14/22 9:56 AM, Neil Bothwick wrote:
> That is true, but it is also true about the current setup as that
> also gives root access. I get the impression that Joost is looking
> for a more convenient approach that does not reduce security, which
> is true here...

I'm all for being /more/ secure, especially when doing so can be made to
appear to be /simpler/ for the end user.

I think the quintessential example of this is authenticating to sudo
with SSH keys via SSH agent forwarding. It eliminates the password
prompt or the NOPASSWD: option. Either way, you have better security
posture (always authenticated) and / or users have a better experience
(no password prompt).

> Well, almost true.

Please elaborate.

I consider it fairly difficult for non-root users to get a copy of the
/etc/shadow file on most systems. Conversely, SSH private key files
tend to ... leak / be forgotten.



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On Thu, 14 Jul 2022 11:01:29 -0600, Grant Taylor wrote:

> > Well, almost true.
>
> Please elaborate.

I was accepting your point, one I hadn't considered.


--
Neil Bothwick

. <-Stealth Tagline
Re: Any way to automate login to host and su to root? [ In reply to ]
Have you looked at dev-tcltk/expect?

There's possibly an example you could try at
<https://www.journaldev.com/1405/expect-script-ssh-example-tutorial>
although you probably want to prompt for the password or retreive it
programatically rather than putting it on the command line :o

Steve.

On 14/07/2022 07:35, J. Roeleveld wrote:
> Hi All,
>
> I am looking for a way to login to a host and automatically change to root
> using a password provided by an external program.
>
> The root passwords are stored in a vault and I can get passwords out using a
> script after authenticating.
>
> Currently, I need to do a lot of the steps manually:
> ssh <user>@<host>
> su -
> (copy/paste password from vault)
>
> I would like to change this to:
> <some-script> <host>
>
> Does anyone have any hints on how to achieve this without adding a "NOPASSWD"
> entry into /etc/sudoers ?
>
> Thanks in advance,
>
> Joost
>
>
>
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/14/22 1:08 PM, Neil Bothwick wrote:
> I was accepting your point, one I hadn't considered.

Ah. Okay. :-/ Here I was hoping to learn something new from you. ;-)
Still a good discussion none the less. :-)



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On Thursday, 14 July 2022 17:32:07 CEST Grant Taylor wrote:
> On 7/14/22 3:54 AM, J. Roeleveld wrote:
> > For security reasons, I do not want direct login to root under any
> > circumstances. This is disabled on all systems and will stay this way.
>
> +10 for security
>
> > Currently, to login as root, you need to know:
> > - admin user account name
> > - admin user account password
> > - root user account password
>
> Please describe what an ideal scenario would be from a flow perspective,
> independent of the underlying technology.

What I am looking for is:
1) Lookup credentials from password vault (I can do this in script-form,
already doing this in limited form for ansible-scripts, but this doesn't give
me an interactive shell)

2) Use admin-account credentials to login via SSH into host

3) On remote host, initiate "su -" to switch to root and provide root-password
over SSH link at the right time

4) Give me an interactive root-shell on remote-host

When I close the shell, I expect to be fully logged out (eg, I go straight
back to the local host, not to the admin-account)


> > I do not want to reduce this to a single ssh-key-passphrase.
>
> Please elaborate as I suspect that the reasoning behind that statement
> is quite germane to this larger discussion.

I see plenty of google-results and also as answers for ssh directly to "root"
using ssh-keys. I do not consider this a safe method, I use it for un-
priviliges accounts (not member of "wheel"). I don't use it for admin-
accounts.
Re: Any way to automate login to host and su to root? [ In reply to ]
On Thursday, 14 July 2022 17:30:28 CEST Grant Taylor wrote:
> On 7/14/22 12:35 AM, J. Roeleveld wrote:
> > Hi All,
>
> Hi,
>
> > I am looking for a way to login to a host and automatically change
> > to root using a password provided by an external program.
>
> Please clarify if you want to /require/ a password?

Yes.

> I can think of some options that would authenticate, thus avoiding
> sudo's NOPASSWD:, but not prompt for a password. I want to know if
> those types of options are on the table or if they should be discarded.

How would it not prompt for a password. I need something that will take the
password from the vault (I can do this in Python and shell-scripting. Probably
also in other scripts). Authenticating to the vault can be done on a session
basis and shared. So locally, I'd only login once.

> > The root passwords are stored in a vault and I can get passwords out
> > using a script after authenticating.
>
> Okay.
>
> > Currently, I need to do a lot of the steps manually:
> > ssh <user>@<host>
> > su -
>
> You could alter that slightly to be:
>
> ssh <user>@<host> su -
>
> That would combine the steps into one.
>
> > (copy/paste password from vault)
>
> Are you actually copying & pasting the password? Or will you be using
> something to retrieve the password from the vault and automatically
> provide it to su?

Currently, yes. I never physically see the password as it currently goes into
the clipboard and gets wiped from there after a short time period. Enough time
to paste it into the password-prompt. It's the copy/pasting that I am looking
to automate into a single "login-to-remote-host" script.

> I think that removing the human's need ~> ability to copy & paste would
> close some security exposures.
>
> Aside: This remove the human's ability to copy ~> know the password
> from the mix as a security measure can be a slippery slope and I
> consider it to be questionable at best. -- Conversely, doing it on
> behalf of the human with a password that they know simply as automation
> is fine.
>
> > I would like to change this to:
> > <some-script> <host>
>
> I think that's doable. I've done a lot of that. I'll take it one step
> further and put "<some-script> <host>" in a for loop to do my bidding on
> a number of systems.
>
> I think the "ssh <user>@<host> su -" method might be a bit cleaner from
> a STDIN / TTY / FD perspective.
>
> > Does anyone have any hints on how to achieve this without adding a
> > "NOPASSWD" entry into /etc/sudoers ?
>
> Flag on the play: You've now mixed privilege elevation mechanism. You
> originally talked about "su" and now you're talking about "sudo". They
> are distinctly different things. Though admittedly they can be used in
> concert with each other.
>
> If you are using SSH keys /and/ sudo, then I'd recommend that you
> investigate authenticating to sudo via (forwarded) SSH keys. This means
> that your interactions with sudo are /always/ authenticated *and* done
> so without requiring an interactive prompt.

I prefer not to use SSH keys for this as they tend to exist for years in my
experience. And one unnoticed leak can open up a lot of systems.
This is why I use passwords. (passwords are long random strings that are
changed regularly)

> > Thanks in advance,
>
> There's more than a little bit here. There are a number of ways that
> this could go.
Re: Any way to automate login to host and su to root? [ In reply to ]
On Fri, 15 Jul 2022 09:15:02 +0200, J. Roeleveld wrote:

> I prefer not to use SSH keys for this as they tend to exist for years
> in my experience. And one unnoticed leak can open up a lot of systems.
> This is why I use passwords. (passwords are long random strings that
> are changed regularly)

There's no reason you cannot change SSH keys as regularly, and good
reasons why you should. It's just that people don't bother to do it.


--
Neil Bothwick

I don't suffer from insanity. I enjoy every minute of it.
Re: Any way to automate login to host and su to root? [ In reply to ]
On Friday, 15 July 2022 09:29:14 CEST Neil Bothwick wrote:
> On Fri, 15 Jul 2022 09:15:02 +0200, J. Roeleveld wrote:
> > I prefer not to use SSH keys for this as they tend to exist for years
> > in my experience. And one unnoticed leak can open up a lot of systems.
> > This is why I use passwords. (passwords are long random strings that
> > are changed regularly)
>
> There's no reason you cannot change SSH keys as regularly, and good
> reasons why you should. It's just that people don't bother to do it.

I agree, but that is a tedious process.

I have multiple machines I use as desktop depending on where I am. And either
I need to securely share the private keys between them or set up different
keys per desktop.
I assume the same is true for most people.

Never mind that access to the servers needs to be possible for others as well.

Either way, to do this automatically, all the desktop machines need to be
powered and running while changing the keys.

Changing passwords for servers and storing them in a password vault is easier
to automate.

--
Joost
Re: Any way to automate login to host and su to root? [ In reply to ]
On Thursday, 14 July 2022 23:22:46 CEST Steve Wilson wrote:
> On 14/07/2022 07:35, J. Roeleveld wrote:
> > Hi All,
> >
> > I am looking for a way to login to a host and automatically change to root
> > using a password provided by an external program.
> >
> > The root passwords are stored in a vault and I can get passwords out using
> > a script after authenticating.
> >
> > Currently, I need to do a lot of the steps manually:
> > ssh <user>@<host>
> > su -
> > (copy/paste password from vault)
> >
> > I would like to change this to:
> > <some-script> <host>
> >
> > Does anyone have any hints on how to achieve this without adding a
> > "NOPASSWD" entry into /etc/sudoers ?
> >
> > Thanks in advance,
> >
> > Joost

> Have you looked at dev-tcltk/expect?
>
> There's possibly an example you could try at
> <https://www.journaldev.com/1405/expect-script-ssh-example-tutorial>
> although you probably want to prompt for the password or retreive it
> programatically rather than putting it on the command line :o
>
> Steve.
>

This looks promising. Will have a look to see if this can be made to work.
I will need to find a way to get the password programmatically inside the
script as I will not put it on the commandline and definitely not hard-coded
in a script.

--
Joost
Re: Any way to automate login to host and su to root? [ In reply to ]
On Friday, 15 July 2022 10:13:12 CEST J. Roeleveld wrote:
> On Thursday, 14 July 2022 23:22:46 CEST Steve Wilson wrote:
> > On 14/07/2022 07:35, J. Roeleveld wrote:
> > > Hi All,
> > >
> > > I am looking for a way to login to a host and automatically change to
> > > root
> > > using a password provided by an external program.
> > >
> > > The root passwords are stored in a vault and I can get passwords out
> > > using
> > > a script after authenticating.
> > >
> > > Currently, I need to do a lot of the steps manually:
> > > ssh <user>@<host>
> > > su -
> > > (copy/paste password from vault)
> > >
> > > I would like to change this to:
> > > <some-script> <host>
> > >
> > > Does anyone have any hints on how to achieve this without adding a
> > > "NOPASSWD" entry into /etc/sudoers ?
> > >
> > > Thanks in advance,
> > >
> > > Joost
> >
> > Have you looked at dev-tcltk/expect?
> >
> > There's possibly an example you could try at
> > <https://www.journaldev.com/1405/expect-script-ssh-example-tutorial>
> > although you probably want to prompt for the password or retreive it
> > programatically rather than putting it on the command line :o
> >
> > Steve.
>
> This looks promising. Will have a look to see if this can be made to work.
> I will need to find a way to get the password programmatically inside the
> script as I will not put it on the commandline and definitely not hard-coded
> in a script.

Thank you, this works.
Got the script to grab all the details needed from the vault and ends up
giving me a remote root-prompt.

--
Joost
Re: Any way to automate login to host and su to root? [ In reply to ]
On Fri, 15 Jul 2022 09:53:44 +0200, J. Roeleveld wrote:

> > There's no reason you cannot change SSH keys as regularly, and good
> > reasons why you should. It's just that people don't bother to do it.
>
> I agree, but that is a tedious process.
>
> I have multiple machines I use as desktop depending on where I am. And
> either I need to securely share the private keys between them or set up
> different keys per desktop.
> I assume the same is true for most people.

I don't share keys, each desktop/laptop has its own keys.

> Never mind that access to the servers needs to be possible for others
> as well.
>
> Either way, to do this automatically, all the desktop machines need to
> be powered and running while changing the keys.

Not if they use their own keys. It should be simple to script generating
a new key, then SSHing to a list of machines and replacing the old key
with the new one in authorized_keys.

> Changing passwords for servers and storing them in a password vault is
> easier to automate.

Indeed it is, and now you've found a way to do what you want with
passwords, all is well.

However, I will look at scripting regular replacements for SSH keys, for
my own peace of mind.


--
Neil Bothwick

Mac screen message: "Like, dude, something went wrong."
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/15/22 1:07 AM, J. Roeleveld wrote:
> What I am looking for is:
> 1) Lookup credentials from password vault (I can do this in
> script-form, already doing this in limited form for ansible-scripts,
> but this doesn't give me an interactive shell)

ACK You indicated you already had a solution for this. So I'm leaving
it in your capable hands.

> 2) Use admin-account credentials to login via SSH into host

When you say "admin-account", do you mean the given System
Administrator's personal account or a common / shared administrative
account? E.g. would I log in as myself; "gtaylor", or something shared
"helpdeskadmin"?

I'm assuming the former unless corrected.

Do you want the user to be prompted for the Unix account password (on
the remote system) or can they use SSH keys to login without a password
prompt?

> 3) On remote host, initiate "su -" to switch to root and provide
> root-password over SSH link at the right time

I would suggest having the SSH command invoke the "su -" command
automatically.

Note: You will probably want to run a command something like this to
make sure that a TTY is allocated for proper interaction with su.

ssh -t <remote_user>@<remote_host> "/path/to/su -"

> 4) Give me an interactive root-shell on remote-host

Okay. Not what I would have expected, but it's your system and you do
you. :-)

> When I close the shell, I expect to be fully logged out (eg, I go
> straight back to the local host, not to the admin-account)

The nice thing about having SSH invoke the "su -" command directly is
that once you exit su, you also end up exiting the SSH session.

> I see plenty of google-results and also as answers for ssh directly to
> "root" using ssh-keys. I do not consider this a safe method, I use
> it for un- priviliges accounts (not member of "wheel"). I don't use
> it for admin- accounts.

Thank you for the elaboration. I tend to agree with your stance. I
have exceedingly few things that can SSH into systems as the root user,
and they all have forced commands. They all have to do with the backup
system which can't use sudo /or/ I want the ability to get in and
restore a sudoers file if it gets messed up, thus avoiding the chicken /
egg problem.

Following the same security mentality, I prefer to specify the full path
to executables, when possible, in order to make sure that someone
doesn't put a Trojanized version earlier in the path. }:-)



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/15/22 1:15 AM, J. Roeleveld wrote:
> Yes.

Okay.

That simply means that SSH keys won't be used to authenticate to the
remote system.

> How would it not prompt for a password.

There is a PAM module; pam_ssh_agent_auth, which can be used to enable
users to authenticate to sudo using SSH keys. This means that the user
/does/ authenticate to sudo as necessary. It's just that the
authentication happens behind the scenes and they don't need to enter
their password. Thus you can avoid the NOPASSWD: option which means a
better security posture.

> I need something that will take the password from the vault (I
> can do this in Python and shell-scripting. Probably also in other
> scripts). Authenticating to the vault can be done on a session basis
> and shared. So locally, I'd only login once.

Sure.

> Currently, yes. I never physically see the password as it currently
> goes into the clipboard and gets wiped from there after a short time
> period. Enough time to paste it into the password-prompt. It's
> the copy/pasting that I am looking to automate into a single
> "login-to-remote-host" script.

I would not consider the copy and paste method to be secure. There are
plenty of utilities to monitor the clipboard et al. and copy the new
contents in extremely short order. As such, users could arrange to
acquire copies of the password passing through the clipboard.

I would strongly suggest exploring options that don't use the clipboard
and instead retrieve the password from the vault and inject it into the
remote system without using the clipboard.

Or, authenticate to sudo a different way that doesn't involve a
password. This will work for 90+ percent of the use cases. Meaning
that the sensitive password is needed for 10 percent or less of the
time. Thereby reducing the possible sensitive password exposure. }:-)

> I prefer not to use SSH keys for this as they tend to exist for years
> in my experience. And one unnoticed leak can open up a lot of systems.

That is a valid concern.

I'd strongly suggest that you research SSH /certificates/. SSH
/certificates/ support a finite life time /and/ can specify what
command(s) / action(s) they can be used for.

My $EMPLOYER uses SSH /certificates/ that last about 8 hours. I've
heard of others that use SSH /certificates/ that last for a single digit
number of minutes or even seconds. The idea being that the SSH
/certificate/ only lasts just long enough for it to be used for it's
intended purpose and no longer.

The ability to specify the command; e.g. "su -" that is allowed to be
executed means that people can't use them to start any other command. }:-)

> This is why I use passwords. (passwords are long random strings that
> are changed regularly)

Fair enough. I only counter with take a few minutes to research SSH
/certificates/ and see if they are of any interest to you.



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/15/22 1:53 AM, J. Roeleveld wrote:
> I agree, but that is a tedious process.

Yes, it can be. That's where some automation comes into play.

> I have multiple machines I use as desktop depending on where I am. And
> either I need to securely share the private keys between them or set
> up different keys per desktop.

I /currently/ use unique keys /per/ /client/ /system/.

I am /planing/ on starting to use unique keys /per/ /client/ /per/
/server/. Meaning that each client will use a different key for each
remote server. I think that this combined with location restrictions in
the authorized_keys file will mean that SSH keys (or certificates) can't
be used from anywhere other than their approved location or for anything
other than their intended purpose.

> I assume the same is true for most people.

Yes. It depends what security posture you / your organization want.

> Never mind that access to the servers needs to be possible for others
> as well.

I assume that other users will use their own individual accounts to log
into the target systems with a similar configuration.

E.g. I log into remote systems as "gtaylor" and you log into remote
systems as "joost", and Neil logs into remote systems as "neil". We
would all then escalate to root via "su -" with the automation providing
the password to su.

> Either way, to do this automatically, all the desktop machines need
> to be powered and running while changing the keys.

No, they don't.

You just need to account for current and prior keys.

I've done exactly this on a fleet of about 800 Unix systems that I
helped administer at my last job. You do something like the following:

1) Log into the remote system explicitly using the prior key.
2) Append the current key to the ~/.ssh/authorized_keys file.
3) Logout of the remote system.
4) Log into the remote system explicitly using the current key.
5) Remove the prior key from the ~/.ssh/authorized_keys file.
6) Logout of the remote system.

This can be fairly easily automated.

You can then loop across systems using this automation to update the key
on systems that are online.

You can relatively easily deal with systems that are offline currently
later when they are back online. -- There are ways to differentiate
between offline and bad credentials during day to day operations. So
when you hit the bad credentials you leverage the automation that tries
old credentials to update them.

You end up bifurcating the pool of systems into different groups that
need to be dealt with differently. Online and doing what you want;
online but not doing what you want; and offline.

> Changing passwords for servers and storing them in a password vault
> is easier to automate.

I disagree.

Using passwords tends to negate things like authenticating to sudo with
SSH keys / certificates, thus prompting the use of NOPASSWD:.



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/15/22 6:44 AM, Neil Bothwick wrote:
> I don't share keys, each desktop/laptop has its own keys.

<ASCII thumbs up>

> Not if they use their own keys. It should be simple to script
> generating a new key, then SSHing to a list of machines and replacing
> the old key with the new one in authorized_keys.

+1

> Indeed it is, and now you've found a way to do what you want with
> passwords, all is well.
>
> However, I will look at scripting regular replacements for SSH keys,
> for my own peace of mind.
/me loudly says "SSH /certificates/" from the top atop a pile of old
servers in the server room.



--
Grant. . . .
unix || die
Re: Any way to automate login to host and su to root? [ In reply to ]
On 7/14/22 3:22 PM, Steve Wilson wrote:
> Have you looked at dev-tcltk/expect?

Expect has it's place.

Just be EXTREMELY careful when using it for anything security related.

Always check for what is expected before sending data. Don't assume
that something comes next and blindly send it (possibly after a pause).

Things break in a really weird and unexpected way. (No pun intended.)

Also, do as much logic outside of expect as possible. E.g. don't try to
add a user and then respond to a failure. Instead check to see if the
user exists /before/ trying to add it.

Plan on things failing and try to control the likely ways that it can fail.

Paying yourself forward with time and effort developing (expect) scripts
will mean that you reap the rewards for years to come.



--
Grant. . . .
unix || die

1 2  View All