VITRIA 2007
Computadores da Faculdade Salesiana de Vitria, como requisito parcial para obteno do ttulo de Especialista em Segurana de Redes de Computadores. Orientador: Prof. M.Sc. Srgio Nery Simes. Co-orientador: Prof. M.Sc. Srgio Teixeira.
VITRIA 2007
Dados Internacionais de Catalogao-na-publicao (CIP) (Biblioteca da Faculdade Salesiana de Vitria, Esprito Santo, Brasil)
D287s
Deboni, Felipe Loureiro, 1982 Sistemas Embarcados em Segurana de Redes - OPENWRT / Felipe Loureiro Deboni, Rafael Ferreira Borba. 2007. 102 f. : il. Orientador: Srgio Nery Simes. Monografia (ps-graduao em Segurana de Redes de Computadores) Faculdade Salesiana de Vitria. 1.Redes de Computadores - Segurana. 2. Sistemas Embarcados. 3. OpenWRT. I. Rafael Ferreira Borba. II. Simes, Srgio Nery. III. Faculdade Salesiana de Vitria. IV. Ttulo. CDU: 004.7
Monografia apresentada ao Curso de Ps-graduao em Segurana de Redes de Computadores da Faculdade Salesiana de Vitria, como requisito parcial para obteno do ttulo de Especialista em Segurana de Redes de Computadores. Aprovada em 11 de junho de 2007.
COMISSO EXAMINADORA
_____________________________________ Prof. M.Sc. Joo Gomes da Silveira Centro Federal de Educao Tecnolgica do Esprito Santo (CEFETES)
Eu, Felipe Loureiro Deboni, dedico este trabalho a minha famlia por acreditarem no meu potencial e por me disponibilizar toda ajuda no decorrer do curso, e por toda minha formao acadmica. --Eu, Rafael Ferreira Borba, dedico este trabalho a minha noiva, que me ajudou a permanecer forte nos perodos em que a fraqueza se abatia sobre mim em relao ao curso e aos amigos que aqui conquistei, cuja alegria, fora de vontade e companheirismo me incentivaram seguir a diante nesta batalha.
AGRADECIMENTOS
Agradecemos aos professores Srgio Nery Simes e Srgio Teixeira pela colaborao e apoio no desenvolvimento desse trabalho. Aos nossos pais, irmos, companheiras e amigos, pelo apoio dado desde o inicio do curso.
RESUMO
Este trabalho apresenta conceitos e fundamentos sobre a customizao do roteador Linksys WRT54G com o firmware e mini distribuio Linux, OpenWRT, o que vem a ser um sistema embarcado, mostrando histrico e exemplos, e tambm falando sobre segurana, comentando as premissas de uma boa regra de firewall, buscando demonstrar ao longo do texto de forma didtica o passo-a-passo para instalao e configurao dos roteadores com o OpenWRT, no intuito de aperfeioar as funes e limitaes impostas pelo fabricante deste equipamento nos servios de NAT e Firewall. Palavras-chave: Redes de Computadores Segurana, Sistemas Embarcados, OpenWRT.
ABSTRACT
This paper presents bases and concepts about Linksys WRT54G customization with firmware and Linux mini distribution, OpenWRT, what is embedded system, showing history and samples, and saying about security, also commenting the premises of a good firewall rules, looking to demonstrate trough the text step-by-step the installation and configuration the OpenWRT in routers, available to help added functions and remove imposed manufacturer limitations of this equipment in the services of NAT and Firewall. Keywords: Computer networks - Security, Embedded Systems, OpenWRT.
LISTA DE FIGURAS
Figura 1: Ponto de acesso sem fios e encaminhador Linksys WRT54G. ................................. 60 Figura 2: Motherboard do sistema embebido Linksys WRT54G v1.1. .................................... 60 Figura 3: Ilustrao da atualizao via browser..................................................................... 70 Figura 4: Tela que obteramos ao acessar o OpenWRT via telnet. ......................................... 71 Figura 5: Tela que obteramos ao conectar no OpenWRT via Putty(SSH). ............................ 72 Figura 6: Tela de informaes do OpenWRT na interface web. .............................................. 83 Figura 7: Tela sobre o WebIf do OpenWRT. ........................................................................... 84 Figura 8: Status de conexo do OpenWRT na interface web. ................................................. 85 Figura 9: Clientes DHCP do OpenWRT na interface web. ..................................................... 86 Figura 10: Status wireless do OpenWRT na interface web. .................................................... 87 Figura 11: Configuraes do sistema do OpenWRT na interface web. ................................... 88 Figura 12: Alteraes de senha do OpenWRT na interface web. ............................................ 88 Figura 13: Instalao ou desinstalao de pacotes do OpenWRT na interface web. ............. 89 Figura 14: Atualizao de firmware do OpenWRT na interface web. ..................................... 90 Figura 15: Configuraes de rede do OpenWRT na interface web. ........................................ 91 Figura 16: Configuraes da WAN do OpenWRT na interface web. ...................................... 91 Figura 17: Configuraes wireless do OpenWRT na interface web. ....................................... 92 Figura 18: Configuraes wireless avanadas do OpenWRT na interface web...................... 93 Figura 19: Configuraes de hosts do OpenWRT na interface web. ....................................... 94 Figura 20: Configurao firewall do OpenWRT na interface web. ......................................... 95
LISTA DE TABELAS
LISTA DE QUADROS
Quadro 1: Arquivo: /etc/firewall.sh ......................................................................................... 52 Quadro 2: Comando para adicionar o firewall inicializao automtica............................ 52 Quadro 3: Arquivo: /etc/firewall.sh ......................................................................................... 54 Quadro 4: Arquivo: /etc/hosts .................................................................................................. 54 Quadro 5: Arquivo: /etc/fwlib.sh .............................................................................................. 57 Quadro 6: Atualizao por TFTP. ........................................................................................... 69 Quadro 7: Atualizao por telnet. ............................................................................................ 71 Quadro 8: Comando para sair do acesso telnet. ..................................................................... 72 Quadro 9: Comando para acessar por ssh. ............................................................................. 73 Quadro 10: Comando de acesso a memria. ........................................................................... 73 Quadro 11: Comando para visualizar o contedo da memria............................................... 73 Quadro 12: Comando para setarmos as configuraes do roteador....................................... 74 Quadro 13: Comando para pegar a informao do canal utilizado........................................ 74 Quadro 14: Comando para gravar as informaes setadas na memria. ............................... 74 Quadro 15: Configurando com ip fixo a interface wan. .......................................................... 74 Quadro 16: Pegando a informao do mtodo de utilizado na configurao ip. .................... 75 Quadro 17: Pegando a informao do ip da LAN. .................................................................. 75 Quadro 18: Pegando a informao da mascara da LAN......................................................... 75 Quadro 19: Comando para gravar as informaes setadas na memria. ............................... 75 Quadro 20: Script firewall. Arquivo: /etc/firewall-up.sh ......................................................... 82
SUMRIO
1. INTRODUO ................................................................................................................... 15 1.1 Motivao....................................................................................................................... 17 1.2 Objetivo ......................................................................................................................... 20 1.3 Metodologia ................................................................................................................... 20 1.4 Organizao do trabalho ................................................................................................ 22 2. SISTEMAS EMBARCADOS.............................................................................................. 23 2.1 Sistema Embarcado: o que ? ........................................................................................ 26 2.2 Pequeno Histrico .......................................................................................................... 27 2.3 Caractersticas ................................................................................................................ 28 2.4 Tempo Real em Sistemas Embarcados Linux................................................................ 29 2.5 Alguns Sistemas Embarcados Disponveis .................................................................... 32 2.5.1 eCos ........................................................................................................................ 32 2.5.2 NetBSD................................................................................................................... 33 2.5.3 Windows CE Embedded ......................................................................................... 33 2.5.4 Windows NT Embedded......................................................................................... 34 2.5.5 uClinux ................................................................................................................... 34 2.5.6 OpenWRT............................................................................................................... 35 2.5.6.1 Por que utilizar o OpenWRT? ......................................................................... 36 2.5.6.2 OpenWRT, um breve histrico ....................................................................... 36 2.6 Java em Sistemas embarcados ....................................................................................... 37 2.7 Sobre licenas em sistemas embarcados livres .............................................................. 38 2.8 Software livre em Sistemas Embarcados ....................................................................... 39 2.9 Consideraes ................................................................................................................ 42 3. FUNDAMENTOS DE SEGURANA DA INFORMAO ............................................. 43 3.1 Firewall ......................................................................................................................... 43 3.2 Arquiteturas de Firewall ................................................................................................ 44 3.2.1 Arquitetura Dual-Homed Host ............................................................................... 44 3.2.2 Arquitetura Screened Host,..................................................................................... 45 3.2.3 Arquitetura Screened Subnet .................................................................................. 45 3.3 Poltica de Segurana ..................................................................................................... 46 3.4 Iptables ......................................................................................................................... 47
3.4.1 Caractersticas do iptables ...................................................................................... 48 3.4.2 Conhecendo as tabelas ............................................................................................ 50 3.4.3 Regras teis, modelo I ............................................................................................ 51 3.4.4 Regras teis, modelo II ........................................................................................... 52 3.5 Consideraes ................................................................................................................ 57 4. CONHECENDO O LINKSYS WRT54G ............................................................................. 58 4.1 Trabalhos e solues correlatas...................................................................................... 61 4.2 Consideraes ................................................................................................................ 65 5. UMA PROPOSTA DE APLICAO DO OPENWRT EM REDES DE PEQUENO E MDIO PORTE ....................................................................................................................... 66 5.1 Instalando o OpenWRT e atualizando o firmware do roteador WRT54G .................... 66 5.1.1 Equipamento utilizado: ........................................................................................... 67 5.1.2 Preparando para atualizar: ...................................................................................... 67 5.1.3 Atualizando............................................................................................................. 67 5.1.3.1 Atualizao por TFTP (Windows) .................................................................. 68 5.1.3.2 Atualizao por TFTP (Linux) ........................................................................ 68 5.1.3.3 Atualizao por browser (Firefox ou IExplorer)............................................. 69 5.2 Configurando OpenWRT ............................................................................................... 70 5.2.1 Acessando via SSH ou Telnet ................................................................................ 70 5.2.2 Configurando em modo AP .................................................................................... 73 5.2.3 Acessando via interface web (WebIf) .................................................................... 83 5.3 Proposta de utilizao .................................................................................................... 95 5.3.1 Vantagem do OpenWRT para sua empresa:........................................................... 96 5.3.2 Desvantagem do OpenWRT para sua empresa: ..................................................... 96 5.4 Consideraes ................................................................................................................ 97 6. CONSIDERAES FINAIS E TRABALHOS FUTUROS ............................................... 98 7. REFERNCIAS BIBLIOGRFICAS ................................................................................. 99
15
1. INTRODUO
Vivemos em uma era de constantes mudanas tecnolgicas com a evoluo dos sistemas eletrnicos, seja para uso pessoal, como celulares, ou na indstria automotiva. Os sistemas embarcados 1 esto cada vez mais presentes em nosso cotidiano (ORTIZ, 2001).
A utilizao de sistemas embarcados de fundamental importncia para o funcionamento de vrios equipamentos da vida moderna. Eles so encontrados nos mais variados dispositivos e sistemas, desde simples brinquedos at equipamentos de ltima gerao da indstria eletroeletrnica. Alguns exemplos de aplicao de sistemas embarcados so os roteadores e switches 2 de gerenciamento de redes em laboratrios de alto desempenho, os fornos de microondas, os controles remoto de TVs, as impressoras e mquinas copiadoras, os players de MP3, os sistemas de automao, os sistemas automotivos inteligentes, os telefones celulares, e at mesmo os brinquedos falantes (CARRO, 2004). Em geral, qualquer novo sistema ou produto que possui a caracterstica de funcionar automaticamente apresenta um sistema embarcado controlando e gerenciando o funcionamento e a performance dos componentes e dispositivos envolvidos.
Sistemas embarcados apresentam caractersticas em comum com os sistemas computacionais de propsitos gerais, mas no possuem a uniformidade desses. Cada aplicao pode apresentar requisitos diferentes de desempenho, consumo de potncia e rea ocupada, o que vai acarretar em uma combinao distinta de mdulos de hardware e software para atender estes requisitos. (CARRO, 2003)
A demanda por equipamentos inteligentes e solues dedicadas, capazes de apresentar resultados eficientes para os problemas cotidianos, transforma a utilizao de
Sistema Embarcado. Embedded System. um sistema operacional especializado dedicado para tarefas
especificas.
2
Switches. Ou no singular switch. Tambm chamados de comutadores, possuem diversas portas assim
como os hub. A diferena que, internamente, ele segmenta a rede, sendo que cada porta um segmento diferente.
16
Desta forma, a demanda por sistemas embarcados, capazes de orquestrar os novos dispositivos e equipamentos, crescente e irreversvel. Esta necessidade tem atrado novas companhias e empresas interessadas no desenvolvimento de sistemas embarcados. Estimou-se que o rendimento com a venda de sistemas embarcados dobraria, passando de 752 milhes de dlares em 2001 para 1.59 bilhes em 2005. (ORTIZ, 2001) Contudo no possumos mensuraes sobre a afirmao de ORTIZ em 2001 para confirmar se suas estimativas se concretizaram.
O mercado de sistemas embarcados possui a particularidade de ser mais competitivo, se comparado ao mercado de sistemas computacionais tradicionais. Isso ocorre porque no existe uma nica empresa que domine uma larga fatia no mercado, como acontece com os sistemas operacionais para computadores pessoais, dominado por poucos. Esta peculiaridade tem atrado a ateno de vrias empresas de desenvolvimento j consagradas no ramo de sistemas operacionais, dentre elas a Microsoft 3 , a Wind River Systems 4 e a Red Hat 5 , por exemplo.
Os sistemas embarcados sofrem certas restries que no so to relevantes aos sistemas computacionais convencionais, como os computadores pessoais. Restries como o uso de energia sem prejudicar o desempenho, pouca memria disponvel e previsibilidade so algumas delas.
A arquitetura em que os sistemas embarcados residem tambm pode variar bastante, contendo um ou mais processadores, memrias e interfaces para perifricos. Tomando como exemplos os celulares, estes podem ter mais de uma memria: a do chip e a do prprio aparelho, e mais
Microsoft. A Microsoft Corporation a maior e mais conhecida empresa de software do mundo. Foi
fundada em 1975 por Bill Gates e Paul Allen com o objetivo de desenvolver e comercializar interpretadores da linguagem BASIC.
4
Wind River Systems. A Wind River Systems, Inc. Fornecedora de sistemas embarcados, ferramentas
de desenvolvimento para sistemas embarcados, middleware, e outros tipos de software. A companhia foi fundada em Berkeley, Califrnia em 1981 por Jerry Fiddler.
5
Red Hat. A Red Hat, Inc. Fundada em 1993, uma empresa dos Estados Unidos, que disponibiliza
solues baseadas no sistema operacional GNU/Linux, incluindo vrias distribuies. Em 2004 iniciou uma separao do ambiente desktop em detrimento do ambiente empresarial, de onde nasceu o projeto afiliado Fedora Core.
17
de uma interface: para cmera fotogrfica integrada e outra para conect-lo a um computador pessoal. A estrutura de comunicao de um sistema pode variar de um barramento a uma rede interna (NoC network on a chip). Em alguns casos um sistema operacional de tempo real (SOTR) pode ser necessrio, como exemplo, podemos citar os sistemas de controle de freios ABS ou os air-bags utilizados na indstria automotiva.
Vrios fornecedores e pesquisadores de sistemas embarcados esto desenvolvendo novas arquiteturas e aperfeioando seus sistemas, num esforo de melhorar a performance dos mesmos, e assim, conquistar um lugar de destaque no mercado com novas tecnologias e solues. (SANTO, 2001) O que vem se concretizando nos dias atuais. (WINDOWS EMBEDDED, 2007)(HTC SMART MOBILE, 2007)
1.1 Motivao
Profissionais de TI tm grande dificuldade em dedicar um computador apenas para fazer NAT 6 e Firewall 7 em pequenas e mdias empresas com verbas bem restritas. Uma soluo seria comprar um roteador para este fim, que realizaria apenas tarefas bsicas. Porm, este possui limitaes, no sendo possvel em seu padro de fabrica exercer tarefas como um firewall avanado.
NAT. Network Address Translation - Mecanismo que permite a conexo de redes privadas rede
Internet sem alterao dos endereos reservados. Atravs de um NAT server os endereos de rede reservados so convertidos para endereos pblicos quando se torna necessrio o acesso rede Internet. Com este mecanismo, diversos computadores com endereos internos podem compartilhar um nico endereo IP.
7
Firewall. o nome dado ao dispositivo de rede que tem por funo regular o trfego de rede entre redes
distintas. Impedir a transmisso de dados nocivos ou no autorizado de uma rede a outra. Dentro deste conceito incluem-se, geralmente, os filtros de pacotes e os proxy de protocolos. Existe na forma de software e hardware, ou na combinao de ambos. A instalao depende do tamanho da rede, da complexidade das regras que autorizam o fluxo de entrada e sada de informaes e do grau de segurana desejado.
18
Focados nesta dificuldade desenvolvido esse trabalho, ou seja, ao invs de um computador dedicado apenas a estas tarefas utilizaremos um roteador Linksys WRT54G 8 , que possui limitaes, mas graas a contribuio da comunidade Open Source 9 foi desenvolvido com base no Sistema Embarcado uClinux 10 a distribuio OpenWRT 11 , que possui toda robustez e segurana do Linux.
Com a soluo proposta poderemos converter um simples roteador Linksys WRT54G que desempenha tarefas bsicas de roteamento e controle de web para um avanado servidor Linux que possibilita a instalao dos mais conceituados pacotes de aplicativos, como iptables 12 , apache 13 , ftp e outros.
O baixo consumo de energia outro fator importante e que muito motivou na escolha do roteador ao invs de um computador tradicional, sem a necessidade de monitor, teclado nem mouse, que contribui para manter seu baixo consumo de energia, funcionando apenas com uma fonte de 12 volts, e consumindo apenas 10 Watts de energia, enquanto um computador com monitor consome em media 150 Watts de energia.
Linksys WRT54G. um dos mais famosos roteadores sem fio da Linksys. Por seu firmware ter cdigo
aberto, desenvolveu-se toda uma comunidade de desenvolvedores de firmwares alternativos, agregando funes adicionais ao equipamento. O equipamento possui as variantes WRT54GL e WRT54GS, ambas em produo.
9
Open Source. Conceito de distribuio de software, que estabelece como fundamentais, os princpios de
desenvolvimento compartilhado, distribuio na forma de cdigo fonte e licenciamento gratuito. Qualquer trabalho desenvolvido em Open Source pode ser modificado para atender novas necessidades desde que o trabalho derivado seja disponibilizado a todos, tambm de forma gratuita. A integridade e notoriedade dos autores preservada, sendo registrado o nome de cada um dos colaboradores nas verses subseqentes.
10
uClinux. Sistema Embarcado de cdigo aberto criado em 1998 e completamente voltado a Sistemas
Embarcados.
11
OpenWRT. Distribuio Linux baseada no uClinux. Este sistema ter um destaque, pois ser utilizado
nesta monografia.
12 13
Iptables. Firewall em nvel de pacotes. Apache. O mais conhecido dos servidores da Internet. responsvel pela hospedagem de mais de 50%
dos sites existentes no mundo inteiro. O nome um trocadilho, com a similaridade fontica da expresso a patchy server (um servidor remendado, em ingls). Isto porque, seu programa foi sendo aperfeioado pela contribuio (patches/remendos) de diversos colaboradores.
19
Ainda comparando com um computador tradicional, nota-se a diferena no espao ocupado pelas solues, enquanto o roteador consegue ocupar apenas o espao de um livro, o gabinete de um computador tradicional necessita de um espao bem maior, e se consideramos o monitor, teclado e mouse, o espao aumenta ainda mais.
Como um grande diferencial entre o Linksys WRT54G com firmware padro e o firmware customizado com o OpenWRT, a possibilidade de configur-lo de forma bem simples, atravs da interface web, ou se necessrio de forma avanada atravs de SSH 14 e Telnet 15 , isso tudo atravs da comodidade de sua rede, ou pela internet.
Agregando ainda mais s facilidades disponveis, temos a manuteno, reinstalao e substituio do equipamento de forma simples, possvel configurar controles de excees, de forma que ao detectar alguma anomalia em seu funcionamento, o equipamento capaz de avisar o administrador, gerar seu prprio backup, e restaur-lo automaticamente em um segundo roteador para que o funcionamento da sua rede no tenha grandes impactos, passando assim o controle da mesma para este segundo roteador.
A ausncia de hard disk(HD) beneficia, na medida em que restringe o nmero de aplicaes que rodam neste roteador, sendo menos portas abertas, menos falhas e menos excees, alm disso, ele capaz de montar uma partio de qualquer pasta compartilhada em uma maquina remota.
Portabilidade e baixo investimento contribuem ainda mais para aumentar o diferencial desta soluo. Devido ao baixo valor de investimento, torna-se fcil manter uma estrutura de backup, tanto pela parte dos softwares, quanto pela parte do hardware. Por ser uma distribuio Linux a configurao do OpenWRT pode ser padronizada por scripts, facilitando ainda mais a administrao desses equipamentos.
14
permite a conexo com outro computador na rede, de forma a executar comandos de uma unidade remota. Possui as mesmas funcionalidades do Telnet, com a vantagem da conexo entre o cliente e o servidor ser criptografada.
15
microcomputador atuar como terminal de computadores de qualquer parte do mundo. O Telnet atua no modo texto e permite usar um computador, que est longe, como se fosse o seu prprio micro. Suas transmies so feitas em texto claro, sendo aconselhada a utilizao do SSH.
20
O Linksys WRT54G um roteador wireless 16 , padro 802.11b/g 17 , e um switch. Ele permite a interao entre a rede sem fio e a rede cabeada, possibilitando a substituio da estrutura tradicional composta por um computador.
1.2 Objetivo
O objetivo geral desse trabalho de pesquisa implementar o sistema OpenWRT e customizlo, utilizando regras de segurana avanadas para se obter maior eficcia no dia-a-dia e economia a curto e mdio prazo.
Implementao do Iptables no OpenWRT; Utilizao do Linksys WRT54G em redes de pequeno e mdio porte; Conhecimento dos sistemas embarcados; Possibilidades de utilizao do Linksys WRT54G.
1.3 Metodologia
Foi constatado por meio da interao com profissionais da rea de segurana de redes em listas de discusses, fruns e artigos, que sistemas embarcados esto sendo muito utilizados
16
Wireless. Da traduo do ingls, sem fio. Transmisso via ondas de rdio ou satlite, sem a necessidade
de conexo fsica por meio de cabos. Provavelmente ser usada em redes de computadores do futuro, permitindo maior flexibilidade de uso.
17
802.11b/g. Padro de conexo sem fio padronizada pelo IEEE que opera na freqncia de 2.4 GHz, o
21
pelas empresas, pois trazem diversas possibilidades para a interconexo de redes. Por meio de pesquisas na Internet foi constado que o roteador Linksys WRT54G um dos mais utilizados para interconexo de redes sem fio. Alm disso, o fabricante desse equipamento foi o primeiro a disponibilizar os fontes do firmware com licena GPL (OPENWRT, 2007). Diante disso, foram pesquisadas alternativas para uma maior eficcia do uso desse equipamento, pois existem limitaes na configurao padro do firmware.
Devido falta de publicaes sobre sistemas embarcados foi utilizado o material disponvel na Internet. Foram identificados e pesquisados firmwares customizados. Foi constatado por meio de pesquisas em sites especializados na Internet que o OpenWRT uma opo eficaz para a customizao de compartilhamento seguro de redes que utilizam ou pretendem utilizar dispositivos que so compatveis com sistemas embarcados. Aps a definio do uso do OpenWRT como o firmware customizado a ser utilizado, foi elaborado um roteiro de instalao e configurao, passo-a-passo, juntando varias informaes obtidas em pesquisas em diversos sites, fruns e listas de discusses. Foi obtido screenshots 18 para enriquecer o trabalho e facilitar o entendimento na hora de instalar o firmware customizado, que de fato uma operao delicada, que gera duvidas e demanda ateno redobrada. Nos screenshots da interface web, procurou-se demonstrar a facilidade de sua configurao, alguns desses foram gerados na prpria maquina do autor, outros foram obtidos na internet e inseridos neste trabalho com autorizao de seus autores.
Em segurana foi pesquisado alem dos livros adquiridos nas bibliotecas, vrios sites da comunidade Linux, pelo fato do OpenWRT ser uma mini distribuio Linux todos os scripts que funcionam no Linux para computadores tradicionais, funcionaram no OpenWRT com o mnimo de modificao, foi utilizado o script desenvolvido por Fabricio Beltram, com algumas modificaes, como o principal script de iptables deste trabalho.
18
ScreenShot. Um screenshot uma imagem do contedo do monitor feita pelo prprio computador.
Geralmente esta uma imagem digital feita pelo sistema operacional ou por um software instalado no computador.
22
Esse trabalho segue a seguinte organizao: Captulo 2 Sistemas Embarcados Apresenta conceitos, tipos de sistemas, kernel 19 e funcionalidades de um sistema embarcado, bem como a sua histria, desde seu surgimento na dcada de 60 at os dias atuais, suas caractersticas retratadas sob uma ampla viso da aplicao deste recurso em um vasto universo de hardware e software.
Captulo 3 Segurana Neste capitulo apresentado recursos de segurana baseados em mltiplos protocolos, bem como uma ampla informao sobre regras e tabelas visando maior eficcia e eficincia do Linksys WRT54G, dando um destaque especial ao iptables, que ser utilizado para criar as regras de firewall utilizadas nesta monografia.
Captulo 4 Conhecendo o Linksys WRT54G Apresenta um dos mais famosos roteadores sem fios da Linksys, com suas especificaes tcnicas, mostrando as possibilidades de customizaes que sero utilizadas para este trabalho.
Captulo 5 Uma proposta de utilizao Mostra uma proposta de aplicao dos mtodos, utilizando o OpenWRT em um roteador Linksys WRT54G, mostrando passo a passo sua instalao em vrios mtodos, e configurao por SSH, Telnet ou via interface web nos moldes propostos.
Captulo 6 Consideraes finais e Trabalhos futuros Consideraes finais do trabalho e abordagem de futuros trabalhos que possam ser realizado para dar continuidade proposta apresentada.
Captulo 7 - Referncias Bibliogrficas referncias bibliogrficas utilizadas na elaborao deste projeto de pesquisa.
19
Kernel. O Kernel de um sistema operacional entendido como o ncleo deste ou, numa traduo literal,
cerne. Ele representa a camada mais baixa de interface com o Hardware, sendo responsvel por gerenciar os recursos do sistema computacional como um todo.
23
2. SISTEMAS EMBARCADOS
Os sistemas computacionais embarcados esto presentes em praticamente todas as atividades humanas e, com os baixos custos tecnolgicos atuais, tendem a aumentar sua presena no cotidiano das pessoas. Exemplos de tais sistemas so as mquinas de lavar, o sistema de controle dos carros e nibus, os computadores portteis palm-top, em roteadores, os fornos de microondas com controle de temperatura inteligente e outros eletrodomsticos. (CARRO, 2004) De acordo com a definio encontrada na Wikipdia 20 , sistema embarcado um computador de propsito especial, que completamente encapsulado pelo dispositivo que controla. Grande parte dos microprocessadores fabricados mundialmente destinada a mquinas que usualmente no so chamadas de computadores. O que diferencia este conjunto de dispositivos de um computador "convencional", como conhecido pela maioria das pessoas, o seu projeto baseado em um conjunto dedicado e especialista constitudo por hardware, software e perifricos.
Um Sistema Embarcado (Embedded System), pela sua natureza especialista, pode ter inmeras aplicaes. Podem-se ter sistemas embarcados para controle de freios de um veculo automvel, em que esse sistema deve gerenciar certos perifricos de controle como um sensor. Em outro extremo funcional tm-se os terminais de atendimento do Sistema nico de Sade (SUS) que fazem leitura do Sistema Carto Nacional de Sade (SCNS) ou os terminais de leitura do SMARTCARD empregado no sistema de transporte urbano de Salvador.
O projeto deste tipo de sistema computacional extremamente complexo, por envolver conceitos at agora pouco analisados pela computao de propsitos gerais. Por exemplo, as questes da portabilidade e do limite de consumo de potncia sem perda de desempenho, a baixa disponibilidade de memria, a necessidade de segurana e confiabilidade, a possibilidade de funcionamento em uma rede maior, e o curto tempo de projeto tornam o
20
24
desenvolvimento de sistemas computacionais embarcados uma rea especfica de pesquisa (WOLF, 2001). No contexto atual de competitividade industrial, seguindo-se a lei de Moore 21 , tem-se disposio o dobro de transistores a cada 18 meses (MOORE, 1965). Conseqentemente, sistemas dedicados com milhes de transistores devem ser projetados em poucos meses (MAGARSHACK, 2002). Para isto, tem sido adotado o paradigma de projeto baseado em plataformas (KEUTZER, 2000). Uma plataforma uma arquitetura de hardware e software especfica para um domnio de aplicao (DUTTA, 2001) (DEMMELER, 2001)(PAULIN, 1997), mas altamente parametrizvel (no nmero de componentes de cada tipo, na estrutura de comunicao, no tamanho da memria, nos tipos de dispositivos de E/S, etc.). Esta estratgia viabiliza o reuso (KEATING, 2002) de componentes (ou ncleos)
(BERGAMASCHI, 2001) previamente desenvolvidos e testados, o que reduz o tempo de projeto. O reuso pode ser ainda reforado pela adoo de padres (VSIA, 2003) na arquitetura e projeto dos sistemas.
O projeto de sistemas embarcados toma sempre como base um ou mais processadores. Embora esta soluo parea extremamente conservadora do ponto de vista de inovao, ela traz enormes vantagens do ponto de vista operacional. Primeiro, o fator de escala. Como os microprocessadores so encontrados em milhares de projetos, seu custo dilui-se entre muitos clientes, s vezes at competidores entre si. Mais ainda, uma vez que uma plataforma baseada em processador esteja disponvel dentro de uma empresa, novas verses de produtos podem ser feitas pela alterao do software da plataforma. A personalizao do sistema d-se atravs do software de aplicao, que toma atualmente a maior parte do tempo de projeto. Alm destas vantagens competitivas, h ainda o fator treinamento de engenheiros, j que estes geralmente se formam com conhecimentos de programao de microprocessadores.
Como pde-se perceber, os Sistemas Embarcados encontram-se cada vez mais presentes em nosso dia-a-dia e com uma utilizao e importncia crescente torna-se necessrio estudos na rea de software bsico suportado. No mesmo sentido, a escolha de um Sistema
21
Lei de Moore. Formulada por Gordon Moore em 1965, trs anos antes que ele ajudasse a criar a
fabricante de chips Intel. Moore afirmou que o nmero de transistores que poderiam ser alojados em uma determinada rea de silcio duplicaria a cada dois anos. Posteriormente, reduziu o prazo a 18 meses.
25
Operacional(S.O) leve, tolerante a falhas e que suporte o desenvolvimento de aplicaes de forma simples muito importante.
Entre as vantagens do uso desse tipo de sistema, o reuso de componentes empregados na computao tradicional, um de seus principais atrativos, pois aproveitam toda a vantagem da modularidade e versatilidade de sistemas embarcados livres para desktops e servidores. Esses sistemas utilizam bibliotecas compartilhadas, ferramentas de desenvolvimento como compiladores e depuradores e Kernel do sistema operacional. Existem alguns tipos de Kernel podem ser utilizados, por exemplo.
Kernels livres para sistemas embarcados Linux: o mais popular, suporta vrias arquiteturas, dispositivos e protocolos e excelente para usurios Linux; Kernels livres para sistemas embarcados uClinux: Usado principalmente para sistemas embarcados menores e de baixo custo, utilizado em aplicaes padres para Linux embarcado com patches 22 para atender restries especiais de memria e muito prximo do Linux embarcado tradicional;
Kernels livres para sistemas embarcados NetBSD 23 : Sistema BSD 24 altamente portvel, requisitos mnimos de armazenamento e RAM 25 similares aos do Linux; Kernels livres para sistemas embarcados eCos 26 : Sistema embarcado de tempo real
22
Patches. Ou no singular Patch. uma diferena entre dois elementos, leia-se atualizao, sendo que
NetBSD. Foi a primeira distribuio livre, verso Open Source do BSD, sistema operacional Unix-like,
BSD. O Berkeley Software Distribution (BSD) um Sistema Operacional UNIX desenvolvido pela
Universidade de Berkeley, na Califrnia, durante os anos 70 e 80. Atualmente, o BSD no um nico Sistema Operacional, mas sim uma larga famlia derivada do original, sendo os mais conhecidos membros da famlia: 4.4BSD (ltima verso do BSD original), 386BSD, FreeBSD, NetBSD, OpenBSD, BSDI (anteriormente BSD/OS), e Darwin (que serve como base ao Mac OS X).
25
RAM. Do ingls Random Acess Memory. a memria disponvel para uso das aplicaes e
processamentos. Seu contedo voltil perdido sempre que o computador desligado. A quantidade de RAM, cujo limite determinado pelo sistema operacional, um dos componentes que contribuem para a capacidade de processamento de um computador.
26
eCos. embedded Configurable operating system. Open Source, livre de royalty, sistema operacional
de tempo real direcionado para sistemas embarcados e aplicaes com apenas um processo derivando multiplas threads.
26
bem leve, provido pela Red Hat / Cygnus solutions 27 , compatvel com a maioria das aplicaes Unix e Linux.
Sistemas Embarcados so sistemas computacionais especialistas. Estes sistemas so constitudos por um conjunto hardware-software-perifrico e, de um modo geral, so responsveis por uma funo especfica ou um conjunto restrito de funes especficas e corelacionadas (GUPTA, 2000).
A denominao "embarcado" vem do fato de que estes sistemas so projetados geralmente para serem independentes de uma fonte de energia fixa como uma tomada ou gerador. Estes sistemas podem ser projetados para pequenos dispositivos. Entretanto, essa caracterstica potencialmente a mais restritiva para um Sistema Embarcado. Um projeto para essa classe de sistema computacional deve levar principalmente em considerao questes de consumo de energia, uma vez que a arquitetura utilizada utiliza baterias como fonte de energia.
Energia deve ser consumida otimizadamente, pois, como citado, a arquitetura envolvida possui restries da mesma; Memria pequena se comparada s memrias utilizadas em PCs.
27
Cygnus Solutions, originalmente Cygnus Support, foi fundada em 1989 por John Gilmore, Michael
Tiemann e David Henkel-Wallace para fornecer suporte comercial para software livre. Seu lema era: "Making free software affordable". Cygnus um acrnimo recursivo para "Cygnus, Your GNU Support".
27
Segundo a enciclopdia Wikipdia 28 , o primeiro sistema embarcado moderno reconhecido foi o Apollo Guidance Computer desenvolvido por Charles Stark Draper no laboratrio instrumental do Massachusetts Institute of Technology(MIT) na dcada de 60. Cada vo para a lua possuam dois dele, que controlam o sistema de orientao inercial.
J o primeiro sistema embarcado produzido em massa foi o computador guia (computer guidance) produzido para o mssil Minuteman 29 tambm na dcada de 60. Este sistema tem como principal funo orientar o mssil, tornando-o mais preciso.
Nessa poca tambm existia um pequeno programa de controle funcional de telefones. Logo este pequeno programa estava sendo utilizado em outros dispositivos, entretanto de forma customizada, e no somente destinado para o dispositivo original do projeto.
Posteriormente, com o advento de microprocessadores especialistas, foi possvel desenvolver software especfico para os variados tipos de processador. Os programas eram escritos em linguagem de mquina. (MAXWELL, 1999)
J na dcada de 1970 comeavam a surgir bibliotecas de cdigos e pacotes de sistemas operacionais direcionados para Sistemas Embarcados especficos, com processadores especficos. Neste perodo linguagem C comeou a ser utilizada para construo de Sistemas Operacionais, como viria a acontecer com o Linux.
Este foi o trampolim para o avano tecnolgico subseqente. O avano tecnolgico, principalmente em telecomunicaes, ocorrido nos anos seguintes tornou de fundamental
28
Mssil Minuteman. Mssil nuclear norte americano contendo o primeiro sistema embarcado produzido
em escala, teve inicio de sua produo em 1962 (Minuteman I), 1965 (Minuteman II), 1970 (Minuteman III), hoje possui cerca de 500 Minuteman III em silos de msseis espalhados em F.E. Warren Air Force Base, Wyoming, Malmstrom Air Force Base, Montana, e Minot Air Force Base, North Dakota. Tem o custo de produo aproximado de $7,000,000.
28
importncia a implementao de Sistemas Embarcados para as mais variadas tarefas. Desde o controle de um rob em uma montadora de automveis aos cada vez mais minsculos celulares, o Sistema Operacional tem papel crucial para a performance do sistema como um todo no mundo atual. (PETERSON, 1981)
2.3 Caractersticas
Como dito anteriormente, Sistemas Embarcados so especialistas. Conseqentemente, o nmero e as particularidades dos sistemas operacionais correspondentes variam na mesma proporo.
O projeto de um sistema especialista, entretanto, apresenta a caracterstica de otimizao potencialmente prxima do timo, em todos os "planos" do projeto. Em decorrncia dessa caracterstica os Sistemas Embarcados avanam no sentido de maximizao da performance e processamento em tempo real.
Uma preocupao constante em um projeto de Sistema Embarcado aborda a questo de energia utilizada pelo sistema. Como j foi citado, as arquitetura dos Sistemas Embarcados so tipicamente baseadas em fontes de energia rapidamente esgotveis como pilhas e baterias. Nesse sentido, projetar um Sistema Operacional (S.O) para tal sistema deve implementar: Polticas de paralelismo de execuo restritas como o pipeline 30 clssico em que so executados simultaneamente estgios distintos de instrues distintas (REIS, 1999); O tamanho da memria fator fundamental na performance de um Sistema Embarcado como um todo. Neste aspecto, por uma questo de limitao tecnolgica, os dispositivos envolvidos no podem dispor de muita memria, o que pode acarretar em um impacto negativo em tarefas corriqueiras do Sistema Operacional (S.O) como alocao de memria para processos;
30
29
Memrias potencialmente velozes acarretam problemas de desperdcio de potncia pelo aparecimento da "capacitncia parasita 31 " criada. (ROSA JNIOR, 2002)
Assim como num PC, os Sistemas Embarcados tambm devem gerenciar um conjunto de entidades de hardware. Entre outras temos: CPU, ROM 32 /RAM, memria no-voltil, relgio temporizador e dispositivos de I/O.
No existe padro na construo de Sistema Embarcado, j que cada software bsico deve ser capaz de suportar as caractersticas peculiares do Sistema Embarcado ao qual se destina. Dispositivos de hardware utilizados em um sistema comumente no so utilizados por um outro sistema. Alm disso, muitas vezes o prprio hardware especfico do sistema, no sendo padronizado.
As particularidades de um sistema de tempo real no so necessrias em todos os equipamentos que empregam um sistema embarcado, porm, elas podem tornar-se desejveis uma vez que o mesmo pode ser utilizado em equipamentos e dispositivos que tenham a necessidade de atender a rpidas requisies. Portanto, nem todos os sistemas embarcados so sistemas de tempo real, porm, desejvel que os sistemas embarcados possam implementar as caractersticas de real-time.
31
Capacitncia Parasita. A capacitncia parasita est presente sempre que houver uma diferena de
potencial entre dois materiais condutores separados por um dieltrico. Pelo fato de a capacitncia parasita poder causar acoplamento indesejado entre circuitos, um extremo cuidado deve ser tomado na disposio dos sistemas eletrnicos em placas de circuitos impressos.
32
ROM. A memria ROM (acrnimo para a expresso inglesa Read-Only Memory) um tipo de
memria que permite apenas a leitura, ou seja, as suas informaes so gravadas pelo fabricante uma nica vez e aps isso no podem ser alteradas ou apagadas, somente acessadas. So memrias cujo contedo gravado permanentemente. Mas possivelmente podem ser escritas por meio de mecanismos especiais.
30
Os sistemas operacionais de tempo real so aqueles empregados em dispositivos e equipamentos que necessitam de uma garantia de tempo mximo de resposta, ou seja, so utilizados no suporte s aplicaes submetidas a requisitos de natureza temporal.
Vrios produtos, que apresentam processadores embarcados, no necessitam que o tempo de processamento e resposta do sistema seja rigorosamente bem definido, no apresentando, portanto, a necessidade de um sistema operacional de tempo real. Por outro lado, alguns outros dispositivos necessitam que os resultados processados sejam gerados no momento correto, sob pena de comprometer o funcionamento total do sistema caso ocorra algum atraso ou imprevisto durante a execuo e o processamento. Aplicaes com requisitos de tempo real so cada vez mais comuns nos dias de hoje, variando muito com relao ao tamanho e complexidade. Entre os sistemas mais simples esto os controladores embarcados em utilidades domsticas, tais como lavadoras de roupa e videocassetes. Na outra extremidade do espectro, onde sistemas de real-time so empregados, encontram-se os sistemas militares de defesa e o controle de trfego areo. (OLIVEIRA, 2001)
Podemos citar como exemplos tpicos de utilizao dos sistemas em Tempo Real Hard os controles de processos industriais, nos transportes e na medicina, no marca-passo e etc.
Um sistema considerado Tempo-Real Soft quando construdo para reagir o mais rpido possvel aos estmulos. Entretanto, caso haja perda de eventos ou no consiga processar a tempo, no haver nenhuma conseqncia catastrfica em sua operao e sim um degradao na qualidade. Podemos citar como exemplos tpicos de Tempo Real Soft, sistemas de udio, vdeo e de voz sobre IP.
31
Tal qual o Unix um sistema operacional de tempo compartilhado projetado para maximizar o throughput 33 e dar uma parte do compartilhamento da CPU ao ambiente multiusurio.
Existe ainda um comportamento no determinstico do sincronismo de alguns servios do kernel como, alocao de memria e chamadas de sistema.
Montavista Linux Professional Edition (http://www.mvista.com); TimeSys (http://timesys.com) Include the latest Linux RT patches; In their LinuxLink platform; Koan Software (http://koansoftware.com); Hardreal time support with RTAI; SysGo (http://sysgo.com) Hardreal time support with RTAI.
No entanto, o Linux no foi projetado para ser um sistema operacional para uso em sistemas real-time (FARINES, 2000), at porque, alguns servios do referido sistema operacional rendem atrasos imprevisveis.
Um verdadeiro sistema operacional de tempo real precisa ser determinstico, para que possa garantir, assim, um tempo mximo de resposta (BARABANOV, 1996) (SANTO, 2001) (KADIONIK, 2002). Esta caracterstica define que o nmero de ciclos para a execuo de uma operao deve ser sempre o mesmo, podendo ocorrer uma interrupo caso necessrio. Por exemplo, suponhamos que existam 20 pessoas em uma discusso moderada, e que elas apenas possam falar e expor suas idias em seqncia. Digamos, tambm, que o sistema operacional seja o moderador da discusso. Agora, suponhamos que o participante nmero 5 esteja falando e a pessoa nmero 3 tenha alguma coisa muito importante para acrescentar. Em um sistema no-determinstico, ela ter que esperar que todos participantes falem, do nmero 6 at o nmero 20, que a vez seja passada novamente para os participantes nmero 1 e nmero 2, na seqncia, at que ela possa novamente assumir a palavra. Por outro lado, se o sistema operacional fosse determinstico, ele seria capaz de interromper a seqncia e passar a
33
Throughput. Velocidade com que um computador processa dados. uma combinao da velocidade de
processamento interno, velocidade dos perifricos (I/O) e eficincia do sistema operacional e outros software do sistema, todos funcionando juntos.
32
palavra para a pessoa nmero 3, permitindo que ela permanecesse com a mesma durante um perodo de tempo pr-estabelecido, tornando o sistema mais gil e mais eficiente.
Ento, o que realmente um sistema operacional de tempo real? A definio mais coerente sobre um sistema operacional real-time parece ser a que o define como um sistema capaz de tratar os eventos do mundo real, com um tempo de resposta definido, previsto e relativamente pequeno.
Contudo, o Linux est cumprindo firmemente as exigncias para adequar-se as necessidades dos sistemas em tempo real. Esperar a previsibilidade de 100% em kernel padro um fato certo em poucos anos. (LINUXDEVICES, 2007)
Apesar da peculiaridade tpica dos Sistemas Embarcados, existem no mercado algumas solues prontas. E, devido s suas caractersticas, este mercado se apresenta sem um "lder de vendas", pois ainda no existe o conceito de Sistema Embarcado de uso geral, apenas pequenos nichos de concorrncia.
A seguir tm-se pequenos textos a respeito de alguns Sistemas Embarcados disponveis no mercado. (ROSA JNIOR, 2002)
2.5.1 eCos
Embedded Configurable Operating System. Sistema Open Source desenvolvido pela Red Hat. um Sistema Operacional de Tempo Real, possuindo dispositivos de gerenciamento de processos tais como timers, schedulers e controle de interrupo. Este sistema normalmente
33
utilizado em dispositivos de pouca memria como players de udio e impressoras laser. Vantagem: suporte a vrias arquiteturas (REDHAT, 2003).
2.5.2 NetBSD
Baseado em Unix. Este tambm um sistema embarcado Open Source. Uma desvantagem em relao a outros Sistemas Embarcados a sua relativa necessidade de memria podendo chegar at 16Mb de RAM. Desta forma, ele se apresenta como uma boa opo para "rodar" em roteadores e outros dispositivos de rede que possuem, de modo geral, boa quantidade de memria disponvel.
Lanado em 1996 pela Microsoft, interessada num nicho sem lderes de mercado at ento. Utiliza o Windows 34 como base de desenvolvimento e no Open Source. Tamanho relativamente compacto e possibilidade de incorporar novos mdulos/componentes (WINDOWS EMBEDDED, 2007).
34
Windows. Microsoft Windows ou Windows um Sistema Operacional muito popular, criado pela
Microsoft. A Microsoft comeou o desenvolvimento de um Gerenciador de Interface (subseqente renomeado Microsoft Windows) em setembro de 1981. O Windows s comea a ser tecnicamente considerado como um SO a partir da verso Windows NT, lanada em Agosto de 1993. O que havia antes eram sistemas grficos sendo executados sobre alguma verso dos sistemas compatveis com DOS, como MS-DOS, PC-DOS ou DR-DOS. Somente o MS-DOS era produzido pela prpria Microsoft.
34
Sistema Operacional tambm baseado em Windows, de cdigo fechado. Consideravelmente grande ocupao de memria, no sendo indicado para dispositivos com memria restrita como aparelhos de mo.
2.5.5 uClinux
O Embedded Linux Microcontroller um Sistema Embarcado de cdigo aberto criado em 1998 e completamente voltado a Sistemas Embarcados. Possui kernel de apenas 900Kb e suporte ao protocolo TCP/IP, entre outros protocolos de rede, alm de sistemas de arquivos diversos como NFS 35 e FAT16/32 36 , entre outros (UCLINUX, 2007).
Este sistema, por ser baseado em Linux, mantm sua estabilidade e portabilidade. Outra vantagem do uClinux o suporte a vrias arquiteturas (MAXWELL, 1999).
35
NFS. Network File System. Sistema de compartilhamento de arquivos em rede criado pela Sun
Microsystems para Unix. Permite: acesso a arquivos, execuo de programas e visualizar estatsticas do computador remoto.
36
sistema de arquivos desenvolvido para o MS-DOS e usado em verses do Microsoft Windows at (e inclusive) o Windows Me. A Tabela de Alocao de Ficheiros(Arquivos) um mapa de utilizao do disco ou disquete. Graas a ele, o Sistema Operacional capaz de saber exatamente onde um determinado ficheiro est armazenado. Existem duas verses do sistema FAT: FAT16 (para OS 16 bits ou 32 bits) e FAT32 (s para SO a 32 bits); a diferena mais visvel entre as duas verses que FAT32 suporta nomes de ficheiros longos (at 256 caracteres), enquanto o FAT16 suporta apenas nomes de arquivos curtos (at 8 caracteres + extenso).
35
2.5.6 OpenWRT
A distribuio OpenWRT e baseada no Embedded Linux Microcontroller Project (www.uclinux.org). Este sistema ter um destaque, pois ser utilizado nesta monografia. (OPENWRT, 2007)
O OpenWRT uma distribuio Linux para Sistemas Embarcados, em que seu desenvolvimento dispe de um sistema de arquivos totalmente escrito com gerenciamento de pacotes, e no apenas um firmware simples com um nico processo, isso propicia uma grande facilidade na seleo e configurao das aplicaes fornecidas e permite que o colaborador/usurio customize o dispositivo usando apenas pacotes. Para o colaborador o OpenWRT a estrutura ideal para construir uma aplicao sem ter a preocupao de construir um firmware completo em torno dela. Para o usurio isto significa a habilidade de total customizao, para utilizar o dispositivo de maneira nunca antes vista.
Com a liberao dos cdigos fontes Linux da srie de roteadores Linksys WRT54G/GS surgiram um grande numero de firmwares modificados para estender as funcionalidades em vrias maneiras. Esses firmwares continham 99% de cdigos conservados e 1% de funcionalidades adicionadas, e cada projeto tentou seguir um determinado segmento de mercado com as funcionalidades que forneceu.
Era freqentemente difcil encontrar um firmware com a combinao da funcionalidade desejada; Todos os firmwares foram baseados nas fontes originais de Linksys que seguiam o desenvolvimento GNU/Linux.
O desenvolvimento do OpenWRT se deu de forma diferente, ao invs de comear a partir dos fontes do Linksys, o desenvolvimento comeou em um estado limpo dos cdigos fontes, com apenas cdigos fontes base. Pea por pea o software foi montado trazendo as funcionalidades de volta, como no firmware padro da Linksys, usando verses recentemente disponveis.
36
Com o OpenWRT os pequenos dispositivos tornam-se mini PC Linux, possuindo praticamente todos os comandos Linux tradicionais e com um sistema de gerenciamento de pacotes para facilmente carregar um software ou caractersticas extras.
Porque GNU/Linux nos d o poder fazer o que ns necessitamos com ferragem barata e evitar o software proprietrio, de cdigo fechado. O OpenWRT o firmware baseado no Linux mais rpido disponvel para vrios roteadores sem fio. No momento a distribuio contem mais de 100 pacotes de software. Alm disso, a comunidade de OpenWRT fornece os mais variados pacotes add-on.
O projeto comeou em janeiro 2004. As primeiras verses de OpenWrt foram baseadas em fontes de Linksys GPL para WRT54G e no buildroot do projeto uclibc. Esta verso foi definida como OpenWrt verso estvel e estava prpria para uso. H ainda muitas aplicaes de OpenWrt, como os Freifunk-Firmware ou o Sip@Home, que so baseados nesta verso.
No comeo de 2005 alguns novos desenvolvedores se juntaram a equipe. Aps alguns meses de desenvolvimento fechado a equipe decidiu publicar as primeiras verses experimentais do OpenWrt. As verses experimentais usam um sistema bastante customizado da construda baseada na verso 2 do buildroot, o buildroot2, tambm do projeto uclibc. OpenWrt usa fontes oficiais do kernel GNU/Linux e apenas adiciona patches para o sistema de chip e drivers de interface de rede. O codename da primeira liberao de OpenWrt White
37
Russian, um cocktail popular. Atualmente, o desenvolvimento da linha White Russian terminou com a liberao de OpenWrt 0.9.
O desenvolvimento da prxima verso j est ocorrendo no repositrio de cdigos fontes da equipe OpenWRT. Conter suporte a muitas outras placas embarcadas. Seu codename Kamikaze.
A Sun, que em 1991 iniciou seus projetos de olho na nova era de computadores sob controle dos usurios vem at hoje desenvolvendo novas ferramentas e sistemas que so utilizados em nosso dia-a-dia. Compilados em Java Virtual Machines (JVM) bytecode, o mesmo somente roda em sistemas com o JVM implementado. (JAVA SE EMBEDDED, 2007)
Possui fcil integrao entre o cdigo Java e a linguagem nativa. Isto o torna sistemas simples, orientados ao objeto, com suporte a protocolos de rede, robusto, seguro, de arquitetura neutra, porttil, de alta performance, multithreaded e dinmico.
O Java esconde as especificaes dos dispositivos e do sistema embarcado; Fornece um numero de caractersticas alm do oferecido pelo sistema embarcado; Ferramentas de rede interopervel; Simplifica o desenvolvimento de produto. O software pode facilmente ser desenvolvido em estaes de trabalho; Pode-se reutilizar o cdigo; Bytecode mais compacto.
Sua interface nativa (JNI Java Native Interface) interage com o hardware atravs do JVM e operado com aplicaes e bibliotecas escritas em outras.
38
No possui cdigo fonte aberto; Licenas de uso comercial e suporte so pagos; No depende somente do JVM para funcionamento. Necessite-se de outros mdulos como as bibliotecas JDK; Metodologia sem documentao.
Contudo, o Java ainda considerado pesado para algumas aplicaes devido ao overhead gerado por este sistema.
Sobre licenas em sistemas embarcados livres, temos os sistemas que permitem e os sistemas que no permitem aplicaes proprietrias. Entre os sistemas que permitem aplicaes proprietrias, podemos citar: Biblioteca C (LGPL), Bibliotecas compartilhadas (LGPL / BSD), Aplicaes do tipo BSD (podem ser proprietrias) e GPL (podem coexistir sem modificaes com aplicaes proprietrias, mas necessrio fornecer o cdigo fonte para o usurio). Entre os sistemas que no permitem aplicaes proprietrias, temos o Kernel Linux GPL (apesar de ser cada vez menos tolerados aplicaes proprietrias, no impe restries de licena em bibliotecas ou aplicaes) e bibliotecas compartilhadas ou GPL. (WARFIELD, 1999)(GNU LICENSES, 2007)
39
Inovao e valores agregados. A possibilidade de focar o uso no diferencial do produto, por ter vrios componentes prontos para uso em grande parte do sistema; Implementao das caractersticas crticas necessrias. No necessrio aguardar a implementao de algum; Inovao constante. As caractersticas evoluem algumas vezes antes mesmo que voc precise delas. Logo possvel portar o Linux para uma nova arquitetura inovadora;
Qualidade de Software. Desenvolvedores de componentes chaves e cdigos so excelentes programadores; Software proprietrios. Com isso o desenvolvimento de software completamente fechado; Controle para os desenvolvedores. Liberdade irrestrita para uso do software, para tomar decises a respeito do sistema, para escolher entre vrias alternativas tcnicas e sem caixas pretas no sistema que no podem ser corrigidas, modificadas ou melhoradas;
Flexibilidade. Possibilidade de personalizao, mltiplas aplicaes disponveis, possibilidade de realizao de tarefas especializadas com baixo custo; Escolhas. Possibilidades de substituio de componentes mesmo aps o trmino das etapas do desenvolvimento, muitas possibilidades de escolha para a mesma funo, muitas ferramentas de desenvolvimento teste, escolha do S.O para desenvolvimento, GNU/Linux, Unix e Windows, sem necessidade de trocar o S.O do desktop.
Alm dessas vantagens citadas, voc ter acesso s fontes e interfaces de baixo nvel, conhecendo detalhes a respeito do seu prprio sistema, chances reais de encontrar a causa principal dos problemas; voc ter facilidade de desenvolvimento, possibilidade de modificar e reusar cdigo existente se estiverem desenvolvendo com uma licena compatvel; recursos e
40
suportes on-line disponveis; voc tem acesso direto aos desenvolvedores, com possibilidade de tirar dvidas em tempo real e entender as tomadas de decises. (WARFIELD, 1999)
Nos sistemas proprietrios, ao final do perodo de avaliao voc tem que pagar ou perder tudo que implementou, j nas contribuies para projetos abertos, voc no tem que fazer nova implementao em caso de mudana para outra companhia.
Com isso, voc tem custos reduzidos, liberdade e iniciativa para iniciar o projeto imediatamente, sem a necessidade de aprovao da gerncia ou compra de software, requisio de verses de avaliao, etc.
Outra diferena entre sistemas proprietrios e projetos abertos, que no primeiro, sempre vem com seus prprios termos de licenciamento. No necessrio perder tempo tentando entendelos ou procurando por armadilhas antes de aceit-lo. J licenas softwares livres (SL) so mais fceis de entender. A GPL foi escrita por um programador (e ento revista por um advogado). (GNU LICENSES, 2007)
Voc dispe de controle em suas decises tcnicas, em suas criaes, aplicaes e dispositivos e escolha de fornecedores e vendedores; Tem reduo de custo, pois no tem royalties para pagar, tem reuso mximo de cdigos e menor tempo para chegar ao mercado; Alm disso, tem posse de sua plataforma, desde que voc respeite os termos da licena SL, ningum jamais ser capaz de revogar seus direitos para continuar a usar a sua plataforma ou ferramentas. Sem possibilidade de perder o seu investimento devido violao de licena.
Inclua todas as vantagens relacionadas para gerentes de sistemas embarcados, alm dessas, menos trabalho para o departamento de compras de software, e menor custo de litgio;
41
Construir dispositivos abertos baseados SL pode gerar uma imagem muito positiva da sua empresa para a comunidade de desenvolvedores de SL Facilita a atrao de desenvolvedores talentosos;
SL garante que seus investimentos de logo prazo so seguros e podem lhe levar adiante.
Reduo no custo de produo, possibilidade de criar e testar a produo com ferramentas usando os mesmos codecs 37 ou bibliotecas que esto nos players embarcados (codecs sem patentes ou royalties).
Propriedades dos dados, graas aos formatos abertos e aos SL; Qualidade e confiabilidade; Segurana e privacidade; Dispositivos cheios de caractersticas e uso agradvel. Biblioteca de software relativamente grande; Sistemas personalizados (se atualizao de firmware 38 estiver disponvel).
Mudana de gerenciamento com atualizaes e verses freqentes de SL (alvo mvel). Crticas a congelar componente cedo demais; Freqentemente precisa-se escolher entre vrias solues. Falta de tempo dos desenvolvedores para investigar solues e seguir as novidades do SL; Necessidade de escolher solues duradouras. Necessidade de estimar o tamanho da comunidade de desenvolvedores e usurios quo ativos o desenvolvimento, a importncia da tecnologia subjacente, disponibilidade de prestadores de servio;
37 38
Codecs. Contrao do termo "COder-DECoder". Algoritmo de compresso/descompresso. Firmware. Programao em hardware, programa ou dados de computador que so armazenados
42
Linux um sistema operacional de propsito geral, suportando sistemas que vo do pequeno ao enorme. Desta forma, ele pode no ser timo e pode no ser capaz de bater uma soluo personalizada bem ajustada;
Linux pode requerer uma quantia significativa de ajustes pra faz-lo suportar os requerimentos especficos do seu sistema embarcado. Por outro lado, no ser timo pode ser valorizado devido aos custos menores de desenvolvimento;
Questes legais: validade da GPL no pas local, cdigo misto, legitimidade dos donos da propriedade, patentes de software; Excesso de atrao: engenheiros desejam usar SL, mesmo quando ele no a melhor soluo.
2.9 Consideraes
Notamos que os sistemas embarcados sofrem restries que no so to relevantes como em sistemas de computao convencionais, principalmente os que dizem respeito a consumo de energia, disponibilidade de memria e espao utilizado. Devido as restries, os sistemas embarcados precisam ser geis e enxutos.
No existe um sistema embarcado dominante. Existem sistemas que atendem aplicaes especficas. Por exemplo, o OpenWRT se destaca nesse tipo de sistema, pois possui uma maior abrangncia em aplicaes e que vem se tornando de fato, uma grande oportunidade de tornar seu roteador em uma soluo completa.
Hoje os sistemas embarcados se encontram em vrios elementos de nosso cotidiano e tendncia de aumentar cada vez mais.
43
A troca de informaes pela internet representa uma forma de sobrevivncia para os negcios nos dias atuais. Pequenas e mdias empresas esto cada vez mais utilizando a Internet como uma forma de expanso. O sistema de Firewall uma das possibilidades para conseguir proteger as redes destas corporaes conectadas, de ataques. O Linux um sistema operacional gratuito que possibilita a configurao de um firewall. Apresenta-se um sistema de firewall baseado no Linux com o kernel reduzido.
3.1 Firewall
O Firewall um programa que tem como objetivo proteger a mquina contra acessos no permitidos, trfego indesejado, proteger servios que estejam rodando na mquina e bloquear a passagem de coisas que voc ou sua empresa no deseja receber (como conexes vindas da Internet para sua segura rede local, evitando acesso aos dados corporativos de uma empresa ou a seus dados pessoais). (RUSSEL, 2000) (SCHUBA, 1997)
Firewalls so largamente utilizados hoje em dia, sendo imprescindvel em basicamente todas as solues que utilizam conexo direta ou indireta com a grande rede internet, sendo primordial e necessrio a utilizao em mquinas pessoais, junto com o sistema operacional da mesma, com o grande aumento de tcnicas de invaso, de vrus, worms 39 , spywares 40 e
39
computadores, propaga-se de forma autnoma, o vrus infecta um programa e necessita deste programa hospedeiro para se propagar, o worm um programa completo e no precisa de outro programa para se propagar, contaminando diversos computadores geralmente conectados em rede. O worm mais conhecido (e cujo nome deu origem ao termo) atacou quantidades imensas de computadores na Internet durante os anos 80.
40
Spyware. uma categoria de software malicioso que objetiva interceptar ou fazer exame das atividades
44
outros, praticamente impossvel sentir que suas informaes digitais esto seguras sem um firewall. (GARFINKEL, 1996)
O firewall agrupa um conjunto de tcnicas como traduo de endereos (Network Address Translation NAT), servios de Proxy 41 , Filtragem de pacotes e redes virtuais privadas (Virtual Private Network VPN) que somadas constroem um sistema definido atravs de uma poltica de segurana da rede. (RUSSEL, 2000)
Existem diversas formas de juntar estes componentes formando o que denominado de arquiteturas de firewall (CHAPMAN, 1995)(SCHUBA, 1997), que podem ser basicamente trs: Dual-Homed Host, Screened Host e Screened Subnet. A seguir, ser falado um pouco sobre cada uma delas, pois so as arquiteturas de firewalls mais comuns, entretanto h muitas outras variaes que podem ser usadas. (RANUM, 1992)
Esta arquitetura construda sob uma mquina denominada Dual-Homed Host, que se conecta as redes interna e externa (Internet), e poderia atuar como roteador entre elas, mas possui a funo de roteamento desabilitada. Assim, sistemas dentro de uma das redes podem se comunicar com o Dual-Homed Host, mas no podem se comunicar diretamente com outra
41
Proxy. Um servidor que atua como intermedirio entre um cliente e outro servidor. Normalmente
utilizado em empresas para aumentar a performance de acesso a determinados servios ou permitir que mais de uma mquina se conecte Internet. Proxies mal configurados podem ser abusados por atacantes e utilizados como uma forma de tornar annimas algumas aes na Internet, como atacar outras redes ou enviar SPAM.
45
rede. Portanto, um Dual-Homed Host pode fornecer servios apenas atravs de servidores proxy, ou permitir que usurios conectem-se diretamente a ele.
Nesta arquitetura, o firewall composto por um roteador e uma mquina chamada bastion host. Os servios so fornecidos a partir do bastion host que conectado apenas a rede interna, usando o roteador para separ-la da Internet, chamado screening router. Nesta arquitetura, a segurana principal feita por filtragem de pacotes. A filtragem de pacotes do screening router configurada de tal maneira que o bastion host seja a nica mquina da rede interna que recebe conexes da Internet. Portanto, o bastion host uma mquina que deve prover um alto nvel de segurana, j que poder sofrer constantes ataques.
Nesta arquitetura adicionada uma camada extra de segurana atravs da demilitarized network (DMZ), uma rede que isola a rede interna da externa (Internet). Nela, h dois roteadores screening routers. Um entre a rede DMZ e a rede interna, e outro entre a rede DMZ e a rede externa. Para atacar a rede interna nesta arquitetura o atacante teria que passar pelos dois roteadores. E mesmo que o atacante consiga invadir o bastion host, que fica isolado na rede DMZ, ele ainda ter que passar pelo roteador interno. O bastion host basicamente atua como servidor proxy para vrios servios, permitindo que clientes internos acessem servidores externos indiretamente. Ele tambm atua como servidor de email, ou os envia para determinados hosts da rede interna.
O roteador interno protege a rede interna da Internet e tambm da rede DMZ. Ele faz a maior parte da filtragem de pacotes do firewall, permitindo o estabelecimento de servios a partir de
46
clientes internos para servidores da Internet. Estes so servios que o seu site pode seguramente fornecer usando filtragem de pacotes ao invs de proxies.
O roteador externo protege a rede DMZ e a rede interna da Internet. Ele permite quase tudo que venha da rede DMZ passe atravs dele, e, em geral, faz pouca filtragem de pacotes. As regras de filtragem de pacotes para proteger as mquinas internas devero ser basicamente as mesmas em ambos os roteadores. As nicas regras de filtragem de pacotes que so realmente especiais no roteador externo so aquelas que protegem a rede DMZ. Mas geralmente no necessrio tanta proteo, pois o bastion host bem protegido com mtodos de segurana de host.
Uma poltica de segurana tpica para uma empresa conectada a Internet com servidores de FTP, SMTP, POP, HTTP, HTTPS e DNS, segue os requisitos de segurana abaixo: (ZWICK, 2000)
Todos os pacotes sero negados, a no ser que seja explicitamente especificado o contrrio; Bloqueio de todas as conexes iniciadas externamente, exceto os servios permitidos que sero redirecionados para seus respectivos servidores; Os servios de FTP, SMTP, POP utilizaro o IP Security para comunicao; Permisso de trfego ilimitado a partir da interface de loopback; Permisso de conexes iniciadas a partir da rede interna; Pacotes destinados ao firewall sero descartados exceto os da rede interna para o servio ssh; A rede interna sofrer Source Network Address Translation (SNAT 42 ) do tipo mascaramento;
42
SNAT. NAT de origem, utilizado junto as regras do Iptables na origem do pacote NAT, da mesma
forma que existe o SNAT, existe o DNAT (Destination Network Address Translation, ou NAT de destino).
47
Impedir ataques do tipo: o Syn flood 43 ; o IP spoofing 44 ; o Source Routed Options; o ICMP (redirect e destination unreachable), entre outros.
Rejeitar pacotes com endereos reservados exceto os definidos em suas interfaces; Pacotes ICMP tero tamanho mximo limitado quando destinados rede interna.
3.4 Iptables
O iptables um firewall em nvel de pacotes e funciona baseado no endereo/porta de origem/destino do pacote, prioridade, etc. Ele funciona atravs da comparao de regras para saber se um pacote tem ou no permisso para passar. Em firewalls mais restritivos, o pacote bloqueado e registrado para que o administrador do sistema tenha conhecimento sobre o que est acontecendo em seu sistema. (GARFINKEL, 1996)
Ele tambm pode ser usado para modificar e monitorar o trfego da rede, fazer NAT (masquerading 45 , source nat, destination nat), redirecionamento de pacotes, marcao de pacotes, modificar a prioridade de pacotes que chegam/saem do seu sistema, contagem de bytes, dividir trfego entre mquinas, criar protees anti-spoofing, contra syn flood, DoS, e
43
SYN flood. SYN flood ou ataque SYN uma forma de ataque de negao de servio (tambm conhecido
como Denial of Service - DoS) em sistemas computadorizados, na qual o atacante envia uma seqncia de requisies SYN para um sistema-alvo e no retorna o ACK confirmando a conexo.
44
Masquerading. O IP Masquerading uma maneira de utilizar uma mquina rodando Linux, com um
modem e uma placa de rede, como um roteador para redes de pequeno porte. Desta forma, voc pode conectar a sua rede domstica ou do escritrio, com computadores usando Windows, MacOS, Linux ou qualquer outro sistema operacional que oferea conexo TCP/IP, Internet, sem grandes investimentos.
48
outros. O trfego vindo de mquinas desconhecidas da rede pode tambm ser bloqueado/registrado atravs do uso de simples regras. As possibilidades oferecidas pelos recursos de filtragem iptables como todas as ferramentas UNIX maduras dependem de sua imaginao, pois ele garante uma grande flexibilidade na manipulao das regras de acesso ao sistema, precisando apenas conhecer quais interfaces o sistema possui, o que deseja bloquear, o que tem acesso garantido, quais servios devem estar acessveis para cada rede, e iniciar a construo de seu firewall. (GUIA FOCA, 2007)
O iptables ainda tem a vantagem de ser modularizvel, funes podem ser adicionadas ao firewall ampliando as possibilidades oferecidas. Este um firewall que tem possibilidades de gerenciar tanto a segurana em mquinas isoladas como roteamento em grandes organizaes, onde a passagem de trfego entre redes deve ser minuciosamente controlada.
Um firewall no funciona de forma automtica (instalando e esperar que ele faa as coisas por voc), necessrio pelo menos conhecimentos bsicos de rede tcp/ip, roteamento e portas para criar as regras que faro a segurana de seu sistema. A segurana do sistema depende do controle das regras que sero criadas por voc, as falhas humanas so garantia de mais de 95% de sucesso nas invases.
Enfim o iptables um firewall que agradar tanto a pessoas que desejam uma segurana bsica em seu sistema, quando administradores de grandes redes que querem ter um controle minucioso sobre o trfego que passam entre suas interfaces de rede (controlando tudo o que pode passar de uma rede a outra), controlar o uso de trfego, monitorao, etc.
Especificao de portas/endereo de origem/destino; Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens ICMP);
49
Suporte a interfaces de origem/destino de pacotes; Manipula servios de proxy na rede; Tratamento de trfego dividido em chains (para melhor controle do trfego que entra/sai da mquina e trfego redirecionado); Permite um nmero ilimitado de regras por chain; Muito rpido, estvel e seguro; Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal formados; Suporte a mdulos externos para expanso das funcionalidades padres oferecidas pelo cdigo de firewall; Suporte completo a roteamento de pacotes, tratadas em uma rea diferente de trfegos padres; Suporte a especificao de tipo de servio para priorizar o trfego de determinados tipos de pacotes; Permite especificar excees para as regras ou parte das regras; Suporte a deteco de fragmentos; Permite enviar alertas personalizados ao syslog sobre o trfego aceito/bloqueado; Redirecionamento de portas; Masquerading; Suporte a SNAT (modificao do endereo de origem das mquinas para um nico IP ou faixa de IPs); Suporte a DNAT (modificao do endereo de destino das mquinas para um nico IP ou fixa de IPs); Contagem de pacotes que atravessaram uma interface/regra; Limitao de passagem de pacotes/conferncia de regra (muito til para criar protees contra syn flood, ping flood, DoS, etc).
50
Existem trs tabelas possveis de serem utilizadas no iptables (IPTABLES, 2007): filter, nat e mangle. A tabela filter, a tabela padro, utilizada nos trfegos de dados comuns, sem ocorrncia de NAT. A tabela nat, utilizada para dados que geram outra conexo (exemplo: masquerading, source nat, destination nat, port forwarding, proxy transparente). A tabela mangle, utilizada para alteraes especiais de pacotes (exemplo: modificar o tipo de servio TOS). Na prtica, a tabela mangle no muito utilizada.
Cada tabela possui chains, e atravs delas podemos especificar a situao do tratamento dos pacotes, seja qual tabela for.
INPUT Consultado para dados que chegam mquina. Exemplo, pacotes cujo destino final a prpria mquina firewall.
OUTPUT Consultado para dados que saem da mquina. Exemplo, pacotes que saem da mquina firewall.
FORWARD Consultado para dados que so redirecionados para outra interface de rede ou outra mquina. Exemplo, pacote que atravessa a mquina firewall, cujo destino uma outra mquina. Este pacote no sai da mquina firewall e sim de outra mquina da rede ou fonte. Neste caso a mquina firewall est repassando o pacote.
PREROUTING Consultado para pacotes que precisam ser modificados antes de serem roteados. o chain ideal para realizao de DNAT e redirecionamento de portas.
POSTROUTING - Consultado quando os pacotes precisam ser modificados aps o tratamento de roteamento. o chain ideal para realizao de SNAT e IP Masquerading.
51
OUTPUT - Consultado quando os pacotes gerados localmente precisam ser modificados antes de serem roteados. Este chain somente consultado para conexes que se originam de IPs de interfaces locais.
Segue abaixo alguns exemplos de regras teis no iptables (VIVA O LINUX, 2007).
No arquivo firewall.sh , quadro 1, ser mostrado como se proteger do ping da morte, contra ataques de Syn-flood, DoS e outros seguindo os mesmos critrios de ataques, e como permitir acesso a determinados servios. Maiores descries diretamente no script.
1: 2: 3: 4:
IPTABLES=/sbin/iptables
# Protege contra os "Ping of Death": $ IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
5: 6: 7: 8: 9: 10: 11: # Permite repasse (NAT,DNAT,SNAT) de pacotes com o estado # e de estabelecidos e relacionados: $ IPTABLES -A FORWARD -m state --state # Protege contra os ataques do tipo "Syn-flood, DoS, etc": $IPTABLES -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT