AAA - Radius

6
AAA Framework - Gerenciamento de Identidade: O AAA é um framework que tem como foco o controle de acesso a recursos e serviços de Rede. Ele possui três funções, e são resumidas em autenticação, autorização e auditoria (ou accounting), dai o nome “AAA”, no inglês “triple A”. Para auxiliar nessas funções de autenticação, autorização e auditoria, o AAA utiliza alguns protocolos de segurança que suportam essas funções. Dois dos mais conhecidos são Radius e Tacacs+. Vou focar alguns (vários) posts relacionados a gerenciamento de identidade, mas todo o conteúdo técnico que eu postar relacionado a esse assunto tem a ver com as três funções do AAA. O conteúdo técnico que eu vou postar é focado em ambiente Cisco. No mercado existem várias ferramentas que podem “Gerenciar identidades”, controlar o acesso a serviços de rede. Mas o foco aqui serão os produtos da Cisco, como o ISE e o ACS. Agora em mais detalhes segue o que cada função do AAA trata: - Autenticação: essa função verifica a identidade de quem está acessando a rede ou algum recurso da rede. Comparando essa função com alguma atividade do dia-a-dia, podemos imaginar essa função como quem pergunta em uma portaria: “Quem é você?”. Essa função verifica a identidade se baseando no que você tem, no que você sabe ou no que você é. O ato de você chegar a uma recepção de um prédio e apresentar o seu RG, por exemplo, é uma forma de autenticação. - Autorização: essa função verifica o que você está autorizado a fazer a partir do momento que você é autenticado e permitido a acessar algum recurso de rede. Ele te concede a autorização a apenas um acesso parcial, um acesso total, ou não autoriza a realizar alguma coisa. Por exemplo, imagine que você foi identificado (autenticado) na recepção do exemplo acima, agora, você recebeu um crachá que pode ser usado para acessar apenas uma sala especifica, por exemplo, área do financeiro. A função de autorização pode ser mais restritiva ou mais permissiva. Isso vai depender das suas politicas de acesso. Você poderia receber um acesso mais permissivo, baseado no seu cargo/função da

Transcript of AAA - Radius

Page 1: AAA - Radius

AAA Framework - Gerenciamento de Identidade:

O AAA é um framework que tem como foco o controle de acesso a recursos e serviços de Rede. Ele possui três funções, e são resumidas em autenticação, autorização e auditoria (ou accounting), dai o nome “AAA”, no inglês “triple A”.

Para auxiliar nessas funções de autenticação, autorização e auditoria, o AAA utiliza alguns protocolos de segurança que suportam essas funções. Dois dos mais conhecidos são Radius e Tacacs+.

Vou focar alguns (vários) posts relacionados a gerenciamento de identidade, mas todo o conteúdo técnico que eu postar relacionado a esse assunto tem a ver com as três funções do AAA.

O conteúdo técnico que eu vou postar é focado em ambiente Cisco.

No mercado existem várias ferramentas que podem “Gerenciar identidades”, controlar o acesso a serviços de rede. Mas o foco aqui serão os produtos da Cisco, como o ISE e o ACS.

Agora em mais detalhes segue o que cada função do AAA trata:

- Autenticação: essa função verifica a identidade de quem está acessando a rede ou algum recurso da rede. Comparando essa função com alguma atividade do dia-a-dia, podemos imaginar essa função como quem pergunta em uma portaria: “Quem é você?”. Essa função verifica a identidade se baseando no que você tem, no que você sabe ou no que você é. O ato de você chegar a uma recepção de um prédio e apresentar o seu RG, por exemplo, é uma forma de autenticação.

