Hola tengo una duda acerca de la arquitectura cliente/servidor y es la siguiente, supongamos hice una aplicacion como esta pero de una manera X un usuario manipulo el cliente para que este se conecte no a mi servidor sino a uno que el programo localmente y y este servidor local reenvia los datos del cliente a servidor mi servidor, para asi poder mandar repetidamente paquetes desde ese servidor local y obtener por decirlo asi beneficios. Como podria detectar que los paquetes entrandes no son legitimos de mi cliente?
Un poco confusa su explicación.
Según entendí. Hay un usuario que ha hecho una redirección tipo MITM, en la cual todos los pedidos destinados a su server, primero pasan por los de él.
Si lo entendí correctamente, la solución es sencilla.
Si es una red que no posee el control por no ser suya, puede cifrar el tráfico: miles de opciones, desde una VPN, hasta programas gestores para ello, que le crearían un túnel ssh.
Un buen firewall (en el servidor) también lo ayudaría en cualquier contexto.
Desconozco hasta qué punto es experto en temas de administración de servidores, pero existen sinfín de herramientas de seguridad, para evitar que esto suceda. Le hablo a nivel profesional de administradores (hay que saber).
Por lo general se ancla el cliente al servidor, IP, Mac, etc. y las soluciones de seguridad que poseen filtros y firewalls le detectan los ataques, las intrusiones, las suplantaciones de identidad, redirecciones, etc.
Ej: Kerio Control, etc.
También en la propia configuración del servidor (dependiendo de su tipo), impone reglas de seguridad y validación de los clientes.
Desde los clientes establece reglas para ello, de igual forma, y en consonancia con el sistema de seguridad empleado, etc. Según su explicación al parecer no tiene control sobre los usuarios, unido a una mala política de seguridad gestora por parte de su servidor.
CitarSegún entendí. Hay un usuario que ha hecho una redirección tipo MITM, en la cual todos los pedidos destinados a su server, primero pasan por los de él.
Es lo primero que pensé cuando descifré la duda, pero creo que también existe otra posibilidad, un proxy.
Hasta ahora entiendo que existen estos tres usuarios (los marcaré con letras :-D):
A): El usuario cliente
B): El servidor que el cliente desea conectarse
C): El servidor proxy o la máquina atacante realizando un MITM
Sin importar si el servidor
C sea una máquina reenviando los paquetes por medio de un MITM o no, y como su servidor (
A) es programado por usted mismo, puede ser creativo e integrar en la propia aplicación un sistema de autenticación y validación. Por ejemplo, podría firmar y cifrar los datos enviados con un algoritmo asimétrico (como RSA, DSA, etc), además del sistema de autenticación.
Claro que si es un MITM debe tener cuidado en compartir la clave pública, porque si el atacante es ingenioso puede no enviar el paquete legitimo con la clave, sino que envía el suyo propio con su propia clave pública y cifra los datos con la clave capturada para que no sea detectado :-)
Además de lo mencionado (el sistema de autenticación y validación), puede hacerlo a través de la dirección IP y la MAC (en caso de ser en la misma LAN), pero igualmente se pueden falsificar :-)
Aunque debería escuchar al compañero si desea tener seguridad en sus sistemas.
~ DtxdF
Si me referia a un ataque MITM, Gracias!