(info sec professional)
OP raises an important , and valid security question/concern re exposing your plex server to the entire internet, via opening port 32400 (or a manual port your specify in plex server settings)
lets clear up a few things in regards to needing to have an open port on your public facing router (open port + dstnat rule to your server, is the technical term ) :
1- to be clear, the concern is that a hacker would exploit a known/un-know vulnerability in the plex software (mainly the plex web server you are running, and which is accessible to anyone on the internet). In such a scenario they dont need (or care) about your plex login/password. But rather would gain access to your system, though such an exploit. (or maybe they do have your plex login/pass and are one step closer to full access)
If we didnt have to open the 32400 port, this wouldnt even matter, as the service (plex web server) wouldn’t even be accessible in the first place.
**2- ** There are ways that plex cloud could accomplish exactly what they are doing now, without requiring users to open any ports. Apps like skype, facetime, home CCTV camera apps, all use this technique, all the time, and without issues. (ie how is it that on newer home CCTV/camera systems, you dont need to open any ports, yet you are able to remotely connect DIRECTLY to your home DVR from your iphone when you are not home) the answer is a technique know as: TCP Hole Punching (or UDP Hole Punching). Search Wikipedia for detailed explanation.
**(this is what plex should be using, to increase security). users should request / demand that they add support for this functionality ** (while still allowing the current method, if a user needs or rathers manually opening ports).
Below is a ROUGH outline of how TCP/UDP Firewall Hole punching works:
Plex App client wants to connect to your home server. (both are behind different Routers, in different locations, with no predefined “open” port 32400, on either side):
1- Plex App client device tells plex CLOUD - i want to connect to my home server but im not at home.
2- plex CLOUD then uses the constant connection that your HOME plex server maintains with Plex Cloud, to tell your plex server: hey server: Connect to this Public IP on port XYZ (ie the public IP of the Plex app Client device).
3- the plex client device then initiates a connection back to the plex server on this same, already now opened port (since the plex server has already initiated a connection to the plex app client’s public IP).
4- done ( plex app client is now connected to the Plex server, and no ports are EVER open to the public, 24/7)
(above is WAY over simplification of the process, but it works, and has been in use by MANY apps/servers for several years. We all use this almost daily and dont even realize it).
please request to plex devs that they implement “TCP Firewall Hole Punching” as an additional option that servers owners can enable if they wish.
thanks
(btw, until plex adds tcp Hole punching, you SHOULD change the port you use/open, from the default 32400 (to something random), on BOTH plex server, and on your router)