¿Cómo hacer que mi servidor Java básico sea seguro contra hackers? [cerrado]

2

Tengo un programa Java Server básico en mi iMac escrito completamente en Java, que funciona para un programa de dibujo de cliente Java.

El programa básicamente permite que un usuario dibuje algo en el JPanel y el dibujo se copie en los paneles de todos los clientes conectados.

El servidor funciona en una dirección IP estática, en varios puertos opcionales e implica el uso de bases de datos y el sistema de archivos de iMac.

El problema: Recibo solicitudes de conexión aleatorias de direcciones Ip extrañas todo el tiempo y realmente lo desconfío

Por favor, eche un vistazo a mi código de servidor de muestra:

enlace

Preguntas) 1) ¿Pueden los piratas informáticos comprometer mi iMac debido a mi ingenuo programa de servidor? Si es así, ¿qué debo modificar en mi código para evitarlo?

2) ¿Qué mecanismos en mi código son los enlaces débiles?

3) ¿Es posible que un pirata informático acceda a mi iMac solo con conocer la IP estática?

Gracias

    
pregunta Swapnil B 22.11.2017 - 12:11
fuente

1 respuesta

3

Odio ser el portador de malas noticias, pero si ha ejecutado algún programa como este en su máquina personal y lo ha hecho accesible al mundo exterior, tiene que asumir de manera realista que ha tenido datos. robado y / o su máquina ha sido comprometida.

  

1) ¿Pueden los piratas informáticos comprometer mi iMac debido a mi ingenuo programa de servidor? Si es así, ¿qué debo modificar en mi código para evitarlo?

Si estás escribiendo cualquier cosa de esta manera, debes asumir que la respuesta es sí. Hay una razón por la que muchos, incluido yo mismo, dicen que nunca hagas tu propio papel. seguridad: las herramientas, algoritmos y marcos estándar de la industria generalmente se han probado y reforzado en el mundo real durante varios años, e incluso tienen defectos de seguridad (a veces críticos) que se revelan de vez en cuando.

Sin embargo, incluso utilizando una solución estándar del sector tan sólida, nunca ejecutaría algo como esto en una máquina personal a menos que estuviera detrás de alguna otra capa de protección (como una VM).

  

2) ¿Qué mecanismos en mi código son los enlaces débiles?

Este es el enfoque equivocado. Tal vez podría decirte una docena de agujeros masivos si viera el código en su totalidad, y aún podría haber cientos más. Eso no lo haría seguro, y no deberías asumir que lo es. También debe tener en cuenta la seguridad de la plataforma en la que se está ejecutando (todo, desde la máquina virtual Java hasta el sistema operativo), por lo que podría escribir una aplicación completamente hermética y aún ser vulnerable.

En cualquier caso, incluso ignorando todo lo anterior. No pude decir No ha proporcionado el código (incluso en la pregunta de Stackoverflow, el código claramente no es un ejemplo completo y autónomo; faltan llamadas de método / objetos)

Sin embargo, solo por jugar con lo que has publicado, nunca verificas si has iniciado sesión antes de hacerlo:

DrawData dat=(DrawData)acceptUserData();//this reads objects 
                                      //from the socket inputstream
dat=processData(dat);
sendToAllClients(dat);

... que realmente huele a algo que no está bien para mí.

  

3) ¿Es posible que un pirata informático acceda a mi iMac solo con conocer la IP estática?

Si este programa se está ejecutando en él, ¿y ha hecho un agujero en el firewall? Claro, yo diría que debes asumir que la gente puede y ha accedido a tu máquina. Si tiene contraseñas, datos confidenciales o cualquier otra cosa similar allí, sería prudente cambiar todo de inmediato.

En el futuro, si realmente quiere experimentar con programas inseguros (probablemente) que acaba de escribir, al menos encienda una máquina virtual barata y ejecútela. Si se compromete, no hay mucho que perder.

    
respondido por el berry120 22.11.2017 - 12:36
fuente

Lea otras preguntas en las etiquetas