Identify multiple users doing reverse port FWD with their pubkeys
Clément Péron
peron.clem at gmail.com
Fri Feb 14 04:37:31 AEDT 2020
Hi Mike
On Thu, 13 Feb 2020 at 17:02, M Rubon <rubonmtz at gmail.com> wrote:
>
> Clément Péron wrote:
> > I would like to know which pubkey has open which reverse port.
>
> Some of the things which have been mentioned will only work if your
> remote client runs a command/shell on the server. Specifically
> setting a per-key environment variable does not work if you are only
> doing a remote port forward. Similarly the environment variables
> $SSH_CLIENT and/or $SSH_CONNECTION environment variables are only
> available when the client runs a command or shell on the server.
> These environment variables are unfortunately not set for other SSH
> processes related to your connections, for instance while running the
> AuthorizedKeysCommand or in the process which does the port
> forwarding.
>
> Your options for IDing the remote client are:
>
> (1) the PPID of the process handling the AuthorizedKeysCommand is also
> the PPID of the process doing the reverse port forwarding. You can
> record the ID during authorization and then figure out which reverse
> tunnel corresponds to that.
>
> (2) If your reverse tunnel connects to the client machine's SSH
> server, then on your server you can use the openssh command
> ssh-keyscan -p PORT 127.0.0.1 to identify the host key of the
> client machine (note that this is not the default key the client will
> use to connect to your server).
This is something that I didn't think about and totally make sense in my case.
I will go for that, thanks !
>
> (3) If you have control of the client, you set the client to run a
> command, and then intercept that on your server to record the details.
> If your client does not run a command, I don't think you can force
> this on the server side. (I am not so happy with the security of
> running a command when it is not needed, but others may be happy with
> this).
>
> These are not particularly clean or easy, but might work for your needs.
Thanks a lot, your explanations are really helpful !
Clement
>
> It would be nice if $SSH_CLIENT and/or $SSH_CONNECTION were set when
> AuthorizedKeysCommand was run and were also set in the process which
> does the port forwarding. It would also be nice if the per-key
> environment variable was set in the process which does the port
> forwarding, which would allow you to tag it.
>
> Mike
> _______________________________________________
> openssh-unix-dev mailing list
> openssh-unix-dev at mindrot.org
> https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
More information about the openssh-unix-dev
mailing list