MoniOptimiza: Uma Ferramenta para Monitoramento e Otimização de Federações de Identidades Ricardo Macedo1 , Leonardo Melniski1 , Eduardo Feitosa2 , Aldri Santos1 , Michele Nogueira1 1 2 Universidade Federal do Paraná (UFPR) – Curitiba – PR – Brasil Universidade Federal do Amazonas (UFAM) – Manaus – AM – Brasil {rmacedo,lem09,aldri,michele}@inf.ufpr.br, [email protected] Abstract. Identity federation model is a promising solution to manage users in large scale systems. However, denial-of-service attacks can make IdPs operations unavailable, compromising legitimate users from the federation. This paper proposes MoniOptimiza, a monitoring and optimization tool to mitigate the overloads effects in identity providers. MoniOptimiza detects under and overloaded identity providers and optimizes the system forming clusters with the underloaded identity providers balancing the load in order to mitigate the effects of overloads. Experimental evaluation conducted under a local identity federation show that MoniOptimiza reduces the response time of requests clustering identity providers in overloaded situations. Resumo. O modelo de gestão de identidades federadas consiste em uma alternativa promissora para administrar usuários em sistemas de larga escala. No entanto, os ataques de negação de serviço podem indisponibilizar as operações prestadas pelos provedores de identidades (IdPs), prejudicando usuários legítimos da federação. Este trabalho propõe MoniOptimiza, uma ferramenta de monitoramento e otimização para mitigar os efeitos de sobrecargas em IdPs. MoniOptimiza detecta IdPs sobrecarregados e ociosos e otimiza o sistema formando clusters com os IdPs ociosos e distribuíndo a carga entre os mesmos para diminuir os efeitos das sobrecargas. Uma avaliação experimental conduzida em uma federação local mostra que a ferramenta MoniOptimiza reduz o tempo de resposta das requisições ao formar agrupamentos de IdPs em situações de sobrecarga. 1. Introdução Estima-se uma explosão no número de dispositivos conectados à Internet resultando em um crescimento ainda maior no número de identidades. A Cisco Systems prevê que o número de dispositivos portáteis conectados excederá o número de pessoas no planeta nos próximos anos e que em 2018 existirão em média 1,4 dispositivos móveis por pessoa. Uma das consequências desta explosão consiste na demanda de pelo menos uma identidade (ID) para cada dispositivo, sendo esta a representação digital de uma entidade real, tal como uma pessoa ou dispositivo [Torres et al. 2013]. As IDs desempenham um papel fundamental nesse cenário ao possibilitar a aplicação de medidas de gerenciamento na prestação de serviços disponibilizados em sistemas distribuídos, tais como nuvens computacionais ou Internet das coisas [Macedo et al. 2014]. Diante deste contexto de crescimento exponencial do número de IDs, as federações de identidades são uma estratégia promissora para administrar um grande número de IDs. Sendo um ambiente cooperativo, uma federação é formada pela integração de diversos domínios governados por autoridades distribuídas, onde cada domínio possui gerenciamento local. Além das IDs, os principais componentes de uma federação consistem nos provedores de identidades (Identity Provider - IdP) e o provedores de serviço (Service Provider - SP). Os SPs são responsáveis por disponibilizar serviços específicos para os usuários de forma controlada a partir das IDs [Nogueira et al. 2011]. Os IdPs consistem nas autoridades distribuídas que administram IDs de seu respectivo domínio através de um conjunto de operações, onde se destacam, a verificação da autenticidade das IDs (autenticação) e a disponibilização de informações sobre as IDs para suportar o controle de autorizações (controle baseado em atributos). No entanto, IdPs são disponibilizados na Internet, tornando-se propensos a ataques de negação de serviço distribuídos (DDoS, do inglês Distributed Denial of Service) [Lonea et al. 2013]. Os IdPs possuem recursos de processamento e memória limitados, podendo ser esgotados frente a uma grande quantidade de requisições. Os ataques DDoS têm como objetivo indisponibilizar as operações de um sistema ao disparar um grande volume de requisições maliciosas, forçando o sistema vítima a consumir todos os recursos de memória e processamento [Carlson 2014]. Casos reais de DDoS foram relatados mesmo em nuvens computacionais [Lonea et al. 2013, Shah et al. 2013], enfatizando a periculosidade dos mesmos. Em federações de identidades, os ataques DDoS podem resultar na indisponibilidade das operações de autenticação de usuários legítimos e congestionar o tráfego de dados para IdPs, impactando indiretamente no provimento de serviços. Neste contexto, as abordagens de mitigação tornam-se promissoras para minimizar os efeitos desses ataques [Fu et al. 2012]. Este trabalho apresenta MoniOptimiza, uma ferramenta de monitoramento e otimização para mitigar os efeitos de sobrecargas em IdPs. A ferramenta executa sequencialmente três módulos: Monitoramento, Otimização e Agrupamento. O módulo de Monitoramento detecta IdPs sobrecarregados na federação pela verificação da taxa de utilização de memória e processamento. O módulo de Otimização identifica o menor grupo de IdPs ociosos para mitigar os efeitos da sobrecarga com base nos dados de monitoramento. O módulo de Agrupamento aplica a configuração indicada pelo módulo anterior para agrupar os IdPs. A avaliação de desempenho por experimentação em uma federação local mostra os benefícios da ferramenta MoniOptimiza. O cenário de avaliação consite de três IdPs, dois SPs e um serviço de descobrimento. A ferramenta Apache Benchmark foi empregada para geração de sobrecarga nos IdPs, de modo a ativar a ferramenta proposta. As métricas empregadas na avaliação são a Taxa de Utilização de CPU (TUC) e o Número de Requisições Atendidas por milissegundo (NRA). Os resultados comparando um cenário onde os IdPs utilizam o MoniOptimiza com um cenário sem o uso da ferramenta mostram uma diminuição da TUC do IdP sobrecarregado e reduzem o tempo de resposta das requisições. O trabalho está organizado como segue. A Seção 2 descreve os trabalhos relacionados. A Seção 3 detalha a ferramenta proposta. A Seção 4 descreve a análise de desempenho da proposta. A Seção 5 apresenta as conclusões. 2. Trabalhos Relacionados A ferramenta Monit [M/Monit 2015] monitora recursos gerais do sistema operacional, processos, daemons específicos e características destes processos, tais como a quantidade de memória e ciclos de CPU. A Universidade Católica de Leuven disponibiliza um guia de utilização desta ferramenta para monitoramento de IdPs do arcabouço Shibboleth [Leuven 2015]. Na Monit, cada recurso monitorado é representado como uma variável, podendo ser disparados scripts em resposta a determinados eventos. Todavia, não foram encontradas extensões para a Monit específicas para federações de identidades capazes de reagir ou diminuir os efeitos identificados no monitoramento. A versão 3 do arcabouço para gerenciamento de identidades Shibboleth disponibiliza a funcionalidade de agrupamento de IdPs. Esta funcionalidade é disponibilizada como um plugin do arcabouço denominado IdP-Memcached. Para utilização deste plugin os agrupamentos devem ser manualmente configurados e cada membro do agrupamento deve ter a mesma base de dados de usuários. No uso convencional desta abordagem, utiliza-se um portal de autenticação capaz de realizar o balanceamento de carga entre as réplicas, redirecionando as requisições para as réplicas de IdPs menos sobrecarregadas. No entanto, esta é uma abordagem financeiramente cara, pois exige a aquisição de equipamentos extras, os quais também terão uma capacidade de recursos fisicamente delimitada. Em [Macedo et al. 2015a, Macedo et al. 2015b], o esquema SAMOS foi proposto para mitigação os efeitos de sobrecargas em federações de identidades através da reorganização de IdPs. O esquema é composto por três procedimentos: Pré-reorganização, Otimização e Utilização. A Pré-reorganização computa os benefícios possíveis de reorganizar os IdPs. A Otimização maximiza os benefícios computados para encontrar uma solução para a reorganização. A Utilização emprega a solução encontrada na federação. O principal benefício do esquema SAMOS é minimizar os danos das sobrecargas utilizando os IdPs operacionais e ociosos da federação. Entretanto, apenas resultados de simulações baseadas em traços foram apresentados até o momento. Este trabalho apresenta a ferramenta MoniOptimiza, uma ferramenta para monitorar e otimizar federações de identidades. A MoniOptimiza é projetada para atuar em resposta a variáveis monitoradas pela ferramenta Monit. Além disso, esta ferramenta emprega os procedimentos do esquema SAMOS para mitigar os efeitos das sobrecargas e estende as funcionalidades do plugin IdP Memcached StorageService para formar agrupamentos de IdPs capazes de suprir a sobrecargas em IdPs no arcabouço Shibboleth, implementando os conceitos apresentados por [Macedo et al. 2015a] em um arcabouço real para gerenciamento de identidades. 3. Uma ferramenta para Monitoramento e Otimização de Federações Este trabalho apresenta MoniOptimiza, uma ferramenta de monitoramento e otimização dos IdPs de uma federação de identidades para mitigar os efeitos de sobrecargas ocasionadas por ataques DDoS. A ferramenta foi projetada para executar sequencialmente três módulos: Monitoramento, Otimização e Agrupamento. O Monitoramento encontra IdPs sobrecarregados na federação através da verificação da taxa de utilização dos recursos de memória e processamento. A Otimização identifica o menor grupo de IdPs ociosos para suprir os efeitos da sobrecarga usando os dados de monitoramento. O Agrupamento aplica a solução encontrada pelo módulo anterior, configurando de maneira transparente as ferramentas tradicionais utilizadas para agrupar IdPs. A Figura 1 ilustra a arquitetura da ferramenta MoniOptimiza. Agrupamento Otimização Monitoramento Processamento/ Memória Compartilhamento de memória Coleta Dados de Monitoramento Balanceamento de carga Identifica Agrupamentos Parâmetros de Funcionamento • Lista de IdPs da federação • Limite para utilização de recursos • Parâmetros usados na otimização Arquivo de Configuração Figura 1. Arquitetura da Ferramenta MoniOptimiza Conforme ilustrado na Figura 1, a MoniOptimiza foi projetada como um arcabouço que combina em seus módulos as funcionalidades de ferramentas consolidadas para gestão/monitoramento de federações de identidades com técnicas de otimização previamente discutidas de maneira teórica na literatura. O módulo de Monitoramento emprega os procedimentos da ferramenta Monit. O módulo de Agrupamento usa as funcionalidades do servidor Web Apache e do arcabouço Shibboleth para balancear a carga e compartilhar os dados de memória entre os IdPs membros do mesmo grupo. O módulo de otimização emprega o algoritmo genético proposto em [Macedo et al. 2015b] como um método heurístico para identificar os agrupamentos de IdPs usando os dados de monitoramento coletados da federação. As seções seguintes detalham o funcionamento de cada módulo. 3.1. Monitoramento e Coleta de Dados A ferramenta MoniOptimiza foi projetada para ser instalada e configurada em todos os IdPs de uma federação de identidades, proporcionando o monitoramento/gestão automáticos em caso de sobrecargas geradas por ataque de negação de serviço. A Figura 2 ilustra a relação entre o módulo de Monitoramento e o componente Coleta de Dados do módulo de Otimização frente uma situação de sobrecarga gerada por um ataque DDoS. No instante 1, o atacante realiza o ataque DDoS. Estudos prévios mostram que ao disparar um grande volume de requisições maliciosas, os ataques DDoS forçam o sistema vítima a consumir todos os recursos de memória e processamento, gerando indisponibilidades nas operações prestadas por este sistema [Carlson 2014]. Nestas situações, o módulo de Monitoramento identifica uma sobrecarga de processamento/memória no IdP alvo do ataque. Para isso, o módulo observa o limite de utilização dos recursos de memória e processamento previamente estabelecidos pelo administrador no arquivo de configuração da ferramenta. Em consequência deste evento o módulo de Otimização demanda a coleta de dados dos demais IdPs da federação para identificar uma solução de agrupamento. A Monit é uma ferramenta de código fonte aberto, mas a funcionalidade de compartilhamento de dados de monitoramento exige a aquisição de uma licença de uso. No instante 2 o IdP alvo do ataque requisita os dados de monitoramento para os demais IdPs 1. Ataque DDoS 4. Dados de Monitoramento Atacante 3. Resposta de dados de monitoramento 2. Requisição de dados de monitoramento CPU Identifica Agrupamentos Serviço Web Monitoramento Memória IdP1 IdPn IdP2 Figura 2. Procedimentos da Coleta de Informações da federação. A resposta desta requisição ocorre no instante 3. A fim de utilizar os benefícios da Monit, minimizando os investimentos em licença de software, a ferramenta MoniOptimiza implementa a coleta dados de monitoramento como um serviço Web, agregando uma harmonia com as tecnologias que suportam o funcionamento do IdP. O principal pré-requisito para implantação de um serviço Web consiste em servidor Web para armazená-lo, sendo este um dos pré-requisitos para utilização de um IdP. Desta forma, ao utilizar a tecnologia de serviços Web, não se torna necessária a configuração de regras de firewall no IdP, facilitando a utilização da ferramenta MoniOptimiza. A troca dos dados de monitoramento identificado como em situação de sobrecarga e os demais IdPs ocorre no instante 3. O serviço Web possui acesso de leitura no arquivo de configuração da ferramenta MoniOptimiza para se comunicar com todos os IdPs da federação. Frente a situações de sobrecargas, o IdP sobrecarregado demanda aos demais IdPs a taxa de utilização dos recursos de memória e processamento. Para isso, uma requisição usando o protocolo Simple Object Access Protocol (SOAP) é enviada para cada serviço web dos IdPs membros da federação. O serviço web verifica a taxa de processamento e memória ociosos e retorna estes dados para o IdP requisitante. No instante 4, os dados de monitoramento coletados são utilizados pelo componente Identifica Agrupamento do módulo de Otimização. 3.2. Identificação e Formação de Agrupamentos A relação entre o componente Identifica Agrupamento do módulo de Otimização e o módulo Agrupamento é apresentada na Figura 3, ilustrando que o primeiro encontra uma solução para suprir o efeito da sobrecarga e o segundo aplica essa configuração na federação de identidades. O componente Identifica Agrupamento do módulo de Otimização busca o número máximo de agrupamentos capazes de suportar a sobrecarga gerada pelo ataque DDoS (Instante 1 da Figura 3). A solução mais trivial para este problema consiste em formar um único agrupamento com todos os IdPs. Esta alternativa é recomendável quando os membros de um agrupamento estão conectados por uma rede local de alta velocidade, todavia, quando os membros do agrupamento estão geograficamente distribuídos e se comunicam através da Internet, a criação de sub-agrupamentos com poucos nós facilita o gerenciamento da comunicação entre os membros [Aron et al. 2000]. Encontrar o número máximo de agrupamentos capazes de suportar uma sobrecarga consiste em um problema de otimização multiobjetivo: minimizar o número de membros de um agrupamento e maximizar o número total de agrupamentos. Problemas desta natureza são normalmente difíceis de resolver computacionalmente, pois ne- cessitam comparar todas as combinações possíveis para encontrar uma solução ótima e frente a um grande número de elementos pode consumir um tempo de execução não polinomial. Os algoritmos genéticos (AGs) surgem como uma solução heurística capaz de prover boas soluções para problemas de otimização em tempo aceitável ao imitar o processo de seleção natural [Goldberg 1989]. Os experimentos conduzidos por Handl e Knowles revelam benefícios ao utilizar a computação evolucionária para encontrar agrupamentos considerando multiobjetivos [Handl and Knowles 2007]. Seguindo esta linha de pesquisa, o componente Identifica Agrupamento utiliza o algoritmo genético proposto em [Macedo et al. 2015b], apresentado no Algoritmo 1. 1. Entrada: Dados de monitoramento 2. Saída: Solução de agrupamento Algoritmo Genético Identifica Agrupamentos 3. Exemplo de agrupamento Usuários Requisições Alvo da sobrecarga Agrupamentos IdP1 Balanceamento de Carga/ Compartilhamento de Memória IdP2 IdP3 ... IdPn Figura 3. Procedimentos para Agrupamento A entrada para este algoritmo consiste em dados de monitoramento coletados dos IdPs e parâmetros definidos pelos usuários. Cada elemento do vetor v agrega a capacidade disponível dos IdPs operacionais e capacity expressa o dano causado pelo ataque DDoS. O tamanho da população (TP) e número da geração (NG) são parâmetros definidos que ajudam o algoritmo na busca de uma solução, impactando no tempo de execução. A saída do AG consiste em um conjunto de agrupamentos de IdPs capazes de suprir os efeitos do ataque DDoS representado através de um conjunto de subconjuntos. Algoritmo 1 Encontra o número máximo de Agrupamentos de IdPs Entrada: Vetor v, capacidade, T P S, N G Saída: Matriz P (1) 1: Seja P (g) a população de soluções na geração g 2: g ← 0 3: inicie P (g) 4: avalie P (g) 5: classifique P (g) pela função de aptidão 6: enquanto solução não encontrada and N G < maxGen faça 7: g ←g+1 8: mantenha P (1) 9: realize operadores genéticos em P (g) 10: avalie P (g) 11: classifique P (g) pela função de aptidão 12: fim enquanto Na linha 3, inicie P (g) gera soluções aleatórias seguindo como restrição a não repetição de elementos em um mesmo agrupamento, ajudando o algoritmo a convergir mais rapidamente para uma solução ótima. A Figura 4 ilustra uma instância simples do problema, uma possível solução e a representação desta solução através de um cromossomo binário. A instância do problema representa uma situação com cinco IdPs com suas respectivas capacidades (1, 1, 2, 3, 2) através do vetor v. Considerando os índices de v, uma solução ótima para este problema é combinar (0, 2)(1, 4)(3), pois as somas dos elementos destes índices é igual a 3 e todos os elementos de v estão representados em S. Figura 4. Instância do Problema, Solução e Representação do Cromossomo Nas linhas 4 e 10, as soluções são avaliadas através da função de aptidão f (x) = cr1(x) + cr2(x) + cr3(x), onde cr1 avalia a eficiência dos agrupamentos encontrados na solução x suportarem os efeitos do ataque. cr2 verifica se os agrupamentos podem ser fragmentados, favorecendo a criação de um número máximo de soluções e cr3 promove soluções com o maior número de agrupamentos capazes de suportar os efeitos do ataque DDoS. O resultado desta função consiste em um valor para classificar as soluções, possibilitando o descarte das soluções menos aptas (linhas 5 e 11). O AG evita que a melhor solução encontrada se perca através das gerações. Para isto, o indivíduo mais apto da geração anterior é mantido na primeira posição da nova geração (ver linha 8), esta técnica é referenciada na literatura de AG como elitismo. Uma matriz de incidência representa as soluções através de cromossomos binários, possibilitando a execução de operadores genéticos (linha 9). Esta matriz tem o número de colunas igual ao tamanho do vetor v e o número de linhas igual ao tamanho do vetor de uma solução. Cada linha representa um agrupamento de IdPs, quando o elemento está presente no agrupamento, a coluna equivalente ao índice da sua posição é igual a 1, caso contrário 0. A representação da solução através de cromossomos possibilita a execução das operações genéticas de cruzamento e mutação, possibilitando o processo evolutivo das soluções. Para realizar o cruzamento três soluções aleatórias da população são escolhidas para realização de um torneio. O resultado deste torneio consiste na classificação das duas soluções com maior valor da função de aptidão, as quais são selecionadas para a operação de reprodução. A Figura 5 ilustra a operação de cruzamento. Primeiro, um valor aleatório entre 0 e o número de IdPs é selecionado através de uma taxa de cruzamento. Este número é usado para selecionar partes dos cromossomos das soluções pais, gerando duas cabeças e duas caldas. Onde, Filho 1, consiste na combinação da cabeça de Pai 1 e calda de Pai 2 e Filho 2 é o resultado da combinação inversa. Após o cruzamento, a taxa de mutação é observada para decidir se as soluções filhas sofrerão mutações, o que garante a geração de novas soluções. Quando uma solução sofre uma mutação, dois IdPs de diferentes agrupamentos são trocados, gerando uma nova solução. Duas são as condições de parada do AG, quando o processo evolutivo encontra uma solução ótima, ou o número máximo de gerações é alcançado. A situação ideal consiste quando o AG encontra uma solução ótima, mas quando esta não for encontrada ou Figura 5. Exemplo da Operação de Cruzamento não existir, a solução classificada com o maior valor em sua função de aptidão é retornada (instante 2 da Figura 3). Usando essa solução, o módulo Agrupamento usa as funcionalidades do servidor Web Apache e do arcabouço Shibboleth para balancear a carga e compartilhar os dados de memória entre os IdPs membros do mesmo grupo, formando um agrupamento semelhante ao ilustrado no instante 3 da Figura 3, permitindo que o IdP alvo da sobrecarga reencaminhe as requisições de entrada para os demais membros do agrupamento, minimizando os efeitos da sobrecarga. 4. Análise de Desempenho Esta seção apresenta a análise experimental da ferramenta MoniOptimiza sobre a capacidade em prover melhor resiliência dos IdPs, utilizando os recursos de hardware da federação de forma otimizada em situações de sobrecarga. A Seção 4.2 descreve os parâmetros do sistema e da carga. A Seção 4.3 detalha como os experimentos foram executados. Na Seção 4.4 são apresentados os resultados da análise. 4.1. Métricas Utilizadas As métricas utilizadas na análise de desempenho foram a Taxa de Utilização de CPU (TUC) e o Número de Requisições Atendidas por milissegundo (NRA). A taxa de utilização de CPU possibilita a análise da utilização do processamento dos IdPs da federação. O número de requisições atendidas por milissegundo reflete a perspectiva dos usuários frente a utilização da ferramenta proposta. A taxa de utilização de CPU mensura demanda da utilização da CPU para processar instruções de processos existentes em um sistema operacional. O comando top do Sistema Operacional GNU/Linux foi configurado para capturar e armazenar as informações de processamento dos IdPs, permitindo a análise desta métrica [Zahda 2015]. O número de requisições atendidas por milissegundo foi obtida em nosso ambiente através da ferramenta Apache Benchmark1 . 4.2. Parâmetros do Ambiente e da Carga A avaliação de desempenho foi conduzida em uma federação de identidades composta por três IdPs, dois SPs e um Embedded Discovery Service (EDS). O ambiente local foi construído usando as máquinas virtuais disponibilizadas pelo Laboratório de Gestão de Identidades (GId Lab) da RNP. Foram utilizados IdPs da versão 3 equipados com a ferramenta MoniOptimiza. A federação foi configurada de modo a permitir que ao acessar um SP, o EDS apresentasse como opção de autenticação qualquer um dos três IdPs. A federação contou com três servidores para armazenar as máquinas virtuais disponibilizadas. Uma infraestrutura de rede local cabeada foi utilizada para prover a comunicação entre os servidores. Cada servidor possuía a mesma configuração de hardware, 1 http://httpd.apache.org/docs/2.2/programs/ab.html conforme apresenta a Tabela 1(a). Duas máquinas virtuais foram alocadas para servidor, dois deles com um IdP e um SP e um terceiro com um EDS e um IdP. Foi escolhido um número maior de IdPs para o ambiente de modo a proporcionar condições mais favoráveis para avaliação da ferramenta MoniOptimiza. A Tabela 1(b) ilustra a alocação de máquinas virtuais, servidores e componentes da federação. (a) Configuração dos Servidores Parâmetro Valor CPU Intel Core i5 (b) Alocação dos Servidores Servidor Máquina Virtual Serviço VM 1 IdP Servidor 1 Memória 4 GB VM 2 SP Sistema Operacional Ubuntu 14.04 VM 1 IdP VM 2 SP Servidor 2 VM 1 IdP VM 2 EDS Máquina Física Geração de carga Servidor 3 Servidor 4 Tabela 1. Parâmetros do Ambiente Computational Um quarto servidor foi utilizado para geração de sobrecarga de requisições em IdPs. Neste servidor foi configurada a ferramenta Apache Benchmark. Esta ferramenta consiste em uma alternativa para quantificar o número de requisições que um servidor Web é capaz de atender. Em nosso experimento esta ferramenta foi configurada para gerar requisições para o serviço de provimento de informações de status do IdP, causando uma sobrecarga de processamento para ativar a ferramenta MoniOptimiza. Os parâmetros configurados para geração de sobrecarga são apresentados na Tabela 2(a). (b) MoniOptimiza (a) Apache Benchmark Parâmetro Valor Parâmetro Valor Número Total de Requisições 250000 Taxa de Cruzamento 0.9 Número de Requisições Múltiplas 50 Taxa de Mutação 0.01 Tempo Máximo de Sobrecarga 300 segundos Capacidade 20000 Endereço https://idp2v3.fedexpresso.edu.br/idp/status Número de Gerações 100 Tamanho da População 300 Tabela 2. Parâmetros das Ferramentas 4.3. Execução dos Experimentos Para avaliar a capacidade da ferramenta MoniOptimiza em minimizar os efeitos das sobrecargas em IdPs foram criados dois cenários. O primeiro cenário foi projetado para analisar o comportamento da sobrecarga de um IdP sem a utilização da ferramenta proposta e o segundo para apresentar os benefícios da utilização da ferramenta proposta. Em ambos os cenários a ferramenta Apache Benchmark foi configurada com os parâmetros da Tabela 2(a) e no segundo cenário a ferramenta MoniOptimiza foi configurada com os parâmetros apresentados na Tabela 2(b). Os valores adotados para a taxa de cruzamento (TC) e taxa de mutação (TM) são recomendados pela literatura de algoritmos genéticos. O Número de Gerações (NG) utilizado foi 100 e o Tamanho da População (TP) empregado foi 300. A capacidade utilizada foi 20000, para induz o algoritmo genético a gerar um único agrupamento no cenário de avaliação. Os parâmetros configurados na ferramenta Apache Benchmark foram escolhidos para gerar uma quantidade significativa de requisições. A configuração padrão da ferramenta Monit foi alterada para identificar a sobrecarga dos processos do usuário. Por padrão a ferramenta Monit monitora os processos internos executados pelo kernel do sistema operacional. Uma sobrecarga de requisições em um IdP afeta os processos iniciados pelos usuários do sistema, tal como o servidor Web Tomcat ou Apache. Para ativar a ferramenta proposta em resposta a sobrecarga de processos executados pelos usuários, o arquivo monitrc foi configurado para monitorar a variável cpu usage (user). O percentual de utilização de CPU usado para inicializar a ferramenta MoniOptimiza foi 50%, evitando que uma sobrecarga acarretasse na falha do IdP alvo da sobrecarga. Essa configuração permitiu o monitoramento da utilização de CPU mais condizente com as necessidades do IdP. Para balancear a carga entre os IdPs utilizamos o módulo mod_proxy_balancer do servidor Web Apache. Escolhemos essa ferramenta, pois as máquinas virtuais configuradas com a versão 3 do Shibboleth disponibilizadas pelo GID Lab são nativamente configuradas com servidor Apache, de forma que nosso trabalho foi apenas agregar esse módulo. O método escolhido para o balanceamento de carga foi o byrequest, com opção status+H para o IdP sobrecarregado e com a configuração loadfactor=10 habilitada para os IDPs que são utilizados para balancear a carga. Essa configuração permite que o IdP sobrecarregado processe as requisições apenas quando os demais membros do agrupamento estejam indisponíveis. O compartilhamento de memória entre os membros do agrupamento foi realizado através da configuração do plugin IdP Memcached StorageService para evitar reautenticações inesperadas em caso de falha de um membro do agrupamento. Na versão 3 do IdP Shibboleth, quando um cliente se autentica em um IdP, são armazenados dados de sessão de login do cliente no navegador e esses dados são instanciados na memória do servidor IdP. Estas informações armazenadas em memória servem para validar os dados armazenados no navegador do usuário. Quando uma sessão expira, o IdP solicita uma nova autenticação. Para evitar que os dados de sessão armazenados em memória de IdP se percam em caso de falha ou sobrecarga, a versão 3 do IdP compartilha esses dados entre todos os membros do agrupamento. 4.4. Resultados Esta seção apresenta os resultados da análise de desempenho. A Figura 6 apresenta os resultados obtidos da comparação da métrica NRA, onde observa-se que a ferramenta MoniOptimiza reduziu o NRA do IdP sobrecarregado. Os resultados do primeiro cenário mostram que antes da implantação da ferramenta proposta, o NRA aumentou proporcionalmente ao número de requisições geradas pela ferramenta Apache Benchmark. Com a utilização da ferramenta MoniOptimiza o NRA aumentou até consumir 50% de CPU, após esse limite a ferramenta proposta foi iniciada, diminuindo o NRA. Esse resultado mostra que no cenário avaliado, a ferramenta proposta melhorou o tempo de resposta do IdP, o que poderia impactar na experiência/satisfação dos usuários e serviços da federação. A Figura 7 mostra que a MoniOptimiza processou um número maior de requisições no mesmo intervalo de tempo que a abordagem da literatura, mas teve um grande número Total de Requisições Tempo de Resposta (ms) 30000 3000 Abordagem Existente Abordagem Proposta 2500 2000 1500 1000 500 0 0 5000 10000 15000 20000 25000 Requisições Processadas Requisições Falhas 25000 25177 21781 20000 15000 12908 10000 5000 0 5 Abordagem Existente Abordagem Proposta Requisições Figura 6. Tempo das Requisições Figura 7. Número de Requisições Figura 8. Abordagem Existente Figura 9. Abordagem Proposta de requisições falhas em decorrência da reinicialização do servidor Web para implantar o balanceamento de carga. As Figuras 8 e 9 mostram que a ferramenta MoniOptimiza minimiza os efeitos de sobrecargas empregando os recursos de hardware existentes na federação de maneira mais eficiente. A Figura 8 mostra que as requisições geradas pela ferramenta Apache Benchmark consumiram aproximadamente 90% do processamento, enquanto os outros dois IdPs possuíam processamento ocioso. A Figura 9 mostra que o emprego da ferramenta proposta utilizou os IdPs ociosos para balancear a sobrecarga, diminuindo levemente a sobrecarga do IdP alvo. Esse resultado mostra que a utilização da ferramenta proposta é capaz de diminuir os efeitos negativos da sobrecarga usando recursos de hardware existentes na federação, podendo servir como uma alternativa em momentos onde as estratégias criadas pelos administradores dos domínios locais forem insuficientes. 5. Conclusão Este trabalho apresentou MoniOptimiza, uma ferramenta de monitoramento e otimização dos provedores de identidades para mitigar os efeitos de sobrecargas ocasionadas por ataques DDoS. A ferramenta foi avaliada experimentalmente conduzida em uma federação local. Os resultados mostram que a ferramenta proposta diminui o número de requisições atendidas de um IdP sobrecarregado e emprega de maneira mais eficiente o hardware da federação para diminuir os efeitos da sobrecarga. Em trabalhos futuros a ferramenta será investigada de forma a incluir maneiras de reduzir o número de requisições falhas e será conduzida uma avaliação no GID Lab da RNP, com um número maior de IdPs geograficamente distribuídos. Referências Aron, M., Druschel, P., and Zwaenepoel, W. (2000). Cluster reserves: A mechanism for resource management in cluster-based network servers. In Proceedings of the 2000 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems, pages 90–101, New York, NY, USA. ACM. Carlson, F. R. (2014). Security analysis of cloud computing. CoRR, abs/1404.6849. Fu, Z., Papatriantafilou, M., and Tsigas, P. (2012). Mitigating distributed denial of service attacks in multiparty applications in the presence of clock drifts. IEEE Transactions on Dependable and Secure Computing, 9(3):401–413. Goldberg, D. E. (1989). Genetic Algorithms in Search, Optimization and Machine Learning. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1st edition. Handl, J. and Knowles, J. (2007). An evolutionary approach to multiobjective clustering. Evolutionary Computation, IEEE Transactions on, 11(1):56–76. Leuven (2015). Guide: Local monitoring of a shibboleth identity provider. https://shib.kuleuven.be/docs/idp/2.x/install-idp-2. 1-rhel-monitoring.html. Último Acesso: Junho de 2015. Lonea, A., Tianfield, H., and Popescu, D. (2013). Identity management for cloud computing. In Balas, V. E., Fodor, J., and Várkonyi-Kóczy, A. R., editors, New Concepts and Applications in Soft Computing, volume 417 of Studies in Computational Intelligence, pages 175–199. Springer Berlin Heidelberg. Macedo, R. T., Ghamri-Doudane, Y., and Nogueira, M. (2015a). Mitigating dos attacks in identity management systems through reorganizations. Latin American Network Operations and Management Symposium. Macedo, R. T., Melniski, L., Santos, A., Ghamri-Doudane, Y., and Nogueira, M. (2015b). Mitigando ataques ddos por reorganizações em agrupamentos de idp. Anais Simpósio Brasileiro de Segurança da Informação e de Sistemas Computacionais. Macedo, R. T., Santos, A. L., Guedes, A. L. P., Nogueira, M., and Ghamari-Doudane (2014). Um modelo de falhas em cascata para sistemas globais de gerenciamento de identidades. Anais do XIX Workshop de Gerência e Operação de Redes e Serviços. M/Monit (2015). M/monit: Proactive monitoring of unix systems, network and cloud services. http://mmonit.com/monit/#about. Último Acesso: Junho de 2015. Nogueira, M., Santos, A., Torres, J., Zanella, A., and Danielewicz, Y. (2011). Gerência de identidade na internet do futuro. Minicurso Apresentado no Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos-SBRC, pages 1–6. Shah, H., Anandane, S. S., and Shrikanth (2013). Security issues on cloud computing. CoRR, abs/1308.5996. Torres, J., Nogueira, M., and Pujolle, G. (2013). A survey on identity management for the future network. IEEE Communications and Surveys Tutorials, 15(2):787–802. Zahda, S. (2015). How to extract values from top and plot them. https://www. howtoforge.com/extract-values-from-top-and-plot-them. Último Acesso: Agosto de 2015.