Faça uso da estrutura Go's Gin para proteger seus aplicativos da web com a lista de permissões de IP.

No reino moderno da tecnologia da Internet, a importância de garantir a segurança dos aplicativos da Web e os servidores não podem ser exagerados, pois a frequência e a sofisticação dos ataques cibernéticos continuam a aumentar aumentar. Por causa disso, a necessidade de medidas de segurança robustas e de ponta para sistemas baseados na Web também está aumentando.

A lista branca de endereços IP é uma das muitas técnicas modernas para proteger aplicativos da Web, servidores e APIs. Embora seja usado apenas em alguns casos específicos, é uma forma recomendada de garantir restrição de acesso a recursos na internet quando necessário.

O que é lista branca de IP?

A lista de permissões de IP é simplesmente uma tipo de lista branca que pode ser referido como uma medida de segurança da web usada para restringir o acesso a uma rede ou recurso a um endereço IP definido ou intervalo de endereços IP considerados autorizados a acessar o sistema.

Quando a lista branca de IP é implementada em um sistema, apenas os endereços IP adicionados à lista branca podem acessar o sistema e os recursos nele contidos, enquanto outros endereços IP são bloqueados.

A lista de permissões de IP é uma forma muito comum de proteger dados muito críticos que devem estar disponíveis apenas para um indivíduo ou um determinado conjunto de pessoas e protegidos contra qualquer tentativa de hacking.

Um exemplo comum de lista de permissões de IP está no MongoDB Atlas, onde você configurar um cluster de banco de dados Mongo na nuvem e você será solicitado a adicionar seu endereço IP atual a uma lista para que as solicitações para seu banco de dados ou cluster sejam permitidas apenas quando vierem de seu computador.

Quando você deve implementar a lista de permissões de IP?

A lista de permissões de IP não é algo que todo sistema ou aplicativo precisa. Existem casos em que é recomendável e adequado implementá-lo em um aplicativo ou sistema. A seguir estão alguns exemplos de cenários em que você deve considerar a implementação de uma lista de permissões de IP.

  • Quando o aplicativo é destinado apenas para uso por um grupo específico de usuários, como funcionários ou clientes de uma determinada empresa.
  • Quando você deseja que o aplicativo seja acessível apenas a partir de um local específico, pode colocar na lista de permissões um intervalo de endereços IP específicos apenas para esse local.
  • Quando o aplicativo é usado para fornecer acesso a informações confidenciais ou propriedade intelectual, como um banco de dados de pesquisa ou software proprietário.
  • Quando o aplicativo é privado, mas acessível pela Internet e precisa ser protegido contra ameaças externas, como ataques DDoS ou infecções por malware.
  • Quando o aplicativo está hospedado em uma plataforma de nuvem pública e precisa ser protegido contra acesso não autorizado por outros locatários ou usuários da plataforma.
  • Quando o aplicativo é usado em um setor regulamentado, como saúde ou finanças, onde é necessária a conformidade com os padrões de segurança.

Existem muitos outros casos, mas fundamentalmente, sempre que um aplicativo tiver qualquer uma das propriedades mencionadas acima, você deve considerar a implementação de uma lista de permissões de IP.

Como implementar a lista de permissões de IP em Go

Go é uma linguagem de programação moderna popular para construir servidores web e APIs agrupadas com tudo o que você precisa para criar um aplicativo da Web padrão e seguro.

Esta seção demonstra o uso da estrutura Gin do Go para implementar o servidor de amostra e a lógica de lista de permissões de IP, que é uma função de middleware. Você pode instalar a estrutura do Gin em um projeto executando o seguinte comando.

acesse github.com/gin-gonic/gin

Depois de instalar a estrutura do Gin, agora você pode implementar o middleware de lista de permissões de IP. Você pode criar um novo arquivo de middleware em qualquer lugar do seu projeto, dependendo da arquitetura do seu projeto. Aqui está a implementação da função de middleware:

pacote middlewares

