Aquí encontrará cómo prevenir ciertos exploits para proteger su servidor.
Esta guía asumirá que estás utilizando Purpur. Algunos ajustes necesarios para que esta guía funcione no están disponibles en Paper o Spigot. Puede que existan vulnerabilidades similares en servidores vanilla, fabric o forge, y tendrás que encontrar mods que las solucionen en esos cargadores.ç
Mantén actualizado el software de tu servidor. Hay vulnerabilidades que se corrigen en las versiones más recientes del software, aunque no se anuncien. Si tienes un servidor, deberías estar utilizando la última versión disponible para evitar vulnerabilidades críticas.
Los soportes para armaduras se pueden usar para crear máquinas que causan retrasos. Esto se logra colocando grandes cantidades de soportes para armaduras y haciendo que se muevan mediante agua, pistones u otros métodos. Esto se puede solucionar desactivando la búsqueda de actualizaciones y colisiones de los soportes para armaduras. De esta manera, los soportes para armaduras no podrán ser empujados ni atraídos (incluso por la gravedad).
paper-world-defaults.yml
Los libros son un objetivo común para técnicas de explotación y han sido utilizados en el pasado para todo tipo de acciones desagradables, como exploits de duplicación, exploits de bloqueo y obligar a los servidores a quedarse sin memoria al generar cantidades masivas de datos de chunk.
Opción 1
Reducir moderadamente el límite máximo de páginas puede mitigar la mayoría de los exploits relacionados con los libros sin afectar a los clientes de vanilla.
paper-global.yml
Opción 2
Desactivar completamente los libros previene la mayoría de los exploits relacionados con los libros (siempre y cuando los plugins no creen libros no estándar). La opción de configuración Pufferfish evita que los jugadores escriban en el libro, por lo tanto, elimina cualquier cosa que requiera la entrada del jugador para funcionar.
pufferfish.yml
Este exploit es similar al del soporte para armaduras, pero en lugar de usar soportes para armaduras, utiliza entidades que pueden ser empujadas por otras entidades. Esto se puede solucionar estableciendo un límite más pequeño en cuántas entidades pueden colisionar con una entidad singular. Puedes establecer el máximo de colisiones de entidades (max-entity-collisions) en 2 para mantener un comportamiento relativamente natural, o establecerlo en 0 para deshabilitar completamente las colisiones. La opción para corregir el bypass de la regla de apretujamiento al escalar también está disponible, pero está desactivada por defecto.
paper-world-defaults.yml
Algunos comandos en el servidor pueden tener mucha lógica involucrada en sus sugerencias de comandos. Esto puede ser explotado enviando muchos paquetes que soliciten al servidor enviar sugerencias para el comando. Esto se puede mitigar estableciendo un límite de paquetes para las sugerencias de comandos ligeramente por encima de la velocidad normal de escritura de comandos, de modo que los jugadores normales no se vean afectados.
paper-global.yml
Aunque incluso Spigot te protegerá de este exploit, hay un pequeño descuido que permitirá que un solo comando pueda ser utilizado para realizar este. Para solucionarlo, simplemente elimina el comando /skill de la lista de exclusiones de spam en el archivo spigot.yml.
spigot.yml
A veces, la gran cantidad de jugadores que se unen al servidor puede causar que se vuelva lento. Esto es especialmente cierto durante ataques de bots y momentos después de reiniciar el servidor. Esto se puede solucionar configurando un límite máximo de ingresos por tick. Los jugadores que se unan serán retrasados en el tiempo para que el servidor pueda procesarlos correctamente entre uno y otro. Si los ingresos siguen abrumando al servidor, también puedes habilitar max-joins-per-second en purpur.yml. Esto hará que el valor de la configuración de Paper se aplique por segundo en lugar de por tick.
paper-global.yml
purpur.yml
Limitar la cantidad de actualizaciones consecutivas de vecinos antes de omitir las adicionales. Reducir moderadamente este valor no tiene impacto en el juego y ayuda a mitigar diversas "máquinas de retraso por actualización de vecinos".
server.properties
Los proyectiles pueden quedar suspendidos indefinidamente en columnas de burbujas. También pueden ser transportados en masa a chunks descargados. Si alguien carga el chunk con muchos proyectiles acumulados, el servidor puede colapsar debido a la carga de demasiadas cosas a la vez. Esto se puede evitar limitando cuánto tiempo pueden existir los proyectiles en el mundo y cuántos de ellos se guardan y cargan con un chunk. Aplicar un límite de tiempo a las perlas de ender evitará el uso de dispositivos de suspensión de perlas de ender.
paper-world-defaults.yml
pufferfish.yml
Los jugadores malintencionados pueden usar un autoclicker o un mod para alternar entre recetas del libro de recetas extremadamente rápido. Esta es una operación costosa para el servidor y puede causar grandes ralentizaciones. Este problema está corregido en la configuración predeterminada de Paper, pero las configuraciones más antiguas pueden no tener esta corrección aplicada, así que asegúrate de que esté presente.
paper-global.yml
Cuando se genera un nuevo mapa del tesoro, generalmente a través de un aldeano cartógrafo o al abrir un cofre que contiene un mapa del tesoro, el servidor busca el tesoro al que el mapa debería llevar. Esta búsqueda se realiza de una manera que en la mayoría de los casos provoca la carga de muchos chunks y posiblemente su generación. Esta búsqueda puede detener el servidor el tiempo suficiente como para que el proceso de vigilancia (watchdog) lo detenga. También puede ser desencadenada al alimentar a los delfines con pescado.
Option 1
Para solucionar este problema, básicamente debes deshabilitar los mapas del tesoro y la capacidad de los delfines para buscar tesoros. Esta es la solución recomendada y 100% efectiva.
paper-world-defaults.yml
purpur.yml
Option 2
Como alternativa, puedes mantener los mapas habilitados pero configurar un borde del mundo vanilla y asegurarte de que tu mundo esté pregenerado dentro de ese borde. Luego, puedes garantizar que los tesoros ya descubiertos sean válidos como resultado de la búsqueda. Esto evitará que la búsqueda de tesoros cargue chunks que no estén generados.
paper-world-defaults.yml
La gestión del rendimiento y la seguridad del servidor requiere una cuidadosa consideración de diversas técnicas de explotación y mecanismos que pueden afectar la jugabilidad y la estabilidad. Desde el manejo de interacciones entre entidades hasta el control de la carga de chunks durante la búsqueda de tesoros, los administradores deben implementar configuraciones y actualizaciones estratégicas.
Asegurarse de que las configuraciones del servidor, como deshabilitar las búsquedas de mapas del tesoro o limitar las interacciones de las entidades, estén alineadas con los objetivos de rendimiento puede mitigar posibles ralentizaciones o caídas causadas por operaciones intensivas. Además, mantener actualizado el software del servidor con los últimos parches y configuraciones es crucial para protegerse contra nuevas técnicas de explotación y vulnerabilidades.
Al equilibrar la funcionalidad con las optimizaciones de rendimiento, los administradores de servidores pueden ofrecer una experiencia estable y placentera para los jugadores, al mismo tiempo que mantienen la seguridad y previenen problemas disruptivos en el juego.