RADIUS

O RADIUS, Remote Authentication Dial In User Service, é um protocolo amplamente utilizado para gerenciar o acesso dos mais diversos serviços de rede. Este protocolo define um padrão para troca de informações entre um Servidor de acesso à rede (NAS, Network Access Server) e um servidor AAA para realizar a autenticação, a autorização e as operações de gerenciamento de contas. Um servidor RADIUS AAA pode gerenciar de forma eficiente diferentes perfis de usuários para a autenticação dos mesmos, além de fornecer informações de configurações que especificam o tipo de serviço a ser entregue e as políticas de cada tipo de serviço, para garantir o uso apropriado de cada recurso disponível. Dentre os serviços que utilizam o RADIUS, podemos citar as autenticações em redes sem-fio, conexões DSL e VPNs. Existem soluções pagas que implementam o RADIUS, mas também existem soluções de código aberto de qualidade como o Free Radius, que conta com uma crescente base de usuários.

Porque utilizar o RADIUS

O RADIUS apresenta uma série de funcionalidades que o qualifica como um eficiente sistema de autenticação adaptável as mais diversas condições de rede. Serão descritas a seguir as principais vantagens:

Modelo Cliente/Servidor: O RADIUS utiliza o modelo cliente/servidor. O NAS funciona como um cliente para o servidor RADIUS. O cliente é responsável por enviar as informações dos usuários que desejam acessar o serviço do NAS para o servidor RADIUS, que se encarregará de verificar a autenticidade do usuário e informar a sua validade para o NAS, que poderá retornar então a resposta adequada para o usuário. Desta forma, o NAS repassa a tarefa de autenticação para o servidor RADIUS, que retorna para o NAS informações fundamentais para controlar o uso de um determinado recurso por parte do usuário, como por exemplo, quais são os limites de acesso do usuário e qual é o tempo máximo de conexão antes de a mesma expirar.

Segurança: As transferências de dados realizadas entre o cliente e o servidor RADIUS são autenticadas através do uso de um segredo compartilhado (shared secret), que nunca é enviado pela rede. Este segredo é de prévio conhecimento tanto do cliente quanto do servidor e é utilizado para garantir a autenticidade do usuário de um determinado serviço requisitado. As senhas de usuário são criptografadas para tentar garantir que nenhum usuário malicioso que esteja ouvindo a rede possa descobrir a senha do usuário. Além disso, outros métodos de autenticação podem ser implementados, dependendo do grau de segurança requisitado pelo sistema.

Flexibilidade e Adaptabilidade: Os dispositivos de rede como roteadores, servidores, e switches, muitas vezes não conseguem arcar com um grande número de usuários com informações de autenticação distintas. Através do RADIUS, estes dispositivos podem romper esta barreira e permitir a autenticação destes usuários através do uso de servidores RADIUS embarcados atuando como proxys para servidores RADIUS de maior capacidade de processamento.

Protocolo extensível: Ao utilizar um campo de atributos de tamanho variável em seus pacotes, o protocolo RADIUS permite que novos atributos sejam adicionados sem atrapalhar implementações prévias do protocolo. Através do campo atributos, também é possível estabelecer novos parâmetros e novos mecanismos de autenticação, sem necessariamente ter que alterar o formato do pacote.

Compatibilidade: Os servidores RADIUS podem verificar as credenciais de seus usuários em bancos de dados de fontes externas, como bancos de dados SQL, Kerberos e LDAP. Desta forma, a implementação de um servidor RADIUS pode ser realizada de forma a reaproveitar um banco de usuários já existente. Outro ponto interessante é que o RADIUS é amplamente utilizado, e praticamente todos os fabricantes de hardware produzem produtos compatíveis com o serviço.

Aplicações

