Who can join

SettingSafe valueWhy
online-modetrueChecks every player’s account. With false, anyone can join using any name, including yours, unless a proxy in front of the server checks accounts.
white-listtrue for private serversOn by default since 26.3. Turn it off only if the server should be open to everyone.
enforce-whitelisttrueKicks players who are removed from the whitelist when it’s reloaded.
enforce-secure-profiletrueOnly lets in players with a Mojang-signed chat key, so chat messages can be reported.

What is exposed to the internet

SettingSafe valueWhy
enable-rconfalse unless neededRCON gives full console access and isn’t encrypted. If you use it, set a long rcon.password and don’t forward port 25575 on your router.
enable-queryfalse unless neededAnswers query requests with server details and the player list over UDP.
management-server-enabledfalse unless neededStarts an API that can manage the server. Keep TLS on and the host set to localhost unless you know you need more.
server-ipemptyEmpty listens on every network interface, which is what almost every server wants.

What players can see and what gets logged

  • hide-online-players=true stops the server list and status checks from showing who is online.
  • enable-status=false hides the server from server list pings completely. Players can still join if they know the address.
  • log-ips=false keeps player IP addresses out of the console and log files.

Settings that behave unexpectedly

  • spawn-protection needs an operator. If nobody is an operator, spawn protection is off, whatever the radius.
  • view-distance costs performance. Each step adds a ring of chunks per player. Lower it before buying more hardware.
  • PvP isn’t here any more. Since Java Edition 1.21.9 it is the pvp game rule.

The server.properties Generator shows a short warning next to risky values, and the settings reference lists every option.