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.

Documentos relacionados