O RADIUS é utilizado atualmente em uma ampla gama de serviços. Ele é adotado como um protocolo de autenticação utilizado pelo IEEE 802.1X, (freqüentemente usado em redes sem-fio), melhorando a criptografia padrão do Wired Equivalency Privacy (WEP) e utilizando outros métodos de autenticação como o EAP e algumas de suas variantes. Devido a sua grande flexibilidade, o uso de servidores RADIUS atuando como proxys em dispositivos de rede como roteadores sem-fio permite que estes autentiquem e gerenciem o acesso de um grande número de usuários destes serviços, tarefa quase impossível se levarmos em conta que a quantidade de memória destes sistemas embarcados não permitiria a autenticação de um grande número de usuários com diferentes métodos de autenticação e diferentes atributos. Além disso, o RADIUS é utilizado amplamente em Provedores de Serviço VoIP, que o empregam para transmitir as credenciais dos usuários e também para realizar o monitoramento das chamadas efetuadas, para a posterior cobrança pelos serviços.

AAA – Authentication, Authorization, Accounting

O servidor RADIUS é um servidor AAA. Para poder ser considerado como tal, ele precisa ser capaz de autenticar usuários, lidar efetivamente com as requisições de autorização e prover a coleta de informações dos usuários (auditoria).

A autenticação se refere ao processo de se apresentar uma identidade digital de uma entidade para outra. Normalmente, esta autenticação ocorre entre um cliente e um servidor. De uma forma mais geral, a autenticação é efetuada através da apresentação de uma identidade e suas credenciais correspondentes, como a senha associada, tickets, tokens e certificados digitais.

A autorização se refere à associação de certos tipos de privilégios para uma entidade, baseados na própria autenticação da entidade e de quais serviços estão sendo requisitados. Dentre as políticas de autorização, podemos utilizar restrições em determinados horários, restrições de acordo com o grupo ao qual pertence o usuário e proteção contra múltiplas conexões simultâneas efetuadas pelo mesmo usuário. Como exemplo de aplicações que utilizam estas políticas de autorização, podemos citar as políticas de Qualidade de Serviço, que podem fornecer mais banda de acordo com o serviço requisitado, o controle de certos tipos de pacotes, como ocorre no traffic shapping, dentre outros.

Accounting (auditoria) se refere ao monitoramento do comportamento dos usuários e de que forma estes consomem os recursos da rede. Estas informações podem ser muito úteis para melhor gerenciar os recursos de rede, para a cobrança de serviços e para o planejamento de quais setores da rede precisam ser melhorados.

Topologia e Funcionamento

O protocolo RADIUS segue a arquitetura servidor/cliente. O usuário que deseja utilizar um determinado serviço de rede envia as suas informações para o NAS solicitado (o NAS atua como um cliente para o servidor RADIUS), que pode solicitar a autenticação deste usuário a um servidor RADIUS AAA, na forma de uma mensagem de requisição de acesso (Access- Request message). De acordo com a resposta fornecida pelo servidor AAA, o cliente (NAS) pode então fornecer os serviços requisitados pelo usuário de acordo com as políticas e informações estabelecidas pelo servidor RADIUS AAA. Após receber uma requisição do cliente, o servidor RADIUS tenta promover a autenticação do usuário, e retorna as informações de configuração e as políticas a serem aplicadas para o mesmo.

Devido a grande flexibilidade do protocolo e devido as diferentes tecnologias agregadas ao RADIUS, o servidor pode ser configurado para autenticar os usuários localmente ou como um cliente proxy que redireciona os pedidos de acesso para outro servidor AAA remoto. Quando utilizamos o servidor RADIUS desta forma, o servidor AAA que atua como proxy passa a ser o responsável pela intermediação das mensagens trocadas entre o cliente e o servidor remoto. Um servidor RADIUS pode ser configurado para efetuar determinadas requisições localmente e atuar comoproxy para outros servidores remotos. Um exemplo muito prático e útil desta flexibilidade do RADIUS é a utilização do mesmo para a autenticação em serviços que executam em sistemas embarcados. Como os sistemas embarcados geralmente possuem limitações de gasto de energia e de espaço de armazenamento e memória, a utilização de um servidor AAA embarcado atuando somente como proxy pode garantir a autenticação segura de usuários de um serviço, como o acesso de uma rede sem-fio em um ponto de acesso.

Exemplo de uma configuração que utiliza o RADIUS. Nesta figura, suponha que os serviços do NAS1 são autenticados pelo servidor RADIUS 1, enquanto os serviços do NAS 2 são autenticados pelo servidor RADIUS 2.

Podemos observar um exemplo típico de um sistema utilizando RADIUS. O Usuário A, por exemplo, deseja utilizar um serviço fornecido pelo NAS1. Após o usuário A enviar um pedido para o NAS1, o NAS1 que atua como um cliente RADIUS, envia para o Servidor RADIUS 1 a requisição de acesso, indicando que o usuário A deseja utilizar o serviço fornecido pelo NAS 1. Neste exemplo, o servidor RADIUS 1 conseguiu autenticar o Usuário A com sucesso. O servidor RADIUS então informa ao NAS1 da autenticidade do usuário A, que pode agora utilizar o serviço por ele requisitado. Ainda na figura 3.1A, o usuário C deseja utilizar um serviço fornecido pelo NAS 2. Para este caso, o servidor RADIUS 1 funciona apenas como um proxy para o servidor RADIUS 2, de forma que a intermediação do processo de autenticação entre o servidor RADIUS 2 e o NAS 2 será feita pelo servidor RADIUS 1. Neste exemplo, podemos verificar o grande grau de flexibilidade do Servidor RADIUS, que pode autenticar determinados serviços localmente e ao mesmo tempo intermediar a autenticação de outros serviços de autenticação remotos.

Pacotes de dados RADIUS

O Pacote de dados  RADIUS segue o seguinte formato:
Código:
O campo código tem o tamanho fixo de um octeto e serve para identificar qual tipo de pacote RADIUS está sendo enviado. Caso o campo código esteja preenchido de forma incorreta, ele é descartado silenciosamente, sem que ocorra um processamento posterior deste pacote. Dentre os possíveis tipos de pacote podemos citar:

  • Requisição de acesso (Access-Request)
  • Acesso aceito (Access-Accept)
  • Acesso negado (Access-Reject)
  • Desafio de acesso (Access-Challenge)

Identificador:
O campo de identificação possui o tamanho fixo de um octeto, e o seu principal objetivo é identificar as requisições e as respostas trocadas. O servidor RADIUS AAA pode detectar uma requisição duplicada através da análise do IP de origem e da porta UDP de origem. Nestes casos, o pacote é descartado silenciosamente.

Comprimento:

O campo Comprimento possui o tamanho fixo de 2 octetos e serve para informar o tamanho do pacote. Também estão inclusos no cálculo do tamanho do pacote os campos Código, Identificador, Comprimento, Autenticador e Atributos. Se o tamanho especificado no campo Comprimento for menor que o tamanho do pacote, os octetos fora do alcance especificado são ignorados.
Caso o tamanho do pacote seja menor do que o tamanho especificado no campo Comprimento, este pacote é silenciosamente descartado. Os pacotes RADIUS devem possuir
um tamanho mínimo de 20 octetos e um tamanho máximo de 4096 octetos.

Autenticador:
O campo de Autenticação possui o tamanho de dezesseis octetos. Os valores incluídos neste campo do pacote são utilizados para autenticar as respostas do servidor RADIUS e também são utilizados no algoritmo de ocultação de senhas.

Requisição de Autenticação: Nos pacotes de requisição de acesso, o valor do campo de Autenticação é um número aleatório chamado de Autenticador de Requisições. É fundamental que este valor numérico não seja previsível, e que seja único durante o período em que está sendo utilizado. Se estas condições não forem atendidas, a repetição de um mesmo valor numérico de autenticação poderia permitir que um atacante respondesse no lugar do usuário legitimo, utilizando uma resposta anteriormente interceptada. Em outro caso, um atacante poderia responder uma predição de uma requisição futura, e usar esta previsibilidade para enganar os usuários e atuar como um servidor falso. Dentro do pacote de Requisição de acesso, é utilizado o algoritmo de ocultação de senhas. Este algoritmo gera um hash do segredo compartilhado concatenado com o Autenticador de requisições. Em seguida, é feito um XOR com a senha do usuário, e este valor é colocado no campo de senha do usuário do pacote. Desta forma, o segredo compartilhado e a senha do usuário não são enviados diretamente pela rede. Assim, somente quem possuir o segredo compartilhado e a senha do usuário poderá realizar a mesma operação e verificar se o resultado é compatível. Neste caso, somente o servidor RADIUS possui estas informações.

