Corre Tech

Noticias, artigos, e dicas sobre tecnologia para sua área

Dicas

Métodos fáceis para proteger tipos de software totalmente diferentes

Métodos fáceis para proteger tipos de software totalmente diferentes

Os hackers vasculham por funções para procurar qualquer vulnerabilidade a ser usada. A melhor técnica de entrada geralmente é roubar identidades digitais. Para reduzir o piso de assalto, as empresas podem implementar instrumentos de administração de identidade e entrada . Assim que os construtores os adicionam a um software, os administradores do sistema podem fazer o seguinte:

O Keycloak é um dispositivo de autenticação de fonte aberta que se encaixa nessa missão.

Em Keycloak: Identification and Entry Administration for Fashionable Functions , os autores Stian Thorgersen e Pedro Igor Silva fornecem um tutorial de Keycloak. Eles cobrem tudo, desde a revisão do que o Keycloak oferece às empresas, administração e corretagem de identidade até a ativação de logon único , Light-weight Listing Entry Protocol (LDAP) ou Lively Listing sync, e muito mais. Com este dispositivo IAM, construtores e administradores de sistema não querem se preocupar em aprender como armazenar e proteger senhas pessoais.

No trecho a seguir do Capítulo 6, Thorgersen e Silva informam os leitores sobre como usar o Keycloak para proteger funções internas, externas, da Internet e do lado do servidor. “Com as ciências aplicadas da Internet, como APIs REST, funções de página única ou um software do lado do servidor se adaptam naturalmente e funcionam corretamente com o Keycloak”, disse Thorgersen em um nome. O restante do capítulo se aprofunda em como fornecer segurança para funções de página única, nativas e celulares, além de APIs REST e outros serviços.

Neste capítulo, começaremos por perceber se o aparelho que queremos proteger é ou não um software interior ou exterior. Em seguida, veremos como proteger uma variedade de vários tipos de software, incluindo recursos da Internet, nativos e celulares. Também podemos dar uma olhada em como proteger APIs REST e outros tipos de empresas com tokens de portador.

No início deste capítulo, você terá descoberto as ideias e as melhores práticas por trás da proteção de vários tipos de funções. Você aprenderá como proteger recursos de Internet, celular e nativos, além de como tokens de portador podem ser usados ​​para proteger qualquer tipo de serviço, incluindo APIs REST, gRPC, WebSocket e outros tipos de empresas.

Neste capítulo, vamos cobrir os próximos assuntos principais:

  • Compreensão das funções internas e externas
  • Funções de segurança da Internet
  • Protegendo funções nativas e celulares
  • Protegendo APIs REST e empresas

Necessidades técnicas

Para executar o software padrão incluído neste capítulo, é aconselhável ter o Node.js ( https://nodejs.org/ ) instalado em sua estação de trabalho.

Você também precisa ter uma cópia local do repositório GitHub relacionado ao guia. Você provavelmente instalou o Git, possivelmente pode clonar o repositório executando este comando em um terminal:

$ git clone https://github.com/PacktPublishing/Keycloak- 
Identification-and-Entry-Administration-for-Fashionable-Functions.git

Como alternativa, você pode obter um ZIP do repositório em https://github.com/PacktPublishing/Keycloak-Identification-and-Entry-Administration-for- Fashionable-Functions/archive/grasp.zip .

Tente o próximo hiperlink para ver o vídeo Code in Motion:

https://bit.ly/3b5R0F2

Compreensão das funções internas e externas

Ao proteger um software, a primeira coisa a se pensar é se o dispositivo é um software interno ou externo.

As funções internas, geralmente conhecidas como funções primárias, são funções pertencentes à empresa. Não importa quem desenvolveu o dispositivo, nem como ele está hospedado. O dispositivo pode ser um software pronto para uso e pode ser um software hospedado como um serviço (SaaS) , embora ainda seja considerado um software interno.

Para um software interno, não é necessário pedir à pessoa que conceda acesso ao dispositivo ao autenticar a pessoa, pois este software é confiável e o administrador que registrou o dispositivo no Keycloak pode pré-aprovar a entrada em nome de a pessoa. No Keycloak, isso é feito desativando a opção Consentimento necessário para o consumidor, conforme demonstrado na captura de tela a seguir:

Captura de tela do Keycloak para habilitar aplicativos internos
Determine 6.1 — Software interno configurado para não exigir consentimento

Quando uma pessoa autentica ou concede acesso a um software interno, ela quase não precisa digitar o nome de usuário e a senha. Para funções externas, novamente, uma pessoa também deve conceder acesso ao aparelho.

Funções externas, geralmente conhecidas como funções de terceiros, são funções que não são de propriedade e gerenciadas pela própria empresa, mas sim por um terceiro grupo social. Todas as funções externas devem ter a opção Consentimento necessário ativada, conforme mostrado na captura de tela a seguir:

Captura de tela do Keycloak sobre a ativação de aplicativos externos
Determinar 6.2 — Software externo configurado para exigir consentimento

Quando uma pessoa autentica ou concede acesso a um software externo, a pessoa é obrigada a não apenas inserir o nome de usuário e a senha, mas também conceder acesso ao dispositivo, conforme mostrado na captura de tela a seguir:

Captura de tela do Keycloak mostrando o usuário concedendo acesso
Determinar 6.3 — Consumidor concedendo entrada a um software externo

É melhor agora perceber a distinção entre um software interno e externo, juntamente com descobrir como exigir que os clientes concedam acesso a funções externas. Na próxima parte, veremos como proteger as funções da Internet com o Keycloak.

Funções de segurança da Internet

Ao proteger um software de Internet com o Keycloak, a primeira coisa que você deve considerar é a estrutura do dispositivo, pois há várias abordagens:

  • No início, seu software de Internet é um software de Internet convencional operando na faceta do servidor ou um software de página única (SPA) contemporâneo operando no navegador?
  • O segundo fator a considerar é se o dispositivo está ou não acessando alguma API REST e, nesse caso, as APIs REST fazem parte do dispositivo ou são externas?

Se for um software do tipo SPA que invoca APIs externas, há duas opções adicionais a serem consideradas. O dispositivo invoca a API REST externa instantaneamente ou por uma API REST dedicada hospedada junto com o dispositivo?

Com base nisso, é melhor decidir qual dos próximos corresponde à estrutura do dispositivo que você está protegendo:

  • Faceta do servidor : Se o software de rede estiver operando dentro de um servidor de internet ou um servidor de software.
  • SPA com API REST dedicada : se o dispositivo estiver operando no navegador e apenas invocando uma API REST dedicada sob a mesma área.
  • SPA com API intermediária : se o dispositivo estiver operando no navegador e invocar APIs REST externas por uma API intermediária, o local onde a API intermediária será hospedada sob a mesma área do dispositivo
  • SPA com API externa : se o dispositivo estiver operando no navegador e invocar apenas APIs hospedadas em domínios totalmente diferentes.

Antes de verificarmos os detalhes específicos dessas diferentes arquiteturas de software da Internet, vamos contemplar o que é comum entre todas as arquiteturas.

Em primeiro lugar, e mais importante, é melhor proteger seu software de Internet usando o código de autorização circular com a extensão de chave de prova para alteração de código ( PKCE ). Se você está indeciso sobre o que é o Código de Autorização circulante, é melhor aprender o Capítulo 4 , Autenticando Clientes com OpenID Join, antes de prosseguir com este capítulo. A extensão PKCE é uma extensão para OAuth 2.0 que vincula o código de autorização ao dispositivo que enviou a solicitação de autorização. Isso evita o abuso do código de autorização se ele for interceptado. Não estamos sobrepondo o PKCE diretamente neste guia, pois recomendamos que você use uma biblioteca. Se você decidir não usar uma biblioteca, é melhor consultar as especificações para saber como implementar o suporte para OAuth 2.0 e OpenID Join por conta própria.

When porting present functions to make use of Keycloak, it might be tempting to maintain the login pages within the present software, then exchanging the username and password for tokens, through the use of the Useful resource Proprietor Password Credential grant to acquire tokens. This may be much like how you’ll combine your software with an LDAP server.

No entanto, isso é apenas uma coisa que você simplesmente não deve ser tentado a fazer. Coletar credenciais pessoais em um software significa que, se um único software for comprometido, um invasor provavelmente terá acesso a todos os recursos que o usuário pode acessar. Isso consiste em funções não protegidas pelo Keycloak, pois os clientes geralmente reutilizam senhas. Além disso, você não deve ter flexibilidade para introduzir uma autenticação mais forte, como a autenticação de dois fatores. Por fim, você não obtém todas as vantagens de utilizar o Keycloak com esta estratégia, correspondente ao logon único ( SSO ) e login social.

Em vez de proteger as páginas de login dentro de suas funções atuais, você pode ser tentado a incorporar a página de login do Keycloak como um iframe dentro do software. Isso também é algo que você deve evitar fazer. Com a página da web de login incorporada ao appliance, ela pode ser afetada por vulnerabilidades em um software, sem dúvida permitindo que um invasor acesse o nome de usuário e a senha.

Como a página de login é renderizada em um iframe, geralmente não é fácil para os clientes ver de onde vêm as páginas de login, e os clientes não acreditariam entrar em suas senhas no dispositivo instantaneamente. Por fim, com cookies de terceiros sendo constantemente usados ​​para monitoramento em vários sites, os navegadores têm se tornado cada vez mais agressivos contra o bloqueio de cookies de terceiros, o que pode resultar nas páginas de login do Keycloak não acessando os cookies necessários operar.

Em resumo, é melhor se acostumar com o fato de que um software deve redirecionar a pessoa a um fornecedor de identidade confiável para autenticação, principalmente em situações de SSO. Essa também é uma amostra com a qual quase todos os seus clientes já estão acostumados, pois está amplamente em uso hoje em dia. A próxima captura de tela mostra uma instância das páginas de login do Google e da Amazon, onde você pode ver que elas não estão incorporadas nos próprios recursos:

Capturas de tela das páginas de login do Google e da Amazon
Determine 6.4 — Instância do Google e da Amazon exibindo páginas de login externas

É melhor agora ter uma compreensão muito boa e fundamental de descobrir como proteger um software de Internet com o Keycloak. Na próxima parte, começaremos a descobrir como proteger vários tipos de recursos da Internet, começando com os recursos da Internet do lado do servidor.

Protegendo funções de internet do lado do servidor

Ao proteger um software de internet do lado do servidor com Keycloak, é melhor registrar um consumidor confidencial com Keycloak. Como você pode estar usando um consumidor confidencial, um código de autorização vazado não pode ser aproveitado por um invasor. Ainda é bom usar a extensão PKCE porque oferece segurança contra vários tipos de ataques.

Você também precisará configurar URIs de redirecionamento relevantes para o consumidor, pois em qualquer outro caso, você pode estar criando o que é conhecido como redirecionamento aberto. Um redirecionamento aberto pode ser utilizado, por exemplo, em um ataque de spam para fazer uma pessoa imaginar que está clicando em um hiperlink para um site confiável. Por exemplo, se um spammer enviar o URL https://trusted-site.com/…?redirect_ uri=https://attacker.com para uma pessoa em um e-mail, a pessoa só poderá descobrir que o nome da área é para um site confiável e clique no hiperlink. Você provavelmente não configurou um URI de redirecionamento real em seu consumidor, o Keycloak redirecionaria a pessoa para o posicionamento oferecido pelo invasor.

Com um software de internet do lado do servidor, normalmente, apenas o token de ID é aproveitado para verificar uma sessão HTTP. O software de Internet do lado do servidor também pode aproveitar um token de entrada se precisar invocar APIs REST externas sob o contexto da pessoa.

O próximo diagrama exibe o fluxo para um software de internet do lado do servidor:

Diagrama de um aplicativo da Web do lado do servidor
Determinar 6.5 — Software de internet do lado do servidor

No elemento adicional, as etapas dentro do diagrama são as seguintes:

  1. O servidor de internet redireciona o navegador para as páginas de login do Keycloak utilizando o Código de Autorização circulado
  2. A pessoa autentica com Keycloak.
  3. O código de autorização é devolvido ao software de internet do lado do servidor.
  4. A appliance troca o código de autorização por tokens, utilizando as credenciais cadastradas com o consumidor no Keycloak.
  5. O dispositivo recupera o token de ID instantaneamente do Keycloak porque não precisa confirmar o token e pode analisar instantaneamente o token de ID para pesquisar detalhes sobre a pessoa autenticada e configurar uma sessão HTTP autenticada.
  6. As solicitações do navegador agora incorporam o cookie de sessão HTTP.

Em resumo, o dispositivo aproveita a circulação do código de autorização para obter um token de ID do Keycloak, que usa para verificar uma sessão HTTP autenticada.

Para recursos de Internet do lado do servidor, você pode até optar por usar SAML 2.0, em vez de usar o OpenID Join. Como o OpenID Join é mais fácil de trabalhar, é recomendável usar o OpenID Join em vez do SAML 2.0, exceto que seu software já oferece suporte ao SAML 2.0.

Com relação aos autores,
Stian Thorgersen trabalhou na Arjuna Applied Sciences construindo uma plataforma de federação de nuvem e na Purple Hat, em busca de métodos para simplificar a vida dos construtores. Em 2013, Thorgersen cofundou o empreendimento Keycloak com outro desenvolvedor da Purple Hat. Enquanto falamos, Thorgersen é o líder do empreendimento Keycloak e principal colaborador do empreendimento. Ele é o principal engenheiro de software sênior da Purple Hat, especializado em administração de identidade e entrada.

Pedro Igor Silva possui expertise com tarefas de open source, correspondentes a FreeBSD e Linux, além de Java e J2EE. Ele trabalhou em um ISP e como engenheiro de programa de software Java, engenheiro de sistema, arquiteto de sistema e consultor. Enquanto falamos, Silva é o principal engenheiro de software da Purple Hat e um dos principais criadores do Keycloak. Ele pesquisa segurança de TI, particularmente segurança de software e administração de identidade e entrada.

Share this post

About the author

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *