Re: "Semi-Trusted" SSH-Keys that also require PAM login

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 



On 10/21/20 9:05 AM, Jan Bergner wrote:
> 
> Hello all,
> 
> in order to connect to my SSH servers from untrusted devices like company computers or my smartphone, I set up 2FA with
> google-authenticator hooked into PAM.
> 
> However, this is not really 2FA at least for the smartphone, since I use the same device for generating the TANs and it
> is also at least inconvenient to always require a new TAN for each connection. I do not want to solely rely on SSH keys
> on these devices since - as I pointed out - I do not really trust them.

Honestly, this is likely a bad idea.  Not because the extra layer
of authentication is bad, but because you have no idea what those
untrusted devices will do.

For example, there is nothing to prevent a device from injecting a
backdoor into your ~/.ssh/rc or ~/.profile.  That could do anything you
could, including creating a fake login session.  If you use sudo, they
could implant a trojan sudo binary in your $PATH and get root access.

> So, my idea was to use SSH keys but to also require the server's PAM login for these "semi-trusted" keys. But of course,
> I want to trust the keys on my own laptop and desktop without an additional PAM password. Therefore, I cannot simply use
> something like

I strongly recommend only allowing devices you trust to use SSH.
Why do you need to login from these untrusted devices?  There might
very well be a safer solution.

That said, if you must allow SSH from an untrusted device, I strongly
recommend only allowing SFTP and rsync access, and only allowing it as
a separate, unprivileged user.  This will solve most of the security
holes, but you will need to be very careful about local privilege
escalation vulnerabilities.  If you are on Linux, polyinstantiating
/tmp will help a little.  If SELinux is in enforcing mode, using a
low-privileged account (such as user_u or even guest_u) would help
a lot.

If you only need to perform monitoring operations, you could use
command="some custom script here", where the custom script only
allowed various read-only operations.  For instance, you could use
command="systemctl status </dev/null" to check if your services
are running.

> Thanks to all and best regards,
> 
> Jan

You're welcome, and best of luck to you.

Sincerely,

Demi

Attachment: OpenPGP_0xB288B55FFF9C22C1.asc
Description: application/pgp-keys

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@xxxxxxxxxxx
https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux