Rtty – Access a device’s terminal from anywhere via the web
github.com
github.com
Nah, nice try, but I'm good with ssh, key based authentication and few white-listed IPs.
Anything more sophisticated will inspect the traffic and drop SSH connections no matter the port.
I guess if that work depends on how the proxy is set up.
If not, then this seems like an exfiltration risk your security people should fix.
Edit: Though these MITM vendors will soon have fun with DNS over https and encrypted SNI. Guess they will have to resort to being browser plugins?
This is something I've thought about time and again, but the security issues always seem to outweigh any potential benefit from something like the OP or similar (in my opinion).
Desktop permissions are based on protecting a user’s data from other users, not from anything that they themselves are running.
So it's not really meant to be a secure system, think of it as a botnet CnC and this makes a lot more sense.
It's why the system is supposed to be run on OpenWRT (which most cheap IOT things are based on), it why there's not hostnames, it's why it supports hundreds or thousands of devices.
> So it's not really meant to be a secure system, think of it as a botnet CnC and this makes a lot more sense.
Is there anything to back this up? While the mtls initialization looks less than ideal and there's downright stupid stuff in the README like credentials in URI parameters, this doesn't look any different than the other web terminal gateways we've seen on HN over the last few weeks.
> which most cheap IOT things are based on
Most cheap IoT devices I'm aware of aren't remotely capable of running OpenWRT, do you happen to have examples for this?
Yes, you can run `login` instead of a shell, but doing so require the tool to be executed as root, still sound bad.
I'd recommend to use a proxy that supports converting socket to Websocket(wss) and back, then you can by-pass the blockage from there. And since it's a proxy, it should not decrypt the SSH traffic.
The idea is basically:
Your SSH client <---SSH-Traffic---> Proxy front-end <----Websocket----> Proxy back-end <---SSH-Traffic---> Target SSH server
You can deploy the "Proxy front-end" inside the restricted network, and the "Proxy back-end" out side the network. After that, all you need to do it to config your SSH client to go through that proxy front-end.
There are many proxy software is capable of doing that, the GitHub keyword I believe is "socks5 websocket".
Though only locally, not connected to the internet. Maybe I'm paranoid, since I use so much other software without auditing, but somehow I feel especially vulnerable to web terminals, aside from anyone being able to login, and public keys not being convenient on the web.
Also, the readme.md for rtty here suggests running as root.
That doesn't secure you against MITM from the machines. E.g. if the machine is taken over locally or remotely or there's spyware running on it, you could still end up compromised.
(I'm not saying you should do this; you probably shouldn't.)
Anyway you could just as easily run SSH over another port, rather than using this. Unless your company is using deep packet inspection to recognise SSH traffic, but then it'd be weird to accept HTTPS traffic from a device that isn't supposed to have any.
The patches add the possibility of specifying a different target host, whereas the original wetty only allowed connecting to the host currently executing wetty.
I run it in a container, I've skimmed the source code and it disarmingly simple: it performs a forkpty call to spawn the ssh client binary and then the connection goes on as the forked process is forwarded raw characters.
Under the security POV is kinda okay as everything is tunneled via TLS and the endpoint is (at least in my installation) not advertised very much. I check the server access logs from time to time and I don't see any activity besides my accesses.
In general a web based terminal is very handy, I wouldn't dismiss such a technology so quickly and superficially.
I'm old.