- Autorização: essa função verifica o que você está autorizado a fazer a partir do momento que você é autenticado e permitido a acessar algum recurso de rede. Ele te concede a autorização a apenas um acesso parcial, um acesso total, ou não autoriza a realizar alguma coisa. Por exemplo, imagine que você foi identificado (autenticado) na recepção do exemplo acima, agora, você recebeu um crachá que pode ser usado para acessar apenas uma sala especifica, por exemplo, área do financeiro. A função de autorização pode ser mais restritiva ou mais permissiva. Isso vai depender das suas politicas de acesso. Você poderia receber um acesso mais permissivo, baseado no seu cargo/função da empresa, mas novamente, depende das politicas de acesso implementada no ambiente. Imagine um presidente de uma corporação, ele na teoria, pode ter acesso “full” a todo o ambiente da empresa, enquanto um estagiário receberia acesso apenas ao ambiente que o seu superior lhe concede.

- Auditoria (Accounting): Bem, essa função registra o que você fez enquanto esteve autenticado e autorizado. Adaptando a função de auditoria do AAA ao nosso dia-a-dia, e aos nossos exemplos anteriores: você já foi identificado (autenticado) na recepção, teve o acesso permitido apenas ao departamento financeiro (autorizado) e agora a passagem do seu crachá (que provavelmente tem um id) é registrada em um sistema de segurança, gravando o horário de entrada, horário que você acessou os setores que você era permitido e o horário de saída. Esses registros (logs) normalmente são utilizados para auditoria/investigação de algum incidente. Entenda essa função como o serviço responsável por envio de logs de autenticação,

Page 2: AAA - Radius

autorização, atividades e etc. Não irei usar a tradução “ao pé da letra” do termo Accounting, pois não faria muito sentido com o nome do framework (Accounting = Contabilidade), então, usarei o nome “auditoria” quando for me referir a função de “Accounting”.

Protocolos de segurança usados com o AAA:

Bom, agora que foram apresentadas as funções do AAA, vamos falar mais de dois protocolos de segurança que são usados para suportar essas funções. Primeiro falaremos do Radius, depois em outro post, falarei um pouco sobre o Tacacs+.

RADIUS:

Protocolo de padrão aberto, desenvolvido pela Livingston Enterprises. Possui como característica a interoperabilidade com equipamentos de rede de qualquer fabricante. Ele opera em um modelo “Client-Server”, onde o cliente seria, por exemplo, um switch, um router, um firewall, um Wireless-Controller, etc, que comumente é chamado de “NAS” (Network Access Server), que enviam requisições de acesso ao Radius, onde, você pode configurar Perfis de acesso, e aplicar atributos a determinadas sessões de acesso a rede (802.1x, VPN) ou acesso a equipamento para administração.

O Radius usa UDP como protocolo de transmissão e as antigas implementações usam a porta 1645 para autenticação e autorização, e para o serviço de auditoria (accounting) usa-se a porta 1646. Essas portas conflitam com outros serviços, então, para as novas implementações, as portas foram trocadas para 1812 (autenticação/autorização) e 1813 (serviço de auditoria).

O protocolo Radius possui diversos campos em seu cabeçalho. Para detalhes desses campos vou referenciar o link abaixo, onde ele é descrito de forma mais detalhada. O mais importante para os posts posteriores a esse, que envolvem o protocolo Radius, é entender o campo “code” e “attributes”.

Link: https://tools.ietf.org/html/rfc2865

- Code: Esse campo, informa o tipo de mensagem que o NAS está enviando ao Radius-Server. Abaixo os tipos de mensagens:

*1 = Access-Request:

*2 = Access-Accept:

*3 = Access-Reject:

*4 = Accounting-Request:

*5 = Accounting-Response:

*11 = Access-Chalenge:

- Attributes: Esse campo contém a lista dos AVPairs, (valores que devem ser aplicados a uma determinada sessão) . O Radius suporta 255 atributos, onde a maioria já é pré-definido. As

Page 3: AAA - Radius

mensagens “Access-Request”, “Access-Accept”, “Access-Reject” e “Access-Challenge”, podem possuir atributos.

Um exemplo de atributo preenchido que pode ser encontrado em um “Access-Request” é o atributo “User-Name”, o valor encontrado nesse atributo é pesquisado no banco de dados de usuário.