importar (
"github.com/gin-gonic/gin"
"rede/http"
)

funçãoIPWhiteListMiddleware(lista branca mapa[corda]bool)Gin.HandlerFunc {
retornarfunção(c*gin. Contexto) {
IP do usuário := c. ClientIP()

se !lista branca[IP do usuário] {
c. AbortWithStatusJSON(http. StatusProibido, gin. H{
"erro": "Você não está autorizado a acessar este recurso!",
})
} outro {
c. Próximo()
}
}
}

No código acima, o IPWhiteListMiddleware A função é definida para aceitar uma lista branca de endereço IP definida como um argumento. A lista branca é implementada como uma estrutura de dados de mapa para que os endereços IP possam ser facilmente atribuídos a valores de verdadeiro e falso para indicar sua acessibilidade.

Em seguida, a função usa o framework Gin ClientIP função para obter o endereço IP atual do usuário que está tentando fazer a solicitação e verifica se ele está presente na lista de permissões e com um verdadeiro valor. Se não for encontrado, ou se for encontrado um valor de falso, o middleware aborta a solicitação e retorna um erro 403 (Proibido).

Um endpoint de exemplo para testar essa funcionalidade pode ser implementado para ver como funciona a lista de permissões de IP. O código a seguir é um programa que define uma lista de permissões e implementa dois endpoints (um restrito e um irrestrito).

pacote principal

importar (
"github.com/gin-gonic/gin"
"go-ip-whitelist/middlewares"
"rede/http"
)

var IPWhitelist = mapa[corda]bool{
"127.0.0.1": verdadeiro,
"111.2.3.4": verdadeiro,
"::1": verdadeiro,
}

funçãoprincipal() {
roteador := gin. Padrão()

roteador. PEGAR("/índice", função(c*gin. Contexto) {
c. JSON(http. StatusOK, gim. H{
"mensagem": "Bem-vindo ao meu aplicativo seguro!",
})
})

página restrita := roteador. Grupo("/")
página restrita. Usar (middlewares. IPWhiteListMiddleware (IPWhitelist))

página restrita. PEGAR("/zona admin", função(c*gin. Contexto) {
c. JSON(http. StatusOK, gim. H{
"mensagem": "Este terminal está protegido com lista de permissões de IP!",
})
})

roteador. Correr(":3333")
}

Quando o aplicativo é executado com vá correr main.go, o servidor inicia na porta 3333 e você pode executar solicitações de teste para o /adminZone endpoint, para ver como o middleware funciona. Você também pode alternar o valor do IP do host local na lista de permissões entre verdadeiro e falso.

Aqui está um exemplo de solicitação para mostrar quando o endereço IP não está na lista de permissões ou quando seu valor na lista de permissões está definido como falso:

Aqui está outra solicitação para quando o endereço IP estiver presente na lista de permissões de IP com seu valor definido como verdadeiro:

Você pode obter uma resposta de erro 403 (Proibido) se testar o programa colocando na lista de permissões o endereço IP do host local genérico (127.0.0.1). O endereço IP que provavelmente funcionará localmente é ::1 que é o equivalente IPv6 de 127.0.0.1 (Ipv4). Tente colocar na lista de permissões ::1 se 127.0.0.1 se recusar a funcionar, você também pode tentar registrar o userIP variável no console para ver o endereço exato que está sendo usado.

Protegendo aplicativos da Web com lista de permissões de IP

No mundo de hoje, a segurança dos aplicativos e sistemas da Web é de extrema importância, pois a tecnologia continua avançando. A lista de permissões de IP é uma maneira muito simples e eficaz de restringir o acesso a recursos na Internet apenas a fontes confiáveis.

Até agora neste artigo, o conceito de whitelisting de endereço IP foi abordado em detalhes, quando implementá-lo e como implementá-lo em Go usando a estrutura Gin. Recomenda-se implementar a lista de permissões de IP apenas quando apropriado para evitar custos técnicos desnecessários.