Resposta de Autenticação: O valor inserido no campo de Autenticação nos pacotes do tipo Acesso Aceito, Acesso Negado, e Desafio de acesso são chamados de Resposta de Autenticação. Eles contêm um hash MD5 que é calculado através do pacote RADIUS, o campo de código, o identificador, o comprimento, o campo de Autenticação do pacote de requisição de acesso, e os atributos de resposta, seguidos do segredo compartilhado entre o Servidor RADIUS e o NAS. Desta forma, o campo com a Resposta de Autenticação é formado por: MD5(Código+Identificador+Comprimento+Campo de Autenticação do pacote de requisição de acesso+Atributos de Resposta + Segredo Compartilhado), onde o sinal “+” representa a concatenação.

Atributos:
O campo de Atributos é responsável por carregar informações específicas de autenticação e de autorização, como os detalhes específicos de uma dada requisição ou de uma dada resposta. Dentre os tipos de informações contidas, podemos citar o nome do usuário a ser autenticado, o endereço IP do NAS, a porta que será utilizada na conexão, dentre outras.

Estabelecimento de uma sessão RADIUS

O estabelecimento de uma sessão RADIUS ocorre com uma série de trocas de mensagens que objetivam fornecer um determinado serviço de rede para um usuário. Quando um NAS (cliente) é configurado para utilizar o RADIUS, quaisquer usuários que desejem acessar um serviço deste NAS precisam apresentar suas credenciais de autenticação para o NAS, por exemplo, através de uma tela de inicio de sessão, onde o usuário pode inserir o seu nome e a sua senha. Após receber estas informações do usuário, o NAS pode autenticá-lo usando o RADIUS. Para realizar esta autenticação, o NAS, que atua como cliente do servidor RADIUS, envia um pacote do tipo Requisição de Acesso, que contém atributos como o nome do usuário, a sua senha, o seu numero de identificação, dentre outros. As senhas de usuários são ocultadas através da utilização de um método baseado no algoritmo “RSAMessage Digest 5” (MD5).

Possibilidades da requisição de acesso a um serviço

A mensagem de Requisição de acesso é enviada pela rede. Se não houver resposta em um limite de tempo pré- estabelecido, a Requisição de acesso é re- enviada. O cliente ainda pode enviar a Requisição para outros servidores alternativos, no caso de falha na conexão com o servidor primário. Os algoritmos que permitem a troca de servidores são baseados no numero de tentativas de acesso ou em um esquema baseado em round-robin.

Após o recebimento da mensagem de Requisição, o servidor RADIUS tenta validar o cliente. O servidor RADIUS descarta silenciosamente os clientes para os quais ele não possui um segredo compartilhado. Após a autenticação do cliente, o RADIUS consulta um banco de dados de usuários para verificar se o usuário que esta solicitando acesso ao NAS possui as permissões necessárias para ter o acesso garantido.

No caso onde o servidor RADIUS está atuando como um Proxy, ele repassa a Requisição de acesso para o outro servidor RADIUS.

Se alguma das condições não for satisfeita pelo usuário, o RADIUS emite um pacote de Acesso negado, que indica que a requisição feita pelo usuário é invalida. O NAS recebe esta mensagem, e desconecta o usuário, podendo ou não enviar alguma mensagem de aviso. Se o usuário satisfizer a todas as condições, o servidor RADIUS pode, de forma a garantir uma segurança adicional, enviar um pacote do tipo Desafio de acesso. Este desafio pode vir na forma de uma pergunta que somente o usuário sabe, ou vir na forma de um código que somente os usuários com determinados dispositivos como smartcards ou softwares específicos conseguirão responder corretamente, garantindo a identidade do mesmo. A resposta ao Desafio de aceso é outra mensagem do tipo Requisição de acesso, onde o campo com a senha do usuário é preenchida com a resposta do desafio criptografada e uma marcação para indicar que a requisição é uma resposta ao Desafio de Acesso.

