NX Security (was [FreeNX-kNX] Re: got: "cannot create directory `/home/.nx'")

Rick Stout zipsonic at gmail.com
Wed Oct 20 06:27:15 UTC 2004

Rick Stout wrote:
> Ok, this is getting out of hand. It breaks down like this: Having a user
> id and pass{word|key} to an SSH server gives you the properties allowed
> to that user and permitted by the server. Using a normal ssh client to
> connect to a machine running (free)nx will allow you to use the services
> provided by ssh to do things such as port forwarding(most distributions
> have port forwarding enabled by default). At minimum, any user using the 
> default key *NEEDS* to disable port forwarding.
> (BTW, for those reading that need that setting, add this to your 
> /etc/ssh/sshd_config:
> AllowTCPForwarding no
> )
> It wont take long for script kiddies to pick up this fact and start
> adding nx to the list of users tried when doing ssh scans. When they
> find an nx box with the default key, they could have an available proxy.
> I think we need to look at this from a different angle, though...
> Is it a good idea to give an intruder a place to start? Having a user id 
> and key gets you past SSH's authentication, effectively bypassing it. At 
> that point, you are technically limited to the shell capability and its 
> authentication method, but even if you are secured from port forwarding, 
> an exploit to the nxserver or bash/sh (nxserver is a script requiring 
> some sort of shell instance) *could* allow root access. (For example: It 
> is not unheard of to have a buffer overflow cause some code to be 
> executed as another user).
> There *is* a problem here. Widely distributing the same key could very 
> possibly cause a multitude of security concerns. Varying the key per 
> installation can mitigate some of these problems, but not all of them. 
> Its like the old saying: Two people can keep a secret when one of them 
> is dead... Sharing the key opens a bunch of problems.
> To answer the question on how nx connects in SSL encryption mode, it 
> goes a little something like this: (Someone please correct me if I miss 
> something)
> An SSH session is started to the server as user nx with the client dsa 
> key. The client also sends a user id and password for the server system 
> which is verified by PAM. The startsession command is then passed to the 
> nxserver shell, which starts a loopback ssh session as the pam 
> authenticated user. 

I missed something here. It connects to ssh using the 
/etc/nxserver/users.id_dsa key which it's corresponding public key has 
been added to the users authorized_keys2 file.

> nxnode is called with --startsession as that user, 
> and nxagent is called starting a forwarding agent through the ssh 
> instance. nxnode continues by starting the windowmanager session or 
> application that you specified through the client. Meanwhile the client 
> is told by nxnode what port to connect to locally and starts an X server 
> that receives the information from nxagent.
> Non SSL encryption mode differs in that the nxagent doesnt forward 
> through the ssh session, but opens ports starting at 5000 for the client 
> to connect to.
> My take on all of this is that if you only have one user, use only ssl 
> encryption mode and you are not using the default key, there is very 
> little *insecure* about this. But there are some further concerns that 
> need to be addressed.
> _______________________________________________
> FreeNX-kNX mailing list
> FreeNX-kNX at kde.org
> https://mail.kde.org/mailman/listinfo/freenx-knx

More information about the FreeNX-kNX mailing list