Skip to content

Instantly share code, notes, and snippets.

@mnofresno
Last active September 6, 2024 20:05
Show Gist options
  • Save mnofresno/2af4ec26d7056d300547661d83981308 to your computer and use it in GitHub Desktop.
Save mnofresno/2af4ec26d7056d300547661d83981308 to your computer and use it in GitHub Desktop.
Presupuesto LocalPass Security

Propuesta de Mejora de Seguridad y CI/CD para el Servidor VPS

Fecha: 27 de agosto de 2024

Descripción del Proyecto

Este documento detalla las tareas a realizar para mejorar la seguridad y la eficiencia del servidor VPS utilizado en la venta de entradas de espectáculos de música electrónica. Dada la relación de amistad, se han incluido varias promociones y beneficios extras sin costo adicional.

Objetivo del Proyecto

El objetivo principal es asegurar el servidor VPS y automatizar el proceso de despliegue, minimizando los riesgos de seguridad y mejorando la fiabilidad operativa.

Alcance del Trabajo

Tareas Incluidas

  1. Fortalecimiento de la Base de Datos

    • Horas: 4 horas
    • Costo: $94,870 ARS
    • Descripción:
      • Cambio de password del usuario SA: Este es un paso crítico para evitar accesos no autorizados, ya que el usuario SA tiene permisos administrativos completos sobre la base de datos.
      • Restricción de acceso remoto a la base de datos: Limitar el acceso remoto solo a IPs seguras es fundamental para reducir la superficie de ataque.
    • Beneficios en Confianza y Seguridad:
      • Confianza: Asegura que solo personal autorizado tenga acceso a la base de datos.
      • Seguridad: Reduce significativamente la posibilidad de accesos no autorizados o ataques exitosos a la base de datos.
  2. Seguridad en el Servidor VPS

    • Horas: 7 horas
    • Costo: $166,022.5 ARS
    • Descripción:
      • Instalación y configuración de firewall: Un firewall protege contra accesos no autorizados y filtra el tráfico entrante.
      • Configuración de reglas de acceso SSH: Limitar el acceso SSH solo a IPs específicas asegura que solo personal autorizado pueda administrar el servidor.
      • Eliminación de accesos por SSH vía password: Implementación del uso de llaves SSH con passphrase, eliminando la posibilidad de acceso mediante contraseñas.
      • Verificación de 2FA con Hostinger: Configuración de autenticación de dos factores (2FA) para mejorar la seguridad del acceso a la cuenta de Hostinger.
      • Cierre de puertos en el firewall: Se cerrarán puertos como el 21 (FTP) según el resultado del escaneo con nmap, asegurando que solo los puertos necesarios estén abiertos (80, 443, 3306).
    • Beneficios en Confianza y Seguridad:
      • Confianza: Asegura que el servidor solo es accesible por personal autorizado y reduce la superficie de ataque.
      • Seguridad: Protección adicional contra intentos de acceso no autorizados y robustez en la autenticación.
  3. Implementación de CI/CD con GitHub y Configuración de NGINX

    • Horas: 10 horas
    • Costo: $237,175 ARS
    • Descripción:
      • Automatización del pipeline CI/CD: Configuración de un pipeline CI/CD que automatiza los despliegues de código, mejorando la eficiencia y reduciendo la posibilidad de errores humanos durante el proceso.
      • GitHub Actions para backups automáticos: Configuración de acciones en GitHub para realizar backups automáticos de la base de datos ante cada push, garantizando la disponibilidad de una copia reciente de los datos críticos.
      • Configuración de NGINX y eliminación de FTP: Configuración del servidor NGINX utilizando el proyecto github-auto-deployer, lo que permite eliminar la necesidad de subir el código por FTP, facilitando el cierre del puerto 21. Esta acción reduce la "attack surface" del servidor, limitando los puntos de acceso vulnerables y mejorando la seguridad global del sistema. Además, agiliza la respuesta ante incidentes tanto para Emanuel como para Mariano, y simplifica la corrección de futuros bugs relacionados con seguridad y monitoreo.
    • Beneficios en Confianza y Seguridad:
      • Confianza: Los despliegues automáticos aseguran que todas las versiones del software sean consistentes y confiables, minimizando la intervención manual y el margen de error.
      • Seguridad: El cierre del puerto 21 y la eliminación de FTP disminuyen los vectores de ataque, fortaleciendo la seguridad del servidor. Los backups automáticos permiten una rápida recuperación en caso de fallos, protegiendo los datos críticos de la aplicación.

Total del Proyecto: $498,067.5 ARS

Tareas NO Incluidas (Recomendadas para Fase Futura)

  1. Monitoreo y Alerta de Seguridad

    • Motivo de Exclusión: Se pospone para enfocarse en tareas más urgentes. Es crucial para la detección rápida de incidentes, pero no se abordará en esta fase.
  2. Documentación y Capacitación

    • Motivo de Exclusión: Es fundamental para la correcta operación del sistema, pero se pospone para una fase posterior cuando se haya completado la implementación de las funciones críticas.
  3. Configuración de roles y permisos avanzados en la base de datos

    • Motivo de Exclusión: Aunque importante para una seguridad granular, no es crítico en la fase inicial. Recomendado para una implementación futura.
  4. Optimización avanzada del servidor y recursos

    • Motivo de Exclusión: Esta tarea mejora el rendimiento a largo plazo, pero no es urgente para la seguridad inmediata. Se puede realizar en una etapa posterior.
  5. Revisión y Fortalecimiento Completo del Código

    • Motivo de Exclusión: Una revisión completa del código es esencial, pero puede posponerse hasta que se aseguren las configuraciones básicas de seguridad.

