Configuração Remota de Equipamentos via Servidor Web Embarcado
Transcrição
Configuração Remota de Equipamentos via Servidor Web Embarcado
Configuração Remota de Equipamentos via Servidor Web Embarcado Israel de Simas1, Michelle S. Wangham1 1 Universidade do Vale do Itajaí – Centro de Ciências Tecnológicas da Terra e do Mar Rodovia SC 407 – Km 4 - Sertão do Maruim – 88122-000 – São José – SC – Brasil E-mail: {israel,wangham}@univali.br Abstract. The parameters administration of networks equipments via Web is increasingly common. This kind of managing allows, for instance, a user to configure and monitor equipments from a Web browser. To do this, these equipments need an embedded web server that supplies it with managing capabilities and parameter seizuring from web pages. The purpose of this article is to describe the implementation of a Web application for secure remote configuration and update the firmware of a embedded system. Resumo. O gerenciamento dos parâmetros de equipamentos de redes via Web é cada vez mais comum. Este gerenciamento permite, por exemplo, que o usuário configure e monitore equipamentos a partir de um navegador Web. Para isso, os equipamentos necessitam de um servidor Web embarcado que auxilie o gerenciamento e a captura de parâmetros a partir de páginas Web. O objetivo deste artigo é descrever a implementação de uma aplicação Web segura para a configuração e atualização remota do firmware de um sistema embarcado. 1. Introdução As características da Web permitem que equipamentos conectados à rede se aproveitem deste meio de comunicação para prover a definição de seus parâmetros de configuração remotamente. Com o crescente número de equipamentos conectados à rede, que necessitam ser configurados remotamente, os servidores Web embarcados se tornaram comuns em uma variedade de dispositivos, com a responsabilidade de exportar as informações necessárias para o monitoramento remoto e para o auto-provisionamento [JONES 2002]. Além disto, no lado do cliente, o navegador Web tem se tornado o aplicativo padrão para que os clientes se comuniquem e gerenciem remotamente os dispositivos embarcados que estejam conectados em rede [SMITH et al. 2007]. Na configuração remota e no auto-provisionamento, quando informações sigilosas e/ou críticas necessitam ser trafegadas, mecanismos que garantam uma comunicação segura entre cliente e servidor devem ser empregados. No caso de servidores Web, a segurança é provida a partir da implantação de mecanismos de controle de acesso e de mecanismos de controle criptográficos. Os protocolos criptográficos utilizados por servidores Web almejam garantir as seguintes propriedades básicas de segurança: integridade, confidencialidade e autenticidade, provendo assim um canal de comunicação seguro entre o servidor e navegador Web [BALACHANDER e REXFORD 2002]. Na empresa Intelbras, está sendo desenvolvida uma nova interface de rede para a linha de centrais PABXs (Private Automatic Branch Exchange), a qual irá prover funcionalidades, como a gerência da central via rede IP, realizar chamadas VoIP (Voice over Internet Protocol), o envio de e-mails (Electronic Mail), o monitoramento SNMP (Simple Network Management Protocol), dentre outros. Nestes cenários com diversas aplicações, cada qual com seus parâmetros de configuração há necessidade de disponibilizar ao usuário uma aplicação que permita configurar e atualizar remotamente o software do sistema. Este artigo tem por objetivo descrever o desenvolvimento de uma aplicação Web segura responsável pela configuração remota de parâmetros e atualização do firmware de um sistema embarcado de uma interface de rede VoIP, constituída de diversas aplicações que necessitam ser configuradas remotamente. Na seção 2, são descritos os conceitos acerca da configuração remota e o autoprovisionamento em sistemas embarcados. Na seção 3, a estrutura proposta para a aplicação Web é apresentada. A seção 4 descreve a implementação desta aplicação para o modelo proposto. Na seção 5, a validação do sistema é apresentada. Por fim, na seção 6, são discutidos os resultados e as contribuições deste trabalho. 2. Configuração Remota e Auto-provisionamento em Sistemas Embarcados A configuração remota de equipamentos tem se popularizado (JONES, 2002), permitindo a visualização e, em muitos casos, alteração dos parâmetros de configuração do produto, facilitando a manutenção e acessibilidade do usuário ao dispositivo. Diversas aplicações Web têm sido embarcadas em equipamentos de rede com o objetivo de disponibilizar uma forma de configuração remota de seus parâmetros. Geralmente, os parâmetros disponíveis para configuração são: endereço IP, máscara de rede, gateway entre outros correlacionados a rede. Esta técnica é utilizada nos mais diversos cenários, como: operação/monitoramento, diagnóstico, configuração e alarme [JONES 2002]. Além da configuração remota, outro serviço provido por equipamentos de rede é o auto-provisionamento. Esta técnica permite que servidores VoIP disponibilizem novas configurações e/ou novas versões de firmware para os equipamentos de seus clientes (ATA ou telefone IP), sem a necessidade da intervenção do usuário para esta operação. A atividade de auto-provisionamento ocorre geralmente durante a inicialização do sistema. Por exemplo, um sistema embarcado previamente configurado com o endereço do servidor, com o protocolo de comunicação e o nome do arquivo para o download requisita ao servidor o arquivo com as configurações do sistema. Após o download do arquivo, o sistema é atualizado com estes novos parâmetros. Os protocolos mais utilizados para prover o auto-provisionamento são: TFTP (Trivial File Transfer Protocol), HTTP (Hypertext Transfer Protocol) e HTTPS (HTTP com SSL). 2.1. Segurança na configuração remota e auto-provisionamento Alguns provedores VoIP não privilegiam a segurança durante a transferência dos arquivos de configuração. Sendo assim, nem os arquivos de configuração nem os protocolos utilizados possuem proteção para impedir que os arquivos sejam interceptados, copiados, ou até mesmo, alterados por terceiros. Entretanto existem provedores VoIP que aplicam métodos de segurança criptografando os arquivos de auto-provisionamento. Geralmente esta criptografia é implementada com algoritmos simétricos onde o servidor e o cliente são os únicos a terem a chave para criptografar e descriptografar os arquivos. Outro método de segurança, considerado mais eficaz, é prover a segurança a partir de um protocolo de segurança, neste caso o mais utilizado é o protocolo SSL (SAFECOM, 2008). 2.2. Critérios para a Seleção de um Servidor Web Embarcado Os critérios de escolha de um servidor Web e sua importância dependem diretamente do sistema que se almeja desenvolver, ou seja, há critérios que podem ser importantes para determinados sistemas, como baixo consumo de memória e podem não ser tão importantes, por exemplo, quando o sistema visa prover segurança e confiabilidade. Este compromisso entre critérios e o sistema alvo precisa ser cuidadosamente considerado para a escolha e determinação do servidor Web. Logo, a escolha de um servidor Web não deve ser determinada de maneira aleatória ou influenciada pelo uso em outros sistemas, ou seja, esta deve ser formalizada com critérios e estudos. Sem o uso correto de uma pesquisa, ou estudo, podem ocorrer gargalos de processamento ou situações opostas, em servidores que são subutilizados no sistema, ocupando memória e recursos desnecessariamente [SMITH et al., 2007]. Como mencionado, a escolha do servidor Web deve ser baseada em uma série de critérios, aplicando-se relevância de acordo com o sistema alvo. No caso de servidores Web para sistemas embarcados, para atender às características destes sistemas, os principais critérios são: tamanho do executável, tempo de resposta, suporte a conteúdo dinâmico, documentação, custo, licença de uso, consumo de memória e segurança. Uma estratégia para a seleção do servidor Web é associar aos critérios de escolha diferentes pesos, de acordo com o grau de importância para a aplicação. Neste trabalho, os pesos foram alocados de acordo com o que se espera da aplicação Web na interface de rede (requisitos funcionais e não funcionais), que foram: segurança, acesso restrito a um único usuário, suporte ao sistema operacional Linux, sem custos monetários e suporte a conteúdo dinâmico. Assim, para o valor do peso alocado a cada critério foi atribuído em ordem crescente, com valores acrescidos de 1 (um) em 1 (um), do critério de menor importância para o critério de maior importância. O servidor Web para esse trabalho foi escolhido após uma análise baseada em critérios pré-estabelecidos no projeto, como mencionado anteriormente. Assim, foi realizada uma pesquisa sobre os servidores Web para sistemas embarcados e uma lista elencando as principais características destes foi elaborada. O servidor Web Lighttpd foi o servidor escolhido devido a obtenção da maior pontuação dentre todos os servidores, já que atendeu o maior número de critérios entre os servidores avaliados neste trabalho. 3. Modelo Proposto para Configuração Remota de Equipamentos Para atender ao conjunto de funcionalidades que visam realizar a configuração remota e auto-provisionamento do sistema embarcado, um modelo de arquitetura foi proposto conforme ilustrado na Figura 1. O auto-provisionamento é realizado pela aplicação Web toda vez que o sistema é inicializado e utiliza dois protocolos: HTTP e HTTPS. Outra funcionalidade que a aplicação Web provê é o envio e o recebimento de arquivos, com as configurações do sistema embarcado, para um usuário remoto, com o objetivo de manter um backup do sistema fora da interface de rede. A aplicação Web implementa duas funcionalidades principais, que são: 1. atender as requisições provenientes de clientes por páginas Web. Assim, que receber uma requisição, a aplicação Web constrói uma página Web com os parâmetros correlacionados as páginas requisitadas. Para isso, a aplicação Web coleta estes parâmetros no PABX via um módulo de comunicação, monta a página e envia ao cliente a página requisitada preenchida com os parâmetros. 2. atender/validar os formulários das páginas Web provenientes dos clientes. Estes formulários contêm os parâmetros que o usuário deseja armazenar no PABX e para isso a aplicação Web valida e depois envia para o PABX estes parâmetros. A aplicação Web está inserida na arquitetura conforme ilustrado na Figura 1. Figura 1. Arquitetura proposta Conforme ilustrado na Figura 1, a aplicação Web realiza a intermediação das requisições provenientes do cliente. O módulo de comunicação não é objeto deste trabalho. Este módulo é responsável por abstrair a interface de comunicação com o PABX legado e permitir que as aplicações possam coletar e armazenar dados no PABX. A aplicação Web, com o intuito de atender aos requisitos do projeto de um sistema embarcado legado é constituída dos seguintes módulos: • interface FastCGI: como a aplicação Web necessita se comunicar com o servidor foi implementado um módulo responsável pela comunicação entre servidor Web, via FastCGI, e a aplicação Web; • interface PABX: como a aplicação Web necessita se comunicar com o PABX foi implementado um módulo responsável pela comunicação entre PABX e a aplicação Web, via módulo de comunicação; • gerenciador da Aplicação Web: responsável por receber as requisições dos usuários e encaminhar ao módulo responsável por determinada requisição; • autorizador: responsável por garantir que somente os usuários legítimos do sistema utilizarão o mesmo; • manipulador de páginas Web: responsável pela captura de parâmetros do PABX e montagem da páginas Web; • validador: nem todas as validações dos parâmetros são possíveis no lado do cliente, por isso deve-se complementar a validação antes de enviar ao PABX; • auto-provisionamento: dedicado a implementar as regras de negócio do autoprovisionamento e arquivos de configuração; • importador: responsável por receber um arquivo de configuração ou arquivo de firmware. O arquivo de configuração atualizará os parâmetros do sistema e o arquivo de firmware será enviado ao PABX; • exportador: responsável por capturar os parâmetros do PABX, criar um arquivo com estes parâmetros e enviar ao navegador Web do usuário requisitante; • configurador: responsável pelo armazenamento, inserção, remoção e alteração de uma lista de parâmetros e seus respectivos valores, em memória. Este módulo abstrai as funcionalidades de manipulação de uma lista de parâmetros; e • manipulador de arquivo: responsável por criar, remover, abrir e fechar arquivos no sistema. A modelagem da aplicação Web foi destinada a atender os requisitos do PABX legado. Nesta etapa foram levantados 14 requisitos funcionais e 16 não-funcionais da aplicação Web, visando determinar os parâmetros configurados e as regras de negócio. Os casos de uso da aplicação Web, que foram 7, estão listados a seguir: Efetuar Login, Reinicializar o sistema, Exportar Arquivo de configuração, Importar arquivo de configuração, Importar Firmware, Auto-provisionamento e Configuração SNMP. A segurança foi um dos requisitos não funcionais mais importantes no desenvolvimento deste trabalho. Diversas técnicas foram utilizadas para que os requisitos de segurança desejáveis fossem garantidos. A aplicação Web (módulo autorizador) gerencia o número de usuários que estão conectados ao sistema, no caso deste trabalho, a regra de negócio determina que somente um usuário por vez tenha a permissão de acessar e configurar o sistema. Em relação ao número de usuários que a Aplicação Web pode atender simultaneamente, são dois usuários. Um destes usuários é o usuário conectado ao sistema e o outro é o usuário que receberá uma página Web informando-lhe que já há um usuário conectado ao sistema. A limitação do número de usuários atendidos simultaneamente será realizada no servidor Web, o qual limita em apenas duas conexões TCP simultâneas. Outra técnica de segurança adotada neste trabalho, a utilização do protocolo SSL, garante que os dados trocados entre o usuário e o servidor Web não sejam revelados e modificados por usuários não autorizados, garantindo a confidencialidade e a integridade dos dados trocados. O servidor utiliza um certificado digital auto-assinado, gerado especificamente para este projeto. Para complementar a segurança neste projeto, um método de autenticação dos usuários do sistema foi implantado. Este método garante que o usuário necessita estar cadastrado no sistema para poder acessar as páginas Web e configurar os parâmetros das aplicações. Assim, um usuário legítimo é obrigado a enviar seu login e senha, ao acessar o sistema pela primeira vez, para que o sistema o autentique e libere o acesso. De acordo com um dos requisitos da aplicação, o sistema deve utilizar como técnica de autorização, o modelo de controle de acesso baseado em papéis (RBAC – Role Based Access Control). Este modelo foi escolhido, pois este possui uma política centralizadora que possibilita, de forma flexível, a fácil adaptação a novos requisitos que aparecem ao longo do projeto de um sistema. No modelo RBAC, os acessos são associados a papéis e estes papéis são associados a usuários. Assim, os usuários podem ser facilmente remanejados de um papel para outro, facilitando o gerenciamento de mudanças nas permissões de acesso, como por exemplo, restringir o acesso a determinadas páginas, sendo que para isso, basta modificar apenas o conjunto de permissões atribuídas aos diferentes papéis. 4. Implementação A aplicação Web proposta utilizou um conjunto de tecnologias para prover a configuração remota dos parâmetros das aplicações e o auto-provisionamento. A Figura 2 ilustra os módulos da aplicação Web e suas interconexões. Figura 2. Arquitetura da Aplicação Web Os módulos constituintes da aplicação Web interagem entre si, através de funções de acesso. Cada módulo é responsável por uma determinada funcionalidade, como por exemplo, o módulo manipulador de arquivo, o qual reúne todas as funções necessárias pela Aplicação Web para a manipulação de arquivos. Assim, se algum módulo da aplicação Web necessitar abrir e escrever em um determinado arquivo, o módulo requisitante utiliza as funções do módulo Manipulador de arquivos. A escolha da tecnologia para geração dinâmica de páginas Web no lado servidor precisou ser devidamente avaliada com base os requisitos funcionais e não funcionais do sistema legado, principalmente, por este trabalho ser focado para sistemas embarcados. As tecnologias no lado servidor, pelo fato de exigirem operações sobressalentes, consomem um maior processamento de CPU, que muitas vezes é escasso em muitas aplicações de sistemas embarcados. A maioria dos sistemas embarcados que utilizam configuração remota analisados neste trabalho, utilizam tecnologias de geração de páginas Web no lado cliente, principalmente JavaScript. A carga de processar e montar as páginas é repassada ao cliente, liberando o servidor Web a tarefa que normalmente consume processamento de CPU e memória. Diante do exposto, decidiu-se neste trabalho utilizar duas tecnologias, uma no lado do servidor e outra no lado do cliente, para a geração dinâmica de páginas. As tecnologias empregadas foram o JavaScript, no lado do cliente, e o FastCGI, no lado do servidor. O código JavaScript é responsável pela validação de parâmetros provenientes do cliente para o servidor, além de gerar parte das páginas Web, páginas HTML. Enquanto que o FastCGI, é a interface para a aplicação Web, que tem como uma de suas responsabilidades atender as requisições e incluir os valores dos parâmetros nas páginas. A implementação da aplicação Web foi codificada em linguagem C, já que esta oferece um melhor desempenho e menor consumo de memória quando comparada a outras linguagens. Todo o desenvolvimento da Aplicação Web foi realizado em um host que possuía o sistema operacional Linux. Após a implementação dos módulos e testes de funcionalidade neste host foi gerada uma versão de software para o processador ARM (Advanced RISC Machine), utilizado na arquitetura do sistema embarcado legado. Neste trabalho, alocou-se o maior número possível de tarefas no servidor Web (Lighttpd), liberando a aplicação Web para realizar as funcionalidades mais importantes, como o controle das configurações, auto-provisionamento, validação de parâmetros etc. O intuito é aproveitar as funcionalidades já disponíveis no servidor Web, como autenticação, limites de conexões TCP e segurança via o protocolo SSL. De acordo com o arquivo de configuração lighttpd.conf definido para este projeto, o servidor Web possui as seguintes responsabilidades: determinar o local para o CHROOT; limitar a banda passante para download (1Mbyte); interagir com a biblioteca openSSL e criar conexões HTTPS com os clientes; autenticar os usuários do sistema; encaminhar os pedidos por páginas HTM, formulários e arquivos de configuração para a aplicação Web via FastCGI; e manipular as mensagens de erros 4XX, como 401 (usuário sem autorização) e 404 (arquivo/recurso não encontrado). Devido ao curto prazo de implementação, não foi possível implementar o modelo RBAC na aplicação Web, e assim outro modelo para autenticação foi adotado. Este modelo é usualmente adotado em sistemas embarcados que almejam o controle de acesso, o qual limita o acesso ao sistema a apenas dois usuários (admin e user), os quais são identificados pelo sistema em uma lista de controle de acesso (ACL) definida pela aplicação, ou seja, adotou-se o modelo de controle de acesso conhecido como discricionário. Neste arquivo de configuração foram editadas as pastas/sites que os usuários tem permissão de acessar e configurar. 5. Validação Testes de software foram realizados na Aplicação Web, com o intuito de verificar o correto funcionamento e o atendimento às regras de negócios e às funcionalidades propostas no projeto. Destes incluem-se testes de integração, sistema, segurança, carga e aceitação. O sistema foi implementado de maneira incremental, sendo que cada módulo foi implementado em seu todo e depois integrado à Aplicação Web. Assim, após a implementação de um determinado módulo do sistema, testes de integração eram realizados com os demais módulos implementados. Testes com a abordagem caixa preta foram realizados após a conclusão da implementação de todos os módulos. Para isso, um plano de teste foi elaborado com dezesseis casos de teste, os quais avaliam as principais funcionalidades propostas. 6. Conclusão A utilização da Web em sistemas embarcados permite que estes sistemas disponibilizem aos usuários as suas configurações, de maneira rápida, fácil e sem a necessidade de adquirir ferramentas de software específicas para configurá-los. Este trabalho teve como foco suprir as necessidades de configuração remota dos parâmetros de um sistema embarcado legado (interface de rede VoIP). Além disso, o serviço de auto-provisionamento também foi provido com o intuito de coletar arquivos que contenham as configurações e firmware da interface de rede, de maneira segura. A aplicação Web proposta utilizou um conjunto de tecnologias para prover a configuração remota dos parâmetros das aplicações. Com relação a implementação da aplicação Web em outros sistemas embarcados, estes podem aproveitar a implementação desenvolvida de maneira quase integral, precisando de algumas customizações, como nome de parâmetros e regras para o módulo validador. Por fim, a aplicação Web além de reunir funcionalidades de configuração e monitoramento, proporciona que outras funcionalidades serem aderidas (trabalhos futuros), tais como: utilização de outros protocolos e arquivos de configuração criptografados no auto-provisionamento; implementação da técnica RBAC para controle de acesso de usuários e monitoramento contínuo de parâmetros do sistema. Referências BALACHANDER, K., REXFORD, J., (2001). Redes para a Web: HTTP/1.1, Protocolos de Rede, Caching e Medição de Tráfego. Rio de Janeiro: Addison Wesley. ISBN 85-352-0874-7. BENTHAM, J., TCP/IP Lean: Web servers for embedded systems. 2. ed. Lawrence: CMP Books, 2002, ISBN 1-57820-108-X. DRUZIANI, C. F. M., Estudo das Técnicas de Monitoramento de Documentos na WEB, Universidade Federal do Rio grande do Sul, Cascavel, 2000. HONG, J. W. K., Embedded Web Server Architecture for Web-based Element and Network Management. 2001. Disponível em: <http://dpnm.postech.ac.kr/thesis/01/juht/juhtenglish.pdf>. Acessado em: 02 fev. De 2008. JONES, M. T., (2002). TCP/IP Application Layer Protocols for Embedded Systems. Hingham: Charles River Media. ISBN 1-58450-247-9. KNESCHKE, J., LIGHTTPD fly Light. 2007. <http://www.lighttpd.net/>. Acessado em 05 mar. de 2007. Disponível em: OPENMARKET, FastCGI: A High-Performance Web Server Interface. Disponível em: <http://www.fastcgi.com/devkit/doc/fastcgi-whitepaper/fastcgi.htm>. Acessado em 01 mar. de 2008. SAFECOM, Auto Provision for SDSIP-5000. Disponível <http://safecom.cn/code/product/ip/SDSIP-5000/FAQ/Auto-Provisioning.pdf>. Acessado em: 03 mar. de 2008. em: SMITH, B., HARDIN, J., PHILIPS, G., PIERCE, B., (2007). Linux Appliance Design: A hands-on guide to build Linux appliances. San Francisco: No starch Press. ISBN10: 1-59327-140-9, ISBN-13: 978-1-59327-140-4.