atsign-foundation / noports

Connect to any device with no external listening ports open
https://noports.com
BSD 3-Clause "New" or "Revised" License
264 stars 15 forks source link

[Tracker] Team / Enterprise noports #293

Open cconstab opened 1 year ago

cconstab commented 1 year ago

Tasks

- [ ] https://github.com/atsign-foundation/sshnoports/issues/552
- [ ] https://github.com/atsign-foundation/sshnoports/issues/553
- [x] Internal review
- [ ] https://github.com/atsign-foundation/noports/issues/855
- [ ] Implement 'ownership' concept (ACME corp has delegated management of $devices to Some Tech Services Corp)
- [ ] Get market feedback

Initial problem statement from cconstab

Is your feature request related to a problem? Please describe.

Currently sshnpd only specifies as single manager atSign, which is fine for the original use case but as we head to teams and enterprises using sshnp we have to allow/control multiple atsigns to get access.

Describe the solution you'd like

The existing code in trunk now allows -u which allows X number of accounts to login on demand from a manager atSign but to specifiy which atSigns I would like to have two options.

  1. Provide at the sshnpd multiple atSigns at the -m option
  2. As this is not scalable in a Enterprise (or us) I would like to see an -m @ atSign option. This would allow the atSign to respond with true/false to allowing the requesting atSign access to the sshd on the host running sshnpd. Being able to specify X number of atSigns would create resiliency and hierarchy (I think).

This approach does work right now and if the sshnpd is running as a username with no shell provides access to any username on the host to log in, which is neat but we need more...

Example logging in as testone on the device iot_device01 and not the username that is running the sshnpd

cconstab@tarial sshnoports % $(./sshnp -f @cconstab -t @ssh_1 -d iot_device01  -h 192.168.1.76 -s testone_rsa.pub -u testone)
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-76-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Jul 30 08:11:12 PM UTC 2023

  System load:  0.0615234375       Processes:              112
  Usage of /:   42.6% of 31.32GB   Users logged in:        2
  Memory usage: 22%                IPv4 address for ens18: 192.168.1.64
  Swap usage:   4%

Last login: Sun Jul 30 20:08:43 2023 from 127.0.0.1
testone@iotdevice01:~$ 

To allow access to a machine using this method you would just need to ask for the atSign of the user, the username and the public key. This seems very much like an enterprise ready or cloud ready solution.

Describe alternatives you've considered

None but open to any better ideas.. Lets discuss at an arch call

gkc commented 1 year ago

The primary difference in my mind between the individual (home, one-person company) and enterprise use case is

I believe the solution outlined by @cconstab works in principle

There are lots of other things to do outside of the changes to sshnpd and sshnp

... and much more, but as I said I believe this works in principle

cpswan commented 1 year ago

Capturing thoughts from arch call on SSH key management....

A few approaches we've seen:

gkc commented 1 year ago

Next steps: iterate through spikes and reviews until we get a design shape we are happy with. Time-boxing to 5SP for this sprint.

gkc commented 10 months ago

No progress during PR72; moving to PR73

gkc commented 10 months ago