En 2023 me saque el titulo de Desarrollador Web y desde entonces he participado en la creación, desarollo y optimización de varias páginas webs.
Javascript, PHP, Java, HTML, CSS, Wordpress, Python, SQL
Python, Redes
Canva, Pixlr E
Desarollador Web / Diseñador Gráfico
Magisterio « Ver pagina
Desarollador Web / Diseñador Gráfico
Horno San José « Ver pagina
Desarollador Web / Diseñador Gráfico
Hipica el Pedregal « Ver pagina
Desarollador Web / Diseñador Gráfico
Academia ADOS « Ver pagina
Grado superior en Desarollador de Aplicaciones Web
IES Juan De Garay
Bachillerato de Ciencias
Escolapios Carniceros
Educación Secundaria Obligatoria
Escolapios Carniceros
Ideal para empresas pequeñas que se quieran modernizar con una página web para aumentar su radio de clientes.
Ideal para personas que ya tienen una página web y necesitan actualizarla o implementar nuevos cambios en ella.
Ideal para personas que necesiten revisiones constantes, implementar nuevas funciones, soporte, SEO, etc.
Ideal para aquellos que buscan mejorar su imagen de marca con diseños únicos y creativos, como logotipos, tarjetas de visita, folletos, etc.
Ideal para aquellos que necesitan una presencia activa y efectiva en plataformas como Facebook, Instagram, Twitter, etc.
Adaptación y optimización de páginas web existentes para dispositivos móviles.
Mi interés en la ciberseguridad y las redes ha crecido a lo largo del tiempo, impulsado por la curiosidad y el aprendizaje autodidacta. Aunque mi formación principal es en desarrollo web, he dedicado un tiempo considerable a comprender los fundamentos de ciberseguridad y redes, aplicando este conocimiento en proyectos prácticos. Un ejemplo notable es el desarrollo de un sistema cliente-servidor en Python que permite una conexión remota segura mediante técnicas como el port forwarding. Este proyecto me ha permitido explorar y entender los desafíos de comunicación en redes y la importancia de implementar prácticas de seguridad adecuadas, acercándome a la ciberseguridad desde una perspectiva práctica.
El servidor abre un puerto y permanece a la espera de que los clientes se autentiquen mediante una contraseña. Una vez autenticados, los clientes entran en un estado de espera. La conexión con cada cliente se incia unicamente cuando el servidor emite el comando connect [IP del cliente], permitiendo así al servidor conectarse al equipo deseado y gestionar la comunicación de forma segura.
Cuando la autenticación se realiza correctamente, se envía automáticamente un correo notificando que el equipo está encendido, ya que la aplicación se inicia de forma automática al encender el sistema. Al establecer la conexión, se envía un segundo correo informando que la conexión se ha realizado con éxito.
El servidor se comunica con el cliente mediante comandos que se ejecutan directamente en el lado del cliente.
Estos comandos permiten navegar tanto dentro del equipo del cliente como en sus pendrives y discos duros. La ruta actual se actualiza automáticamente para evitar la necesidad de utilizar rutas absolutas.
Estos comandos permiten interactuar con los archivos del sistema, incluyendo la creación de carpetas, la lectura y creación de documentos de texto, el renombrado de archivos y su eliminación.
Estos comandos representan las funciones más peligrosas, convirtiendo al cliente.exe en un malware. A través de ellos, se pueden enviar archivos del equipo cliente al correo del atacante, activar o desactivar un keylogger (un programa capaz de registrar todas las teclas que el cliente presiona), ocultar y encriptar archivos, ejecutar archivos .exe, cerrar aplicaciones, entre otras acciones maliciosas.
Además, con el comando admin, se abre un nuevo menú que nos permite dejar de interactuar con el equipo del cliente y comenzar a gestionar el nuestro. Desde este menú, podemos subir archivos de nuestro equipo a GitHub y, a continuación, proceder a instalarlos en el equipo del cliente en segundo plano.
Estos comandos son de bajo riesgo y no representan una amenaza significativa para el equipo.
Cuando el servidor desea desconectarse del equipo, puede hacerlo mediante el comando disconnect, lo cual desconectará al servidor del equipo cliente. Sin embargo, el cliente continuará en espera, listo para aceptar una nueva conexión en caso de que el servidor envíe nuevamente la señal de conexión.
El uso de redes en este proyecto es fundamental para lograr una comunicación efectiva entre el cliente y el servidor.
Uno de los aspectos cruciales fue comprender cómo funcionan las IP públicas y privadas, ya que ambas desempeñan roles diferentes en las conexiones de red.
La IP pública es la dirección visible externamente y la que permite que otros dispositivos en internet se comuniquen con nuestra red.
En cambio, la IP privada es asignada a cada dispositivo dentro de la red local y permite que estos dispositivos se comuniquen entre sí sin exponerse directamente a internet. En la mayoría de los casos, tanto la IP pública como la privada suelen ser dinámicas, es decir, cambian cada cierto tiempo. Esto es gestionado por el proveedor de internet (ISP) para optimizar su propio uso de direcciones IP y reducir costos. Sin embargo, las IP dinámicas pueden causar problemas para establecer conexiones consistentes a lo largo del tiempo, ya que la dirección puede variar y hacer que las configuraciones se desajusten.
Para habilitar la comunicación cliente-servidor en este proyecto, fue necesario habilitar port forwarding (redireccionamiento de puertos) en el router.
El port forwarding es una técnica que permite redirigir el tráfico que llega a la IP pública hacia una dirección IP privada específica en la red local, en este caso, hacia el dispositivo que ejecuta el servidor. Al activar el port forwarding, especifiqué el puerto que el servidor necesita para recibir conexiones y la IP privada del dispositivo donde está alojado. Esta configuración asegura que cualquier solicitud enviada a la IP pública desde el exterior pueda llegar al servidor en la red local.
Otro aspecto relevante fue el firewall, que actúa como una barrera de seguridad en la red. Los firewalls, tanto en el router como en el sistema operativo del dispositivo, pueden bloquear el tráfico hacia ciertos puertos por motivos de seguridad. Para permitir la conexión en mi proyecto, fue necesario ajustar el firewall y crear reglas específicas que habiliten el puerto requerido. Sin estos ajustes, las solicitudes de conexión quedarían bloqueadas, impidiendo que el cliente se conecte al servidor.
Al trabajar con puertos, es importante asegurarse de que están abiertos y accesibles. Para verificar esto, utilicé herramientas en línea, como YouGetSignal, que permite comprobar si un puerto específico está abierto y, por lo tanto, accesible desde fuera de la red local. Esta verificación fue clave, ya que a veces, incluso después de configurar el port forwarding y ajustar el firewall, el puerto puede permanecer cerrado debido a restricciones adicionales del ISP.
Sin embargo, en este proceso me enfrenté a dos desafíos significativos.
En primer lugar, tanto mi IP pública como mi IP privada son dinámicas, lo que significa que cambian cada cierto tiempo, lo cual puede desconectar las configuraciones de red y hacer que el acceso se vuelva inestable.
Además, descubrí que mi ISP bloquea el port forwarding en ciertas circunstancias, lo cual impedía que las solicitudes entrantes llegaran al puerto del servidor a pesar de haber configurado todo correctamente. Debido a estos obstáculos, decidí utilizar una VPN (Red Privada Virtual).
Las VPN ofrecen una solución eficaz en estos casos, ya que, al conectarse a una VPN, el servicio proporciona una IP pública fija y, en muchos casos, un puerto abierto. Esto facilita la conexión, ya que la IP permanece estable y evita el bloqueo del port forwarding por parte del ISP. Además, la VPN proporciona una capa adicional de seguridad, ya que cifra el tráfico entre el cliente y el servidor, minimizando el riesgo de interceptación de datos.
En resumen, establecer la conexión cliente-servidor en este proyecto requirió una serie de configuraciones específicas en la red, el router y el firewall. Cada paso en el proceso fue fundamental para garantizar una comunicación fluida y segura, y la elección de la VPN como solución final permitió superar las limitaciones impuestas por la red y el ISP, asegurando que el servidor estuviera accesible de forma estable y segura.