Por fim, se todas as condições forem satisfeitas, e se o usuário responder corretamente ao desfio de acesso, o servidor RADIUS envia um pacote do tipo Acesso aceito, que contém informações a respeito do serviço a ser oferecido. Dentre estas informações, podemos citar o tipo de serviço, o IP atribuído ao usuário, parâmetros de configuração, tempo de acesso máximo, o protocolo que vai ser utilizado, etc.

Considerações a respeito da Segurança

A utilização do RADIUS como servidor AAA não é totalmente segura. Esta seção é dedicada a expor alguns dos problemas de segurança encontrados assim como as possíveis maneiras de contorná-los.

Ao utilizarmos o RADIUS, necessariamente precisamos consultar a uma base de dados responsável por associar as identidades dos usuários e suas respectivas informações de autenticação. Uma recomendação a ser seguida na utilização do RADIUS é garantir que cada nome de usuário deve estar associado somente a uma forma de autenticação. Caso sejam necessárias outras formas, diferentes nomes serão associados a cada forma de autenticação. Desta maneira são evitadas formas de ataque que exploram as formas mais fracas de autenticação. De nada adiantaria um usuário estar fortemente protegido de ataques por um método de autenticação, se este mesmo usuário também pudesse ser autenticado, por exemplo, através do Protocolo de Autenticação por Senha, que é pouco seguro.

Além disso, é fundamental que as senhas dos usuários e os segredos compartilhados (shared secrets) estejam armazenados de forma segura, onde o acesso a estas informações seja o mais restrito possível. Idealmente, os segredos compartilhados e as senhas só devem ser acessados pelos processos de autenticação. Como o RADIUS suporta o uso de uma chave de segredo estática entre o servidor AAA e o usuário, seja através da engenharia reversa, ou seja, através do monitoramento do tráfego, o atacante pode descobrir o segredo compartilhado, oferecendo riscos de segurança sérios ao sistema de autenticação. No caso do monitoramento de tráfico, podemos descobrir o segredo compartilhado a partir da resposta de autenticação, que é um hash MD5 calculado na forma MD5(Código+Identificador+Comprimento+Campo de Autenticação do pacote de requisição de acesso+Atributos de Resposta + Segredo Compartilhado), onde o “+” significa concatenação. Desta forma, se um atacante observar uma requisição de acesso e o pacote contendo o pedido de acesso aceito referente a esta requisição, ele pode iniciar um ataque de força bruta para descobrir o segredo compartilhado. A capacidade do atacante de poder prever algumas parcelas da mensagem que gerou o hash permite que este reduza significativamente o custo computacional para descobrir este segredo compartilhado.

Como segurança adicional, é possível se utilizar de túneis IPSEC criptografados para proteger os pacotes RADIUS, ou outros tipos de túneis para proteger os conteúdos sensíveis ou privados.

Conclusão

O RADIUS se apresenta como uma solução eficiente capaz de prover uma forma segura de se autenticar usuários e auditorar o acesso dos recursos providos a estes usuários. Ele pode utilizar diferentes mecanismos de autenticação, e é altamente adaptável. Apesar de todas as suas vantagens, o protocolo é um tanto quanto velho. O aumento constante do número de atributos incluídos em seus pacotes, visando estender o uso do RADIUS aos serviços e tecnologias mais recentes, acaba promovendo um cenário onde a dificuldade de se manter o mesmo protocolo se torna cada vez maior. Neste momento, começa a surgir a necessidade de se utilizar um novo protocolo, o DIAMETER, que é uma evolução do RADIUS. O Seu objetivo é sanar os problemas enfrentados pelo RADIUS, e promover um serviço AAA ainda mais seguro e eficiente.

Fonte: http://www.gta.ufrj.br/grad/08_1/radius/Concluso.html

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

4 Responses to “RADIUS”

  1. Marcelo disse:

    Parabéns pelo artigo!

Deixe um comentário

O seu endereço de e-mail não será publicado.