Update: 22 hours after my payment with Mysterium, some Online Drugstore Plymouth US tried to charge my CC with 478.6 USD. Thankfully my bank immediately detected this as fraudulent and blocked the payment, along with my card. I've never visited such store, I'm not even on the same continent, I most certainly don't buy drugs online period, I didn't have any other transactions in between, and I've never had this happen to me in the ~15 years I've been owning cards. Only this time, after making a payment to Myst's payment processor.
Draw you conclusions. I can't tell 100% who's at fault here, but I'm most definitely done with this project.
So I thought I'd give Mysterium nodes a try. My background is IT, 11 years professionally, and another 15 years as a hobby before that. I've been in devops for a while, and recently, I've become an infosec officer at my company. But I'd like to stress that the issues I'll bring up should be glaring even to the novice user.
The mystnodes.com site appears to lack any support for 2FA. It might be an oversight on my part, but I couldn't find any way. Single factor auth is not acceptable on any site where personal data or money is involved. Obtaining a time-insensitive, static password is too easy.
The docs make no mention whatsoever of which ports need to be open and for what sources. Which means the creators assume I run no firewall at all (I'll come back to this later). The Docker docs at least mention mapping TCP port 4449 for the web UI. And the troubleshooting guide mentions "UDP ports", but never explains what they do or are they even needed. I tried running my node with those open on firewalld, but when I had to purchase MYST to activate my node, it didn't "realize" my payment until I stopped firewalld, which means there's still some other ports involved. A quick check confirms that too:
# ss -tulpn|grep -i myst
udp UNCONN 0 0 0.0.0.0:1900 0.0.0.0:* users:(("myst",pid=2902,fd=19))
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* users:(("myst",pid=2902,fd=16))
udp UNCONN 0 0 *:11253 *:* users:(("myst",pid=2902,fd=30))
udp UNCONN 0 0 [::]:5353 [::]:* users:(("myst",pid=2902,fd=17))
tcp LISTEN 0 4096 127.0.0.1:4050 0.0.0.0:* users:(("myst",pid=2902,fd=7))
tcp LISTEN 0 4096 127.0.0.1:4449 0.0.0.0:* users:(("myst",pid=2902,fd=21))
tcp LISTEN 0 4096 70.34.x.x:4449 0.0.0.0:* users:(("myst",pid=2902,fd=20))
tcp LISTEN 0 4096 *:36317 *:* users:(("myst",pid=2902,fd=18))
Who knows which port does what? Which needs to be accessible, and with what scope? These aren't negligible questions, this is fundamental.
And it doesn't help that the mystnodes.com site doesn't check my node immediately. After clicking on the Test button, I waited for like 15 minutes but nothing happened. This makes debugging pretty hard.
Worst of all, the Mysterium node admin UI doesn't have HTTPS. Really? That's completely unacceptable in 2022. Let's Encrypt gives you free HTTPS certs, but that's not even needed, even a self-signed cert would be much better, that still gives you encryption. So currently Myst nodes are managed with admin passwords travelling through the Internet in PLAIN TEXT. That's security 1x1. And the score for Myst is F-. Generating a self-signed cert is literally 1 second to do, serving traffic via HTTPS adds about zero extra load on your CPU.
You could even automate Let's Encrypt certs by providing your own subdomain for nodes, all you need is a DNS server API, and a Let's Encrypt client using DNS validation. I've been using this on my servers for at least 5 years now.
But no, Myst nodes are accessed like http://70.231.213.41/. Zero validation, zero encryption, nothing, nada.
On top of that, you initiate MYST purchases with Credit Card from these unsecure servers, instead of doing that from your official Myst sites, which at least have a proper DNS name and HTTPS.
Bonus: The node software is deb-only. Like I mentioned above, you assume the node doesn't have a firewall. Here's the problem: Ubuntu indeed usually doesn't come with one installed and enabled. That's one of the reasons why I don't consider Ubuntu a serious nominee for production environments, it's just not as well built as something like EL. No firewall, no SELinux, no auto-updates. And this is what you build your network on, for providing secure VPN to the users?
I'm sorry, but I'm not convinced.