Utilice el marco Gin de Go para proteger sus aplicaciones web con listas blancas de IP.
En el ámbito moderno de la tecnología de Internet, la importancia de garantizar la seguridad de las aplicaciones web y los servidores no se pueden subestimar, ya que la frecuencia y la sofisticación de los ataques cibernéticos continúan aumentar. 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.
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 es 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 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.
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.
ve a 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:
paquete programas intermedios
importar (
"github.com/gin-gonic/gin"
"red/http"
)funciónIPWhiteListMiddleware(lista blanca mapa[cadena]bool)Ginebra.HandlerFunc {
devolverfunción(c * ginebra. Contexto) {
IP de usuario: = c. IP del cliente ()
si !lista blanca[IP de usuario] {
C. AbortarConEstadoJSON(http. Estado Prohibido, ginebra. H{
"error": "¡No está autorizado para acceder a este recurso!",
})
} demás {
C. Próximo()
}
}
}
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).
paquete principal
importar (
"github.com/gin-gonic/gin"
"go-ip-lista blanca/middlewares"
"red/http"
)variable Lista blanca de IP = mapa[cadena]bool{
"127.0.0.1": verdadero,
"111.2.3.4": verdadero,
"::1": verdadero,
}funciónprincipal() {
enrutador: = ginebra. Por defecto()enrutador CONSEGUIR("/índice", función(c * ginebra. Contexto) {
C. JSON(http. Estado OK, ginebra. H{
"mensaje": "¡Bienvenido a mi aplicación segura!",
})
})página restringida: = enrutador. Grupo("/")
página restringida. Uso (middlewares. Middleware de lista blanca de IP (lista blanca de IP))página restringida. CONSEGUIR("/adminZona", función(c * ginebra. Contexto) {
C. JSON(http. Estado OK, ginebra. H{
"mensaje": "¡Este punto final está protegido con una lista blanca de IP!",
})
})
enrutador Correr(":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 /adminZone 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:
Aquí hay otra solicitud para cuando la dirección IP está presente en la lista blanca de IP con su valor establecido en verdadero:
Puede obtener una respuesta de error 403 (Prohibido) si prueba el programa al incluir en la lista blanca la dirección IP genérica del host local (127.0.0.1). La dirección IP que probablemente funcionará localmente es ::1 que es el equivalente IPv6 de 127.0.0.1 (Ipv4). Intente incluir en la lista blanca ::1 si 127.0.0.1 se niega a funcionar, y también puede intentar iniciar sesión IP de usuario variable en la consola para ver la dirección exacta que se está utilizando.
Protección de aplicaciones web con listas blancas de IP
En el mundo actual, la seguridad de las aplicaciones y sistemas web es de suma importancia a medida que la tecnología avanza. La lista blanca de IP es una forma muy simple y efectiva de restringir el acceso a los recursos en Internet solo a fuentes confiables.
Hasta ahora, en este artículo, se ha cubierto en detalle el concepto de la lista blanca de direcciones IP, cuándo implementarlo y cómo implementarlo en Go usando el marco Gin. Se recomienda implementar solo la lista blanca de IP cuando corresponda para evitar costos técnicos innecesarios.