Lo que me preocupa es la capacidad de cualquier otro programa para obtener lo que está disponible en este puerto.
Para empezar, si su servidor se enlaza con localhost (que es 127.0.0.1
para IPV4, y / o ::1
para IPV6) entonces solo los clientes que se ejecutan en localhost deberían poder acceder a él. Si desea restringir las conexiones a programas locales , asegúrese de que su servidor se vincule a una de esas direcciones de bucle invertido , y definitivamente no es 0.0.0.0
o ::
( que denota todas las interfaces) .
Si alguien tiene un software de ejecución de acceso no autorizado que se puede conectar al dispositivo local de bucle de retorno , es posible que tenga un problema mucho más grande . Asumiré que esto no es un problema, es decir, a menos que esté compartiendo su computadora con otras personas, es seguro que solo puede vincular a 127.0.0.1
y / o ::1
y terminar con esto .
Podría estar compartiendo su computadora con otras personas, es decir, ejecutando un servicio de shell , lo que significa que le está dando acceso a su sistema . En este caso, la capacidad de uno de sus usuarios (con suerte confiables) para conectarse a servicios vinculados al bucle invertido debería ser una de sus preocupaciones más pequeñas. Cuando dejas a otras personas detrás de tu firewall, y dentro de tu userland , ¡les das la posibilidad de explorar toda tu red! Su enrutador, su impresora y cualquier teléfono que tenga conectado a su red también pueden ejecutar software, y estos dispositivos pueden ser mucho más difíciles de proteger que su servidor.
Debería considerar el uso de espacios aislados en este tipo de usuarios mediante la virtualización como KVM, Xen, etc., dándoles su propio entorno virtual (incluida una interfaz de red virtual ) para jugar y por lo tanto, le ofrece la posibilidad de instalar un firewall en dicha interfaz de red virtual .
¿Cuáles son las mejores prácticas para elegir un puerto en localhost (si eso ya no es una práctica tan mala) y, si es posible, asegurarlo?
Nuevamente, las conexiones entrantes desde una interfaz sin loopback no deberían poder conectarse a sockets que escuchan en una interfaz de bucle invertido . Si su sistema operativo permite una conexión de este tipo, está muy mal configurado o es Windows XP, service pack 1a o inferior (que en sí mismo es un problema aparte).
Su principal preocupación debería ser evitar que los usuarios que no son de confianza ejecuten el código directamente en su país de usuario, por lo tanto, si está compartiendo su computadora con otras personas, como administrador, debería sandbox a esas otras personas y mantener un enfoque de grano fino en lo que pueden ver cosas externas. Suponiendo que están en un espacio aislado, solo pueden comunicarse con su host a través de una interfaz de red virtual, por lo que, de nuevo, no pueden conectarse a los servicios 127.0.0.1
o ::1
bound en el host, pero podrían ser capaces de para escanear su red, todavía ...