Em uma mensagem do tipo “Access-Accept” (Outbound), podemos encontrar atributos como o “Framed-IP-Address” que pode incluir um ip que deve ser fornecido ao usuário (para aquela sessão), após ser autenticado.

Abaixo, uma captura de um pacote Radius, entregando em uma mensagem de “Access-Accept” o tipo de serviço que essa sessão específica pode suportar. Para esse exemplo, o “t=Service-Type(6):” possibilita o “serviço” de acesso a um host (Login).

Obs.: Pacotes Radius de Auditoria (accounting) também usam atributos.

Além dos atributos padronizados, um pacote Radius pode suportar o envio de valores específicos, reconhecidos apenas em plataformas de um determinado fabricante. Nesses casos, no pacote Radius o atributo 26 é “setado”. Esse atributo se chama Vendor-Specific-Attribute (VSA), e dentro dele existem os valores que devem ser entregues para uma determinada sessão e que é reconhecido apenas por equipamento daquele fabricante.

Dentro desse atributo existe um campo e um ID que identifica o fabricante. No caso da Cisco, Vendor-ID 9, Vendor Type 1:

Formato dos atributos Cisco:

Protocol:atribute sep value

Obs.: “sep” define se os atributos são obrigatórios (=) ou opcionais (*).

Por exemplo:

Para uma conexão remota de administração de dispositivo, o Radius Server pode entregar os atributos no seguinte formato:

shell:priv-lvl=15

Abaixo um exemplo de captura de um pacote Radius com o Atributo 26 (suporte a VSA) através do Wireshark:

Page 4: AAA - Radius

- Primeira Linha: o campo Attribute Value Pairs é expandido;

- Segunda linha : “l = 25 ” campo referente ao tamanho do atributo / “t=Vendor-Specific(26)” informa que o tipo de atributo é especifico de um fabricante / “v=Cisco(9)”, informa que o vendor é Cisco e o ID para esse vendor é 9;

- Terceira linha: “VSA: l=19” campo referente ao tamanho do atributo / t= Cisco-AVPair(1): esse campo informa o Vendor Code, no caso (1) / shell:priv-lvl=15 esse campo informa o valor do atributo que será entregue ao NAS para a sessão remota.

Supondo que o NAS seja um roteador/switch Cisco, o nível de privilégio para esse user será 15. Ou seja, nível máximo.

- Quarta Linha: “Cisco-AVPair: shell:priv-lvl=15”, o atributo + o valor.

Autenticação e Autorização na mesma sessão:

Umas das características do Radius é que ele realiza a autenticação e a autorização em um mesmo processo. No caso do usuário ser encontrado no banco de dados de usuário e sua senha for válida, o Radius envia em uma mensagem Access-Accept com uma lista de AVPairs que devem ser usados para essa sessão que foi autenticada. Por exemplo, é possível você enviar um vlan ID a um usuário que está tentando acessar a rede, reforçando a politica de acesso.

O Radius não suporta a entrega de comandos para uma sessão de administração de device de rede como é feito pelo Tacacs+.

Segurança:

Quanto à segurança do protocolo, o Radius realiza a criptografia do seu pacote apenas da senha do usuário. Qualquer outro campo é enviado ao Radius Server em texto claro, inclusive username.

Auditoria (Accounting):

Bom, agora, veremos como o Radius realiza a função de Auditoria (Accounting). Como já dito antes, essa função deve registrar as atividades de uma sessão autenticada e autorizada. O Radius realiza isso no inicio (start) e no fim (stop) de uma sessão. As informações “registradas” normalmente são bytes, horário, pacotes, etc.

Conforme dito antes, a porta 1813 é usada para realizar essa função de Accounting.

Por enquanto não vou abordar linhas de comando, farei isso quando escrever um post usando o ACS.

Page 5: AAA - Radius

O próximo post irei abordar o protocolo Tacacs+.