Promociones y Beneficios Extras Incluidos

  • Reducción de Horas Totales de Trabajo: Se redujo el tiempo estimado a la mitad (de 50 a 25 horas) para ajustar el costo total.
  • Ajuste del Precio por Hora: Se ofreció un precio de $25 USD por hora, que es inferior al promedio del mercado, manteniendo la calidad del trabajo.
  • Tareas de Seguridad Extra Incluidas sin Incremento de Precio:
    • Eliminación de accesos por SSH vía password.
    • Verificación de 2FA con Hostinger.
  • Uso del Dólar Oficial en los Cálculos: Se utilizó el dólar oficial para los cálculos, con un valor de 948.70 ARS por USD, en lugar del dólar paralelo que ronda los 1300 ARS por USD. Esto hizo que el presupuesto en pesos fuera significativamente más bajo.

Precios de Mercado

Valor por Hora en el Mercado Local

Según análisis recientes, las tarifas por hora para desarrolladores en Argentina varían entre $25 y $60 USD, dependiendo de la especialización y experiencia (CloudDevs, AlcorBPO). Las tarifas más bajas tienden a ser para desarrolladores en niveles de entrada o proyectos menos complejos, mientras que tarifas más altas corresponden a proyectos especializados o de alta complejidad.

Tarifas de Empresas Mid-Market Class y Small Class

De acuerdo con fuentes internacionales como FullStack y análisis de precios de desarrollo de software, las empresas clasificadas como "Mid-Market Class" suelen cobrar entre $110 y $220 USD por hora, mientras que las "Small Class" pueden cobrar entre $82 y $137 USD por hora. Estas empresas suelen manejar proyectos que van desde $50,000 hasta $5 millones en el caso de Mid-Market Class, y desde $10,000 hasta $500,000 para Small Class.

Conclusión

El precio ofrecido para este proyecto es considerablemente más bajo que el estándar internacional y del mercado nacional, lo que demuestra que, gracias a las promociones y beneficios adicionales, se está obteniendo un valor excepcional. Esta comparación subraya que el costo del proyecto es altamente competitivo y favorable en el contexto global, especialmente si se tiene en cuenta la calidad del trabajo ofrecido.

Lista de Tareas con Casilleros

  1. Fortalecimiento de la Base de Datos

    • Cambiar la password del usuario SA.
    • Configurar restricciones de acceso remoto solo a IPs seguras.
  2. Seguridad en el Servidor VPS

    • Instalar y configurar un firewall.
    • Configurar reglas de acceso SSH solo para IPs específicas.
    • Eliminar el acceso SSH vía password.
    • Implementar el uso de llaves SSH con passphrase.
    • Eliminar acceso SSH con usuario root.
    • Configurar autenticación de dos factores (2FA) con Hostinger.
    • Escanear puertos con nmap para identificar puertos abiertos.
    • Cerrar el puerto 21 (FTP) y otros innecesarios en el firewall.
    • Verificar que solo los puertos necesarios (80, 443, 3306) estén abiertos.
  3. Implementación de CI/CD con GitHub y Configuración de NGINX

    • Configurar pipeline CI/CD en GitHub.
    • Crear scripts para automatización de despliegues en CI/CD.
    • Configurar acciones de GitHub Actions para realizar backups automáticos de la base de datos.
    • Configurar servidor NGINX para despliegues automáticos.
    • Integrar el proyecto github-auto-deployer para automatización de despliegues.
    • Eliminar la necesidad de FTP y cerrar el puerto 21.
    • Realizar pruebas de despliegue automatizado para validar la configuración.
    • Documentar el proceso de configuración de CI/CD y NGINX.
  4. Renovación de Certificados SSL con Certbot y Cloudflare en Docker

    • Mover DNS de servidor de hostinger a Cloudflare para faciliar administración DNS
    • Configurar el API Token de Cloudflare para editar registros DNS. (*)
    • Guardar el token en certbot-creds.ini en el servidor. (*)
    • Construir la imagen Docker con Certbot y plugins necesarios. (*)
    • Subir la imagen construida al registro de contenedores. (*)
    • Ejecutar el script de renovación en modo dry-run para verificar configuración. (*)
    • Ejecutar el script de renovación completa y verificar renovación de certificados. (*)
    • Verificar la correcta renovación de los certificados usando OpenSSL. (*)
  5. Revisión y Mejoras Futuras (Opcionales)

    • Evaluar la implementación de monitoreo y alertas de seguridad.
    • Documentar la configuración de seguridad y capacitar al personal relevante.
    • Configurar roles y permisos avanzados en la base de datos.
    • Realizar una revisión completa y fortalecimiento del código.
    • Optimizar recursos del servidor para rendimiento a largo plazo.

Notas

  • Las tareas marcadas con (*) son extras no mencionadas explícitamente en el presupuesto, pero son necesarias y han sido completadas como parte de la configuración de renovación de certificados SSL con Certbot y Cloudflare.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment