Protección de aplicaciones web de Golang mediante listas blancas de IP

Protección de aplicaciones web de Golang mediante listas blancas de IP
Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

En el ámbito moderno de la tecnología de Internet, no se puede exagerar la importancia de garantizar la seguridad de las aplicaciones y servidores web, ya que la frecuencia y la sofisticación de los ataques cibernéticos continúan aumentando. Debido a esto, la necesidad de medidas de seguridad sólidas y de vanguardia para los sistemas basados ​​en la web también va en aumento.





MAKEUSEOF VÍDEO DEL DÍA DESPLAZAR PARA CONTINUAR CON EL CONTENIDO

La lista blanca de direcciones IP es una de las muchas técnicas modernas para proteger las aplicaciones web, los servidores y las API. Aunque solo se usa en algunos casos específicos, es una forma recomendada de garantizar la restricción del acceso a los recursos en Internet cuando sea necesario.





¿Qué es la lista blanca de IP?

La lista blanca de IP es simplemente una tipo de lista blanca que puede denominarse una medida de seguridad web utilizada para restringir el acceso a una red o recurso a una dirección IP definida o un rango de direcciones IP consideradas autorizadas para acceder al sistema.





Cuando se implementa la lista blanca de IP en un sistema, solo las direcciones IP que se agregan a la lista blanca pueden acceder al sistema y los recursos en él, mientras que otras direcciones IP están bloqueadas.

La inclusión en la lista blanca de IP es una forma muy común de asegurar datos muy críticos que deben estar disponibles solo para un individuo o un conjunto determinado de personas, y protegidos de cualquier intento de piratería.



cómo sacar agua del puerto de carga de su teléfono

Un ejemplo común de la lista blanca de IP es MongoDB Atlas, donde configurar un clúster de base de datos Mongo en la nube y se le solicita que agregue su dirección IP actual a una lista para que las solicitudes a su base de datos o clúster solo se permitan cuando provienen de su computadora.

¿Cuándo debe implementar la lista blanca de IP?

La lista blanca de IP no es algo que todos los sistemas o aplicaciones necesiten. Hay casos en los que es recomendable y adecuado implementarlo en una aplicación o sistema. Los siguientes son algunos ejemplos de escenarios en los que debería considerar implementar una lista blanca de IP.





  • Cuando la aplicación solo esté destinada a ser utilizada por un grupo específico de usuarios, como empleados o clientes de una empresa en particular.
  • Cuando desee que la aplicación sea accesible solo desde una ubicación específica, puede incluir en la lista blanca un rango de direcciones IP específicas para esa ubicación únicamente.
  • Cuando la aplicación se utiliza para brindar acceso a información confidencial o propiedad intelectual, como una base de datos de investigación o software propietario.
  • Cuando la aplicación es privada pero accesible a través de Internet y necesita protección contra amenazas externas, como ataques DDoS o infecciones de malware.
  • Cuando la aplicación está alojada en una plataforma de nube pública y necesita protegerse del acceso no autorizado por parte de otros inquilinos o usuarios de la plataforma.
  • Cuando la aplicación se utiliza en una industria regulada, como la atención médica o las finanzas, donde se requiere el cumplimiento de los estándares de seguridad.

Hay muchos más casos, pero fundamentalmente, siempre que una aplicación tenga alguna de las propiedades mencionadas anteriormente, debe considerar implementar una lista blanca de IP.

Cómo implementar la lista blanca de IP en Go

Go es un popular lenguaje de programación moderno para construir servidores web y API incluidas con todo lo que necesita para crear una aplicación web estándar y segura.





Esta sección demuestra el uso del marco Gin de Go para implementar el servidor de muestra y la lógica de lista blanca de IP, que es una función de middleware. Puede instalar el marco Gin en un proyecto ejecutando el siguiente comando.

 go get github.com/gin-gonic/gin 

Después de instalar el marco Gin, ahora puede continuar con la implementación del middleware de lista blanca de IP. Puede crear un nuevo archivo de middleware en cualquier parte de su proyecto, según la arquitectura de su proyecto. Aquí está la implementación de la función de middleware:

 package middlewares 

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func IPWhiteListMiddleware(whitelist map[string]bool) gin.HandlerFunc {
    return func(c *gin.Context) {
        userIP := c.ClientIP()

        if !whitelist[userIP] {
            c.AbortWithStatusJSON(http.StatusForbidden, gin.H{
                "error": "You are not authorized to access this resource!",
            })
        } else {
            c.Next()
        }
    }
}

En el código anterior, el IPWhiteListMiddleware La función está definida para aceptar una lista blanca de direcciones IP definida como argumento. La lista blanca se implementa como una estructura de datos de mapa para que a las direcciones IP se les puedan asignar fácilmente valores de verdadero y FALSO para indicar su accesibilidad.

Entonces la función usa el framework Gin ClienteIP función para obtener la dirección IP actual del usuario que intenta realizar la solicitud, y verifica si está presente en la lista blanca y con un verdadero valor. Si no se encuentra, o se encuentra que tiene un valor de FALSO , el middleware anula la solicitud y devuelve un error 403 (Prohibido).

Se puede implementar un punto final de muestra para probar esta funcionalidad para ver cómo funciona la lista blanca de IP. El siguiente código es un programa que define una lista blanca e implementa dos puntos finales (uno restringido y uno sin restricciones).

 package main 

import (
    "github.com/gin-gonic/gin"
    "go-ip-whitelist/middlewares"
    "net/http"
)

var IPWhitelist = map[string]bool{
    "127.0.0.1": true,
    "111.2.3.4": true,
    "::1": true,
}

func main() {
    router := gin.Default()

    router.GET("/index", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "Welcome to my secure application!",
        })
    })

    restrictedPage := router.Group("/")
    restrictedPage.Use(middlewares.IPWhiteListMiddleware(IPWhitelist))

    restrictedPage.GET("/adminZone", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "This endpoint is secured with IP whitelisting!",
        })
    })

    router.Run(":3333")
}

Cuando la aplicación se ejecuta con ve a ejecutar main.go , el servidor se inicia en el puerto 3333 y puede ejecutar solicitudes de prueba al /adminZona endpoint, para ver cómo funciona el middleware. También puede alternar el valor de la IP localhost en la lista blanca entre verdadero y FALSO .

Aquí hay una solicitud de muestra para mostrar cuando la dirección IP no está en la lista blanca o cuando su valor en la lista blanca está establecido en FALSO :

  Solicitud de prueba para cuando la dirección IP no está en la lista blanca

Aquí hay otra solicitud para cuando la dirección IP está presente en la lista blanca de IP con su valor establecido en verdadero :

  Solicitud de prueba para cuando la dirección IP esté en la lista blanca