Sistemas Embarcados em Segurança de Redes

Transcrição

Sistemas Embarcados em Segurança de Redes
FACULDADE SALESIANA DE VITÓRIA
PÓS-GRADUAÇÃO EM SEGURANÇA
DE REDES DE COMPUTADORES
FELIPE LOUREIRO DEBONI
RAFAEL FERREIRA BORBA
SISTEMAS EMBARCADOS EM
SEGURANÇA DE REDES – OPENWRT
VITÓRIA
2007
FELIPE LOUREIRO DEBONI
RAFAEL FERREIRA BORBA
SISTEMAS EMBARCADOS EM
SEGURANÇA DE REDES – OPENWRT
Monografia apresentada ao Curso de Pósgraduação
em
Segurança
de
Redes
de
Computadores da Faculdade Salesiana de
Vitória, como requisito parcial para obtenção
do título de Especialista em Segurança de
Redes de Computadores.
Orientador: Prof. M.Sc. Sérgio Nery Simões.
Co-orientador: Prof. M.Sc. Sérgio Teixeira.
VITÓRIA
2007
Dados Internacionais de Catalogação-na-publicação (CIP)
(Biblioteca da Faculdade Salesiana de Vitória, Espírito Santo, Brasil)
D287s
Deboni, Felipe Loureiro, 1982
Sistemas Embarcados em Segurança de Redes - OPENWRT / Felipe
Loureiro Deboni, Rafael Ferreira Borba. – 2007.
102 f. : il.
Orientador: Sérgio Nery Simões.
Monografia (pós-graduação em Segurança de Redes de
Computadores) – Faculdade Salesiana de Vitória.
1.Redes de Computadores - Segurança. 2. Sistemas Embarcados. 3.
OpenWRT. I. Rafael Ferreira Borba. II. Simões, Sérgio Nery. III.
Faculdade Salesiana de Vitória. IV. Título.
CDU: 004.7
FELIPE LOUREIRO DEBONI
RAFAEL FERREIRA BORBA
SISTEMAS EMBARCADOS EM
SEGURANÇA DE REDES – OPENWRT
Monografia apresentada ao Curso de Pós-graduação em Segurança de Redes de
Computadores da Faculdade Salesiana de Vitória, como requisito parcial para obtenção do
título de Especialista em Segurança de Redes de Computadores.
Aprovada em 11 de junho de 2007.
COMISSÃO EXAMINADORA
_____________________________________
Prof. M.Sc. Sérgio Nery Simões
Orientador
_____________________________________
Prof. M.Sc. Sérgio Teixeira
Co-orientador
_____________________________________
Prof. M.Sc. João Gomes da Silveira
Centro Federal de Educação Tecnológica do
Espírito Santo (CEFETES)
Eu, Felipe Loureiro Deboni, dedico este trabalho a minha
família por acreditarem no meu potencial e por me
disponibilizar toda ajuda no decorrer do curso, e por toda
minha formação acadêmica.
--Eu, Rafael Ferreira Borba, dedico este trabalho a minha
noiva, que me ajudou a permanecer forte nos períodos em
que a fraqueza se abatia sobre mim em relação ao curso e aos
amigos que aqui conquistei, cuja alegria, força de vontade e
companheirismo me incentivaram seguir a diante nesta
batalha.
AGRADECIMENTOS
Agradecemos aos professores Sérgio Nery Simões e Sérgio Teixeira pela colaboração e apoio
no desenvolvimento desse trabalho. Aos nossos pais, irmãos, companheiras e amigos, pelo
apoio dado desde o inicio do curso.
“A persistência é o caminho do êxito.”
(Chaplin)
RESUMO
Este trabalho apresenta conceitos e fundamentos sobre a customização do roteador Linksys
WRT54G com o firmware e mini distribuição Linux, OpenWRT, o que vem a ser um sistema
embarcado, mostrando histórico e exemplos, e também falando sobre segurança, comentando
as premissas de uma boa regra de firewall, buscando demonstrar ao longo do texto de forma
didática o passo-a-passo para instalação e configuração dos roteadores com o OpenWRT, no
intuito de aperfeiçoar as funções e limitações impostas pelo fabricante deste equipamento nos
serviços de NAT e Firewall.
Palavras-chave: Redes de Computadores – Segurança, 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: Ilustração da atualização via browser..................................................................... 70 Figura 4: Tela que obteríamos ao acessar o OpenWRT via telnet. ......................................... 71 Figura 5: Tela que obteríamos ao conectar no OpenWRT via Putty(SSH). ............................ 72 Figura 6: Tela de informações do OpenWRT na interface web. .............................................. 83 Figura 7: Tela sobre o WebIf do OpenWRT. ........................................................................... 84 Figura 8: Status de conexão 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: Configurações do sistema do OpenWRT na interface web. ................................... 88 Figura 12: Alterações de senha do OpenWRT na interface web. ............................................ 88 Figura 13: Instalação ou desinstalação de pacotes do OpenWRT na interface web. ............. 89 Figura 14: Atualização de firmware do OpenWRT na interface web. ..................................... 90 Figura 15: Configurações de rede do OpenWRT na interface web. ........................................ 91 Figura 16: Configurações da WAN do OpenWRT na interface web. ...................................... 91 Figura 17: Configurações wireless do OpenWRT na interface web. ....................................... 92 Figura 18: Configurações wireless avançadas do OpenWRT na interface web...................... 93 Figura 19: Configurações de hosts do OpenWRT na interface web. ....................................... 94 Figura 20: Configuração firewall do OpenWRT na interface web. ......................................... 95 LISTA DE TABELAS
Tabela 1: Características de hardware do sistema embarcado Linksys WRT54G. ................. 61 LISTA DE QUADROS
Quadro 1: Arquivo: /etc/firewall.sh ......................................................................................... 52 Quadro 2: Comando para adicionar o firewall à inicialização automática............................ 52 Quadro 3: Arquivo: /etc/firewall.sh ......................................................................................... 54 Quadro 4: Arquivo: /etc/hosts .................................................................................................. 54 Quadro 5: Arquivo: /etc/fwlib.sh .............................................................................................. 57 Quadro 6: Atualização por TFTP. ........................................................................................... 69 Quadro 7: Atualização 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 memória. ........................................................................... 73 Quadro 11: Comando para visualizar o conteúdo da memória............................................... 73 Quadro 12: Comando para setarmos as configurações do roteador....................................... 74 Quadro 13: Comando para pegar a informação do canal utilizado........................................ 74 Quadro 14: Comando para gravar as informações setadas na memória. ............................... 74 Quadro 15: Configurando com ip fixo a interface wan. .......................................................... 74 Quadro 16: Pegando a informação do método de utilizado na configuração ip. .................... 75 Quadro 17: Pegando a informação do ip da LAN. .................................................................. 75 Quadro 18: Pegando a informação da mascara da LAN......................................................... 75 Quadro 19: Comando para gravar as informações setadas na memória. ............................... 75 Quadro 20: Script firewall. Arquivo: /etc/firewall-up.sh ......................................................... 82 SUMÁRIO
1. INTRODUÇÃO ................................................................................................................... 15 1.1 Motivação....................................................................................................................... 17 1.2 Objetivo ......................................................................................................................... 20 1.3 Metodologia ................................................................................................................... 20 1.4 Organização do trabalho ................................................................................................ 22 2. SISTEMAS EMBARCADOS.............................................................................................. 23 2.1 Sistema Embarcado: o que é? ........................................................................................ 26 2.2 Pequeno Histórico .......................................................................................................... 27 2.3 Características ................................................................................................................ 28 2.4 Tempo Real em Sistemas Embarcados Linux................................................................ 29 2.5 Alguns Sistemas Embarcados Disponíveis .................................................................... 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 histórico ....................................................................... 36 2.6 Java em Sistemas embarcados ....................................................................................... 37 2.7 Sobre licenças em sistemas embarcados livres .............................................................. 38 2.8 Software livre em Sistemas Embarcados ....................................................................... 39 2.9 Considerações ................................................................................................................ 42 3. FUNDAMENTOS DE SEGURANÇA DA INFORMAÇÃO ............................................. 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 Política de Segurança ..................................................................................................... 46 3.4 Iptables ......................................................................................................................... 47 3.4.1 Características 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 Considerações ................................................................................................................ 57 4. CONHECENDO O LINKSYS WRT54G ............................................................................. 58 4.1 Trabalhos e soluções correlatas...................................................................................... 61 4.2 Considerações ................................................................................................................ 65 5. UMA PROPOSTA DE APLICAÇÃO DO OPENWRT EM REDES DE PEQUENO E
MÉDIO 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 Atualização por TFTP (Windows) .................................................................. 68 5.1.3.2 Atualização por TFTP (Linux) ........................................................................ 68 5.1.3.3 Atualização 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 utilização .................................................................................................... 95 5.3.1 Vantagem do OpenWRT para sua empresa:........................................................... 96 5.3.2 Desvantagem do OpenWRT para sua empresa: ..................................................... 96 5.4 Considerações ................................................................................................................ 97 6. CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS ............................................... 98 7. REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 99 15
1. INTRODUÇÃO
Vivemos em uma era de constantes mudanças tecnológicas com a evolução dos sistemas
eletrônicos, seja para uso pessoal, como celulares, ou na indústria automotiva. Os sistemas
embarcados 1 estão cada vez mais presentes em nosso cotidiano (ORTIZ, 2001).
A utilização de sistemas embarcados é de fundamental importância para o funcionamento de
vários equipamentos da vida moderna. Eles são encontrados nos mais variados dispositivos e
sistemas, desde simples brinquedos até equipamentos de última geração da indústria
eletroeletrônica. Alguns exemplos de aplicação de sistemas embarcados são os roteadores e
switches 2 de gerenciamento de redes em laboratórios de alto desempenho, os fornos de
microondas, os controles remoto de TVs, as impressoras e máquinas copiadoras, os players de
MP3, os sistemas de automação, 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 característica de funcionar automaticamente apresenta um sistema
embarcado controlando e gerenciando o funcionamento e a performance dos componentes e
dispositivos envolvidos.
Sistemas embarcados apresentam características em comum com os sistemas computacionais
de propósitos gerais, mas não possuem a uniformidade desses. Cada aplicação pode
apresentar requisitos diferentes de desempenho, consumo de potência e área ocupada, o que
vai acarretar em uma combinação distinta de módulos de hardware e software para atender
estes requisitos. (CARRO, 2003)
A demanda por equipamentos inteligentes e soluções dedicadas, capazes de apresentar
resultados
eficientes
para
os
problemas
cotidianos,
transforma
a
utilização
de
microprocessadores e sistemas embarcados em uma fatia muito atraente da computação.
1
Sistema Embarcado. Embedded System. É um sistema operacional especializado dedicado para tarefas
especificas.
2
Switches. Ou no singular switch. Também chamados de comutadores, possuem diversas portas assim
como os hub. A diferença é 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 irreversível. Esta necessidade tem atraído 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 milhões de
dólares em 2001 para 1.59 bilhões em 2005. (ORTIZ, 2001) Contudo não possuímos
mensurações sobre a afirmação 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 não
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 atraído a atenção de várias 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 restrições que não são tão relevantes aos sistemas
computacionais convencionais, como os computadores pessoais. Restrições como o uso de
energia sem prejudicar o desempenho, pouca memória disponível e previsibilidade são
algumas delas.
A arquitetura em que os sistemas embarcados residem também pode variar bastante, contendo
um ou mais processadores, memórias e interfaces para periféricos. Tomando como exemplos
os celulares, estes podem ter mais de uma memória: a do chip e a do próprio aparelho, e mais
3
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, Califórnia em 1981 por Jerry Fiddler.
5
Red Hat. A Red Hat, Inc. Fundada em 1993, é uma empresa dos Estados Unidos, que disponibiliza
soluções baseadas no sistema operacional GNU/Linux, incluindo várias distribuições. Em 2004 iniciou uma
separação do ambiente desktop em detrimento do ambiente empresarial, de onde nasceu o projeto afiliado
Fedora Core.
17
de uma interface: para câmera fotográfica integrada e outra para conectá-lo a um computador
pessoal. A estrutura de comunicação 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 necessário, como exemplo, podemos citar os sistemas de controle de freios
ABS ou os air-bags utilizados na indústria automotiva.
Vários fornecedores e pesquisadores de sistemas embarcados estão desenvolvendo novas
arquiteturas e aperfeiçoando seus sistemas, num esforço de melhorar a performance dos
mesmos, e assim, conquistar um lugar de destaque no mercado com novas tecnologias e
soluções. (SANTO, 2001) O que vem se concretizando nos dias atuais. (WINDOWS
EMBEDDED, 2007)(HTC SMART MOBILE, 2007)
1.1 Motivação
Profissionais de TI têm grande dificuldade em dedicar um computador apenas para fazer
NAT 6 e Firewall 7 em pequenas e médias empresas com verbas bem restritas. Uma solução
seria comprar um roteador para este fim, que realizaria apenas tarefas básicas. Porém, este
possui limitações, não sendo possível em seu padrão de fabrica exercer tarefas como um
firewall avançado.
6
NAT. Network Address Translation - Mecanismo que permite a conexão de redes privadas à rede
Internet sem alteração dos endereços reservados. Através de um NAT server os endereços de rede reservados são
convertidos para endereços públicos quando se torna necessário o acesso à rede Internet. Com este mecanismo,
diversos computadores com endereços internos podem compartilhar um único endereço IP.
7
Firewall. É o nome dado ao dispositivo de rede que tem por função regular o tráfego de rede entre redes
distintas. Impedir a transmissão de dados nocivos ou não 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 combinação de ambos. A instalação depende do tamanho da rede, da complexidade das regras que
autorizam o fluxo de entrada e saída de informações e do grau de segurança desejado.
18
Focados nesta dificuldade é desenvolvido esse trabalho, ou seja, ao invés de um computador
dedicado apenas a estas tarefas utilizaremos um roteador Linksys WRT54G 8 , que possui
limitações, mas graças a contribuição da comunidade Open Source 9 foi desenvolvido com
base no Sistema Embarcado uClinux 10 a distribuição OpenWRT 11 , que possui toda robustez e
segurança do Linux.
Com a solução proposta poderemos converter um simples roteador Linksys WRT54G que
desempenha tarefas básicas de roteamento e controle de web para um avançado servidor
Linux que possibilita a instalação 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 invés 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.
8
Linksys WRT54G. É um dos mais famosos roteadores sem fio da Linksys. Por seu firmware ter código
aberto, desenvolveu-se toda uma comunidade de desenvolvedores de firmwares alternativos, agregando funções
adicionais ao equipamento. O equipamento possui as variantes WRT54GL e WRT54GS, ambas em produção.
9
Open Source. Conceito de distribuição de software, que estabelece como fundamentais, os princípios de
desenvolvimento compartilhado, distribuição na forma de código 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, também de forma gratuita. A integridade e notoriedade dos
autores é preservada, sendo registrado o nome de cada um dos colaboradores nas versões subseqüentes.
10
uClinux. Sistema Embarcado de código aberto criado em 1998 e completamente voltado a Sistemas
Embarcados.
11
OpenWRT. Distribuição Linux baseada no uClinux. Este sistema terá um destaque, pois será utilizado
nesta monografia.
12
Iptables. Firewall em nível de pacotes.
13
Apache. O mais conhecido dos servidores da Internet. É responsável pela hospedagem de mais de 50%
dos sites existentes no mundo inteiro. O nome é um trocadilho, com a similaridade fonética da expressão “a
patchy server” (“um servidor remendado”, em inglês). Isto porque, seu programa foi sendo aperfeiçoado pela
contribuição (patches/remendos) de diversos colaboradores.
19
Ainda comparando com um computador tradicional, nota-se a diferença no espaço ocupado
pelas soluções, enquanto o roteador consegue ocupar apenas o espaço de um livro, o gabinete
de um computador tradicional necessita de um espaço bem maior, e se consideramos o
monitor, teclado e mouse, o espaço aumenta ainda mais.
Como um grande diferencial entre o Linksys WRT54G com firmware padrão e o firmware
customizado com o OpenWRT, é a possibilidade de configurá-lo de forma bem simples,
através da interface web, ou se necessário de forma avançada através de SSH 14 e Telnet 15 ,
isso tudo através da comodidade de sua rede, ou pela internet.
Agregando ainda mais às facilidades disponíveis, temos a manutenção, reinstalação e
substituição do equipamento de forma simples, é possível configurar controles de exceções,
de forma que ao detectar alguma anomalia em seu funcionamento, o equipamento é capaz de
avisar o administrador, gerar seu próprio backup, e restaurá-lo automaticamente em um
segundo roteador para que o funcionamento da sua rede não tenha grandes impactos,
passando assim o controle da mesma para este segundo roteador.
A ausência de hard disk(HD) beneficia, na medida em que restringe o número de aplicações
que rodam neste roteador, sendo menos portas abertas, menos falhas e menos exceções, além
disso, ele é capaz de montar uma partição de qualquer pasta compartilhada em uma maquina
remota.
Portabilidade e baixo investimento contribuem ainda mais para aumentar o diferencial desta
solução. Devido ao baixo valor de investimento, torna-se fácil manter uma estrutura de
backup, tanto pela parte dos softwares, quanto pela parte do hardware. Por ser uma
distribuição Linux a configuração do OpenWRT pode ser padronizada por scripts, facilitando
ainda mais a administração desses equipamentos.
14
SSH. O Secure Shell, simultaneamente, um programa de computador e um protocolo de rede que
permite a conexão com outro computador na rede, de forma a executar comandos de uma unidade remota. Possui
as mesmas funcionalidades do Telnet, com a vantagem da conexão entre o cliente e o servidor ser criptografada.
15
Telnet. Um protocolo/programa de rede, que permite o login remoto, tornando possível a um
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 próprio micro. Suas transmições são
feitas em texto claro, sendo aconselhada a utilização do SSH.
20
O Linksys WRT54G é um roteador wireless 16 , padrão 802.11b/g 17 , e um switch. Ele permite a
interação entre a rede sem fio e a rede cabeada, possibilitando a substituição da estrutura
tradicional composta por um computador.
1.2 Objetivo
O objetivo geral desse trabalho de pesquisa é implementar o sistema OpenWRT e customizálo, utilizando regras de segurança avançadas para se obter maior eficácia no dia-a-dia e
economia a curto e médio prazo.
Objetivos específicos são:
•
Implementação do Iptables no OpenWRT;
•
Utilização do Linksys WRT54G em redes de pequeno e médio porte;
•
Conhecimento dos sistemas embarcados;
•
Possibilidades de utilização do Linksys WRT54G.
1.3 Metodologia
Foi constatado por meio da interação com profissionais da área de segurança de redes em
listas de discussões, fóruns e artigos, que sistemas embarcados estão sendo muito utilizados
16
Wireless. Da tradução do inglês, sem fio. Transmissão via ondas de rádio ou satélite, sem a necessidade
de conexão física por meio de cabos. Provavelmente será usada em redes de computadores do futuro, permitindo
maior flexibilidade de uso.
17
802.11b/g. Padrão de conexão sem fio padronizada pelo IEEE que opera na freqüência de 2.4 GHz, o
802.11b alcança velocidades de 11 Mbps, no 802.11g a velocidade alcançada é de 54 Mpbs.
21
pelas empresas, pois trazem diversas possibilidades para a interconexão de redes. Por meio de
pesquisas na Internet foi constado que o roteador Linksys WRT54G é um dos mais utilizados
para interconexão de redes sem fio. Além disso, o fabricante desse equipamento foi o
primeiro a disponibilizar os fontes do firmware com licença GPL (OPENWRT, 2007). Diante
disso, foram pesquisadas alternativas para uma maior eficácia do uso desse equipamento, pois
existem limitações na configuração padrão do firmware.
Devido à falta de publicações sobre sistemas embarcados foi utilizado o material disponível
na Internet. Foram identificados e pesquisados firmwares customizados. Foi constatado por
meio de pesquisas em sites especializados na Internet que o OpenWRT é uma opção eficaz
para a customização de compartilhamento seguro de redes que utilizam ou pretendem utilizar
dispositivos que são compatíveis com sistemas embarcados. Após a definição do uso do
OpenWRT como o firmware customizado a ser utilizado, foi elaborado um roteiro de
instalação e configuração, passo-a-passo, juntando varias informações obtidas em pesquisas
em diversos sites, fóruns e listas de discussões.
Foi obtido screenshots 18 para enriquecer o trabalho e facilitar o entendimento na hora de
instalar o firmware customizado, que de fato é uma operação delicada, que gera duvidas e
demanda atenção redobrada. Nos screenshots da interface web, procurou-se demonstrar a
facilidade de sua configuração, alguns desses foram gerados na própria maquina do autor,
outros foram obtidos na internet e inseridos neste trabalho com autorização de seus autores.
Em segurança foi pesquisado alem dos livros adquiridos nas bibliotecas, vários sites da
comunidade Linux, pelo fato do OpenWRT ser uma mini distribuição Linux todos os scripts
que funcionam no Linux para computadores tradicionais, funcionaram no OpenWRT com o
mínimo de modificação, foi utilizado o script desenvolvido por Fabricio Beltram, com
algumas modificações, como o principal script de iptables deste trabalho.
18
ScreenShot. Um screenshot é uma imagem do conteúdo do monitor feita pelo próprio computador.
Geralmente esta é uma imagem digital feita pelo sistema operacional ou por um software instalado no
computador.
22
1.4 Organização do trabalho
Esse trabalho segue a seguinte organização:
Capítulo 2 – Sistemas Embarcados – Apresenta conceitos, tipos de sistemas, kernel 19 e
funcionalidades de um sistema embarcado, bem como a sua história, desde seu surgimento na
década de 60 até os dias atuais, suas características retratadas sob uma ampla visão da
aplicação deste recurso em um vasto universo de hardware e software.
Capítulo 3 – Segurança – Neste capitulo é apresentado recursos de segurança baseados em
múltiplos protocolos, bem como uma ampla informação sobre regras e tabelas visando maior
eficácia e eficiência do Linksys WRT54G, dando um destaque especial ao iptables, que será
utilizado para criar as regras de firewall utilizadas nesta monografia.
Capítulo 4 – Conhecendo o Linksys WRT54G – Apresenta um dos mais famosos roteadores
sem fios da Linksys, com suas especificações técnicas, mostrando as possibilidades de
customizações que serão utilizadas para este trabalho.
Capítulo 5 – Uma proposta de utilização – Mostra uma proposta de aplicação dos métodos,
utilizando o OpenWRT em um roteador Linksys WRT54G, mostrando passo a passo sua
instalação em vários métodos, e configuração por SSH, Telnet ou via interface web nos
moldes propostos.
Capítulo 6 – Considerações finais e Trabalhos futuros – Considerações finais do trabalho e
abordagem de futuros trabalhos que possam ser realizado para dar continuidade à proposta
apresentada.
Capítulo 7 - Referências Bibliográficas – referências bibliográficas utilizadas na elaboração
deste projeto de pesquisa.
19
Kernel. O Kernel de um sistema operacional é entendido como o núcleo deste ou, numa tradução literal,
cerne. Ele representa a camada mais baixa de interface com o Hardware, sendo responsável por gerenciar os
recursos do sistema computacional como um todo.
23
2. SISTEMAS EMBARCADOS
Os sistemas computacionais embarcados estão presentes em praticamente todas as atividades
humanas e, com os baixos custos tecnológicos atuais, tendem a aumentar sua presença no
cotidiano das pessoas. Exemplos de tais sistemas são as máquinas de lavar, o sistema de
controle dos carros e ônibus, os computadores portáteis palm-top, em roteadores, os fornos de
microondas com controle de temperatura inteligente e outros eletrodomésticos. (CARRO,
2004)
De acordo com a definição encontrada na Wikipédia 20 , sistema embarcado é “um computador
de propósito especial, que é completamente encapsulado pelo dispositivo que controla”.
Grande parte dos microprocessadores fabricados mundialmente é destinada a máquinas que
usualmente não são 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 constituído por hardware,
software e periféricos.
Um Sistema Embarcado (Embedded System), pela sua natureza especialista, pode ter inúmeras
aplicações. Podem-se ter sistemas embarcados para controle de freios de um veículo
automóvel, em que esse sistema deve gerenciar certos periféricos de controle como um
sensor. Em outro extremo funcional têm-se os terminais de atendimento do Sistema Único de
Saúde (SUS) que fazem leitura do Sistema Cartão Nacional de Saúde (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 computação de propósitos gerais. Por exemplo, as
questões da portabilidade e do limite de consumo de potência sem perda de desempenho, a
baixa disponibilidade de memória, a necessidade de segurança e confiabilidade, a
possibilidade de funcionamento em uma rede maior, e o curto tempo de projeto tornam o
20
Wikipédia. Desenvolvido pela Wikimedia Foundation. Apresenta conteúdo enciclopédico. Disponível
em: <http://en.wikipedia.org/wiki/Embedded_system>. Acesso em: 04 Abr 2007
24
desenvolvimento de sistemas computacionais embarcados uma área específica de pesquisa
(WOLF, 2001).
No contexto atual de competitividade industrial, seguindo-se a lei de Moore 21 , tem-se à
disposição o dobro de transistores a cada 18 meses (MOORE, 1965). Conseqüentemente,
sistemas dedicados com milhões 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
específica para um domínio de aplicação (DUTTA, 2001) (DEMMELER, 2001)(PAULIN,
1997), mas altamente parametrizável (no número de componentes de cada tipo, na estrutura
de comunicação, no tamanho da memória, nos tipos de dispositivos de E/S, etc.). Esta
estratégia
viabiliza
o
reuso
(KEATING,
2002)
de
componentes
(ou
núcleos)
(BERGAMASCHI, 2001) previamente desenvolvidos e testados, o que reduz o tempo de
projeto. O reuso pode ser ainda reforçado pela adoção de padrões (VSIA, 2003) na arquitetura
e projeto dos sistemas.
O projeto de sistemas embarcados toma sempre como base um ou mais processadores.
Embora esta solução pareça extremamente conservadora do ponto de vista de inovação, ela
traz enormes vantagens do ponto de vista operacional. Primeiro, o fator de escala. Como os
microprocessadores são 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 disponível dentro de uma empresa, novas versões de produtos podem
ser feitas pela alteração do software da plataforma. A personalização do sistema dá-se através
do software de aplicação, que toma atualmente a maior parte do tempo de projeto. Além
destas vantagens competitivas, há ainda o fator treinamento de engenheiros, já que estes
geralmente se formam com conhecimentos de programação de microprocessadores.
Como pôde-se perceber, os Sistemas Embarcados encontram-se cada vez mais presentes em
nosso dia-a-dia e com uma utilização e importância crescente torna-se necessário estudos na
área de software básico suportado. No mesmo sentido, a escolha de um Sistema
21
Lei de Moore. Formulada por Gordon Moore em 1965, três anos antes que ele ajudasse a criar a
fabricante de chips Intel. Moore afirmou que o número de transistores que poderiam ser alojados em uma
determinada área de silício 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 aplicações de
forma simples é muito importante.
Entre as vantagens do uso desse tipo de sistema, o reuso de componentes empregados na
computação 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 várias
arquiteturas, dispositivos e protocolos e é excelente para usuários Linux;
•
Kernels livres para sistemas embarcados uClinux: Usado principalmente para
sistemas embarcados menores e de baixo custo, é utilizado em aplicações padrões
para Linux embarcado com patches 22 para atender restrições especiais de memória
e é muito próximo do Linux embarcado tradicional;
•
Kernels livres para sistemas embarcados NetBSD 23 : Sistema BSD 24 altamente
portável, requisitos mínimos de armazenamento e RAM 25 similares aos do Linux;
•
22
Kernels livres para sistemas embarcados eCos 26 : Sistema embarcado de tempo real
Patches. Ou no singular Patch. É uma diferença entre dois elementos, leia-se atualização, sendo que
esses elementos podem ser códigos fontes, binários, textos, etc.
23
NetBSD. Foi a primeira distribuição livre, versão Open Source do BSD, sistema operacional Unix-like,
lançando em Maio de 1993, o NetBSD 0.8 como primeiro release oficial.
24
BSD. O Berkeley Software Distribution (BSD) é um Sistema Operacional UNIX desenvolvido pela
Universidade de Berkeley, na Califórnia, durante os anos 70 e 80. Atualmente, o BSD não é um único Sistema
Operacional, mas sim uma larga família derivada do original, sendo os mais conhecidos membros da família:
4.4BSD (última versão do BSD original), 386BSD, FreeBSD, NetBSD, OpenBSD, BSDI (anteriormente
BSD/OS), e Darwin (que serve como base ao Mac OS X).
25
RAM. Do inglês Random Acess Memory. É a memória disponível para uso das aplicações e
processamentos. Seu conteúdo volátil é 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 aplicações com apenas um processo derivando multiplas
threads.
26
bem leve, provido pela Red Hat / Cygnus solutions 27 , é compatível com a maioria
das aplicações Unix e Linux.
2.1 Sistema Embarcado: o que é?
Sistemas Embarcados são sistemas computacionais especialistas. Estes sistemas são
constituídos por um conjunto hardware-software-periférico e, de um modo geral, são
responsáveis por uma função específica ou um conjunto restrito de funções específicas e corelacionadas (GUPTA, 2000).
A denominação "embarcado" vem do fato de que estes sistemas são 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 característica é
potencialmente a mais restritiva para um Sistema Embarcado. Um projeto para essa classe de
sistema computacional deve levar principalmente em consideração questões de consumo de
energia, uma vez que a arquitetura utilizada utiliza baterias como fonte de energia.
Dois dos aspectos mais importantes em projeto de sistemas embarcados:
•
Energia deve ser consumida otimizadamente, pois, como citado, a arquitetura
envolvida possui restrições da mesma;
•
27
Memória pequena se comparada às memórias utilizadas em PCs.
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 acrônimo recursivo para "Cygnus, Your GNU Support".
27
2.2 Pequeno Histórico
Segundo a enciclopédia Wikipédia 28 , o primeiro sistema embarcado moderno reconhecido foi
o Apollo Guidance Computer desenvolvido por Charles Stark Draper no laboratório
instrumental do Massachusetts Institute of Technology(MIT) na década de 60. Cada vôo para
a lua possuíam dois dele, que controlam o sistema de orientação inercial.
Já o primeiro sistema embarcado produzido em massa foi o “computador guia” (computer
guidance) produzido para o míssil Minuteman 29 também na década de 60. Este sistema tem
como principal função orientar o míssil, tornando-o mais preciso.
Nessa época também existia um pequeno programa de controle funcional de telefones. Logo
este pequeno programa estava sendo utilizado em outros dispositivos, entretanto de forma
customizada, e não somente destinado para o dispositivo original do projeto.
Posteriormente, com o advento de microprocessadores especialistas, foi possível desenvolver
software específico para os variados tipos de processador. Os programas eram escritos em
linguagem de máquina. (MAXWELL, 1999)
Já na década de 1970 começavam a surgir bibliotecas de códigos e pacotes de sistemas
operacionais direcionados para Sistemas Embarcados específicos, com processadores
específicos. Neste período linguagem C começou a ser utilizada para construção de Sistemas
Operacionais, como viria a acontecer com o Linux.
Este foi o trampolim para o avanço tecnológico subseqüente. O avanço tecnológico,
principalmente em telecomunicações, ocorrido nos anos seguintes tornou de fundamental
28
Wikipédia. Desenvolvido pela Wikimedia Foundation. Apresenta conteúdo enciclopédico. Disponível
em: <http://en.wikipedia.org/wiki/Apollo_Guidance_Computer>. Acesso em: 04 Abr 2007
29
Míssil Minuteman. Míssil nuclear norte americano contendo o primeiro sistema embarcado produzido
em escala, teve inicio de sua produção em 1962 (Minuteman I), 1965 (Minuteman II), 1970 (Minuteman III),
hoje possui cerca de 500 Minuteman III em silos de mísseis 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
produção aproximado de $7,000,000.
28
importância a implementação de Sistemas Embarcados para as mais variadas tarefas. Desde o
controle de um robô em uma montadora de automóveis aos cada vez mais minúsculos
celulares, o Sistema Operacional tem papel crucial para a performance do sistema como um
todo no mundo atual. (PETERSON, 1981)
2.3 Características
Como dito anteriormente, Sistemas Embarcados são especialistas. Conseqüentemente, o
número e as particularidades dos sistemas operacionais correspondentes variam na mesma
proporção.
O projeto de um sistema especialista, entretanto, apresenta a característica de otimização
potencialmente próxima do ótimo, em todos os "planos" do projeto. Em decorrência dessa
característica os Sistemas Embarcados avançam no sentido de maximização da performance e
processamento em tempo real.
Uma preocupação constante em um projeto de Sistema Embarcado aborda a questão de
energia utilizada pelo sistema. Como já foi citado, as arquitetura dos Sistemas Embarcados
são tipicamente baseadas em fontes de energia rapidamente esgotáveis como pilhas e baterias.
Nesse sentido, projetar um Sistema Operacional (S.O) para tal sistema deve implementar:
•
Políticas de paralelismo de execução restritas como o pipeline 30 clássico em que
são executados simultaneamente estágios distintos de instruções distintas (REIS,
1999);
•
O tamanho da memória é fator fundamental na performance de um Sistema
Embarcado como um todo. Neste aspecto, por uma questão de limitação
tecnológica, os dispositivos envolvidos não podem dispor de muita memória, o que
pode acarretar em um impacto negativo em tarefas corriqueiras do Sistema
Operacional (S.O) como alocação de memória para processos;
30
Pipeline. Linha de canalizações; seqüência de programas encadeados, funcionando em conjunto.
29
•
Memórias potencialmente velozes acarretam problemas de desperdício de potência
pelo aparecimento da "capacitância parasita 31 " criada. (ROSA JÚNIOR, 2002)
Assim como num PC, os Sistemas Embarcados também devem gerenciar um conjunto de
entidades de hardware. Entre outras temos: CPU, ROM 32 /RAM, memória não-volátil, relógio
temporizador e dispositivos de I/O.
Não existe padrão na construção de Sistema Embarcado, já que cada software básico deve ser
capaz de suportar as características peculiares do Sistema Embarcado ao qual se destina.
Dispositivos de hardware utilizados em um sistema comumente não são utilizados por um
outro sistema. Além disso, muitas vezes o próprio hardware é específico do sistema, não
sendo padronizado.
2.4 Tempo Real em Sistemas Embarcados Linux
As particularidades de um sistema de tempo real não são necessárias em todos os
equipamentos que empregam um sistema embarcado, porém, elas podem tornar-se desejáveis
uma vez que o mesmo pode ser utilizado em equipamentos e dispositivos que tenham a
necessidade de atender a rápidas requisições. Portanto, nem todos os sistemas embarcados são
sistemas de tempo real, porém, é desejável que os sistemas embarcados possam implementar
as características de real-time.
31
Capacitância Parasita. A capacitância parasita está presente sempre que houver uma diferença de
potencial entre dois materiais condutores separados por um dielétrico. Pelo fato de a capacitância parasita poder
causar acoplamento indesejado entre circuitos, um extremo cuidado deve ser tomado na disposição dos sistemas
eletrônicos em placas de circuitos impressos.
32
ROM. A memória ROM (acrónimo para a expressão inglesa Read-Only Memory) é um tipo de
memória que permite apenas a leitura, ou seja, as suas informações são gravadas pelo fabricante uma única vez e
após isso não podem ser alteradas ou apagadas, somente acessadas. São memórias cujo conteúdo é gravado
permanentemente. Mas possivelmente podem ser escritas por meio de mecanismos especiais.
30
Temos dois tipos de Sistemas em Tempo Real:
•
Hard Real Time;
•
Soft Real Time.
Os sistemas operacionais de tempo real são aqueles empregados em dispositivos e
equipamentos que necessitam de uma garantia de tempo máximo de resposta, ou seja, são
utilizados no suporte às aplicações submetidas a requisitos de natureza temporal.
Vários produtos, que apresentam processadores embarcados, não necessitam que o tempo de
processamento e resposta do sistema seja rigorosamente bem definido, não 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 execução e o processamento. Aplicações com requisitos de tempo
real são cada vez mais comuns nos dias de hoje, variando muito com relação ao tamanho e
complexidade. Entre os sistemas mais simples estão os controladores embarcados em
utilidades domésticas, tais como lavadoras de roupa e videocassetes. Na outra extremidade do
espectro, onde sistemas de real-time são empregados, encontram-se os sistemas militares de
defesa e o controle de tráfego aéreo. (OLIVEIRA, 2001)
Podemos citar como exemplos típicos de utilização 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 é construído para reagir o mais rápido
possível aos estímulos. Entretanto, caso haja perda de eventos ou não consiga processar a
tempo, não haverá nenhuma conseqüência catastrófica em sua operação e sim um degradação
na qualidade. Podemos citar como exemplos típicos de Tempo Real Soft, sistemas de áudio,
vídeo 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 multiusuário.
Existe ainda um comportamento não determinístico do sincronismo de alguns serviços do
kernel como, alocação de memória e chamadas de sistema.
Temos no mercado alguns sistemas em tempo real Linux como:
•
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 não foi projetado para ser um sistema operacional para uso em sistemas
real-time (FARINES, 2000), até porque, alguns serviços do referido sistema operacional
rendem atrasos imprevisíveis.
Um verdadeiro sistema operacional de tempo real precisa ser determinístico, para que possa
garantir, assim, um tempo máximo de resposta (BARABANOV, 1996) (SANTO, 2001)
(KADIONIK, 2002). Esta característica define que o número de ciclos para a execução de
uma operação deve ser sempre o mesmo, podendo ocorrer uma interrupção caso necessário.
Por exemplo, suponhamos que existam 20 pessoas em uma discussão moderada, e que elas
apenas possam falar e expor suas idéias em seqüência. Digamos, também, que o sistema
operacional seja o moderador da discussão. Agora, suponhamos que o participante número 5
esteja falando e a pessoa número 3 tenha alguma coisa muito importante para acrescentar. Em
um sistema não-determinístico, ela terá que esperar que todos participantes falem, do número
6 até o número 20, que a vez seja passada novamente para os participantes número 1 e
número 2, na seqüência, até que ela possa novamente assumir a palavra. Por outro lado, se o
sistema operacional fosse determinístico, ele seria capaz de interromper a seqüência e passar a
33
Throughput. Velocidade com que um computador processa dados. É uma combinação da velocidade de
processamento interno, velocidade dos periféricos (I/O) e eficiência do sistema operacional e outros software do
sistema, todos funcionando juntos.
32
palavra para a pessoa número 3, permitindo que ela permanecesse com a mesma durante um
período de tempo pré-estabelecido, tornando o sistema mais ágil e mais eficiente.
Então, o que realmente é um sistema operacional de tempo real? A definição 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 exigências para adequar-se as necessidades
dos sistemas em tempo real. Esperar a previsibilidade de 100% em kernel padrão é um fato
certo em poucos anos. (LINUXDEVICES, 2007)
2.5 Alguns Sistemas Embarcados Disponíveis
Apesar da peculiaridade típica dos Sistemas Embarcados, existem no mercado algumas
soluções prontas. E, devido às suas características, este mercado se apresenta sem um "líder
de vendas", pois ainda não existe o conceito de Sistema Embarcado de uso geral, apenas
pequenos nichos de concorrência.
A seguir têm-se pequenos textos a respeito de alguns Sistemas Embarcados disponíveis no
mercado. (ROSA JÚNIOR, 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 interrupção. Este sistema é normalmente
33
utilizado em dispositivos de pouca memória como players de áudio e impressoras laser.
Vantagem: suporte a várias arquiteturas (REDHAT, 2003).
2.5.2 NetBSD
Baseado em Unix. Este também é um sistema embarcado Open Source. Uma desvantagem em
relação a outros Sistemas Embarcados é a sua relativa necessidade de memória podendo
chegar até 16Mb de RAM. Desta forma, ele se apresenta como uma boa opção para "rodar"
em roteadores e outros dispositivos de rede que possuem, de modo geral, boa quantidade de
memória disponível.
2.5.3 Windows CE Embedded
Lançado em 1996 pela Microsoft, interessada num nicho sem líderes de mercado até então.
Utiliza o Windows 34 como base de desenvolvimento e não é Open Source. Tamanho
relativamente compacto e possibilidade de incorporar novos módulos/componentes
(WINDOWS EMBEDDED, 2007).
34
Windows. Microsoft Windows ou Windows é um Sistema Operacional muito popular, criado pela
Microsoft. A Microsoft começou o desenvolvimento de um Gerenciador de Interface (subseqüente renomeado
Microsoft Windows) em setembro de 1981. O Windows só começa a ser tecnicamente considerado como um SO
a partir da versão Windows NT, lançada em Agosto de 1993. O que havia antes eram sistemas gráficos sendo
executados sobre alguma versão dos sistemas compatíveis com DOS, como MS-DOS, PC-DOS ou DR-DOS.
Somente o MS-DOS era produzido pela própria Microsoft.
34
2.5.4 Windows NT Embedded
Sistema Operacional também baseado em Windows, de código fechado. Consideravelmente
grande ocupação de memória, não sendo indicado para dispositivos com memória restrita
como aparelhos de mão.
2.5.5 uClinux
O Embedded Linux Microcontroller é um Sistema Embarcado de código 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, além de sistemas de arquivos
diversos como NFS 35 e FAT16/32 36 , entre outros (UCLINUX, 2007).
Este sistema, por ser baseado em Linux, mantém sua estabilidade e portabilidade. Outra
vantagem do uClinux é o suporte a várias 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, execução de programas e visualizar estatísticas do
computador remoto.
36
FAT16/32. A File Allocation Table (FAT, ou Tabela de Alocação de Ficheiros(Arquivos)) é um
sistema de arquivos desenvolvido para o MS-DOS e usado em versões do Microsoft Windows até (e inclusive) o
Windows Me. A Tabela de Alocação de Ficheiros(Arquivos) é um mapa de utilização do disco ou disquete.
Graças a ele, o Sistema Operacional é capaz de saber exatamente onde um determinado ficheiro está
armazenado. Existem duas versões do sistema FAT: FAT16 (para OS 16 bits ou 32 bits) e FAT32 (só para SO a
32 bits); a diferença mais visível entre as duas versões é que FAT32 suporta nomes de ficheiros longos (atá 256
caracteres), enquanto o FAT16 suporta apenas nomes de arquivos curtos (até 8 caracteres + extensão).
35
2.5.6 OpenWRT
A distribuição 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 distribuição Linux para Sistemas Embarcados, em que seu
desenvolvimento dispõe de um sistema de arquivos totalmente escrito com gerenciamento de
pacotes, e não apenas um firmware simples com um único processo, isso propicia uma grande
facilidade na seleção e configuração das aplicações fornecidas e permite que o
colaborador/usuário customize o dispositivo usando apenas pacotes. Para o colaborador o
OpenWRT é a estrutura ideal para construir uma aplicação sem ter a preocupação de construir
um firmware completo em torno dela. Para o usuário isto significa a habilidade de total
customização, para utilizar o dispositivo de maneira nunca antes vista.
Com a liberação dos códigos fontes Linux da série de roteadores Linksys WRT54G/GS
surgiram um grande numero de firmwares modificados para estender as funcionalidades em
várias maneiras. Esses firmwares continham 99% de códigos conservados e 1% de
funcionalidades adicionadas, e cada projeto tentou seguir um determinado segmento de
mercado com as funcionalidades que forneceu.
Abaixo duas motivações para inicialização do projeto OpenWRT:
•
Era freqüentemente difícil encontrar um firmware com a combinação 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 invés de começar a partir dos
fontes do Linksys, o desenvolvimento começou em um estado limpo dos códigos fontes, com
apenas códigos fontes base. Peça por peça o software foi montado trazendo as funcionalidades
de volta, como no firmware padrão da Linksys, usando versões recentemente disponíveis.
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 características extras.
2.5.6.1 Por que utilizar o OpenWRT?
Porque GNU/Linux nos dá o poder fazer o que nós necessitamos com ferragem barata e evitar
o software proprietário, de código fechado. O OpenWRT é o firmware baseado no Linux mais
rápido disponível para vários roteadores sem fio. No momento a distribuição contem mais de
100 pacotes de software. Além disso, a comunidade de OpenWRT fornece os mais variados
pacotes add-on.
2.5.6.2 OpenWRT, um breve histórico
O projeto começou em janeiro 2004. As primeiras versões de OpenWrt foram baseadas em
fontes de Linksys GPL para WRT54G e no buildroot do projeto uclibc. Esta versão foi
definida como OpenWrt “versão estável” e estava própria para uso. Há ainda muitas
aplicações de OpenWrt, como os Freifunk-Firmware ou o Sip@Home, que são baseados nesta
versão.
No começo de 2005 alguns novos desenvolvedores se juntaram a equipe. Após alguns meses
de desenvolvimento fechado a equipe decidiu publicar as primeiras versões “experimentais”
do OpenWrt. As versões experimentais usam um sistema bastante customizado da construída
baseada na versão 2 do buildroot, o buildroot2, também 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 liberação de OpenWrt é “White
37
Russian”, um cocktail popular. Atualmente, o desenvolvimento da linha White Russian
terminou com a liberação de OpenWrt 0.9.
O desenvolvimento da próxima versão já está ocorrendo no repositório de códigos fontes da
equipe OpenWRT. Conterá suporte a muitas outras placas embarcadas. Seu codename é
Kamikaze.
2.6 Java em Sistemas embarcados
A Sun, que em 1991 iniciou seus projetos de olho na nova era de computadores sob controle
dos usuários vem até hoje desenvolvendo novas ferramentas e sistemas que são 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 fácil integração entre o código Java e a linguagem nativa. Isto o torna sistemas
simples, orientados ao objeto, com suporte a protocolos de rede, robusto, seguro, de
arquitetura neutra, portátil, de alta performance, multithreaded e dinâmico.
Algumas características naturais do Java são:
•
O Java esconde as especificações dos dispositivos e do sistema embarcado;
•
Fornece um numero de características além do oferecido pelo sistema embarcado;
•
Ferramentas de rede interoperável;
•
Simplifica o desenvolvimento de produto. O software pode facilmente ser
desenvolvido em estações de trabalho;
•
Pode-se reutilizar o código;
•
Bytecode mais compacto.
Sua interface nativa (JNI – Java Native Interface) interage com o hardware através do JVM e
operado com aplicações e bibliotecas escritas em outras.
38
Mas o Java também tem suas desvantagens;
•
Não possui código fonte aberto;
•
Licenças de uso comercial e suporte são pagos;
•
Não depende somente do JVM para funcionamento. Necessite-se de outros
módulos como as bibliotecas JDK;
•
Metodologia sem documentação.
Contudo, o Java ainda é considerado “pesado” para algumas aplicações devido ao overhead
gerado por este sistema.
2.7 Sobre licenças em sistemas embarcados livres
Sobre licenças em sistemas embarcados livres, temos os sistemas que permitem e os sistemas
que não permitem aplicações proprietárias. Entre os sistemas que permitem aplicações
proprietárias, podemos citar: Biblioteca C (LGPL), Bibliotecas compartilhadas (LGPL /
BSD), Aplicações do tipo BSD (podem ser proprietárias) e GPL (podem coexistir sem
modificações com aplicações proprietárias, mas é necessário fornecer o código fonte para o
usuário). Entre os sistemas que não permitem aplicações proprietárias, temos o Kernel Linux
GPL (apesar de ser cada vez menos tolerados aplicações proprietárias, não impõe restrições
de licença em bibliotecas ou aplicações) e bibliotecas compartilhadas ou GPL. (WARFIELD,
1999)(GNU LICENSES, 2007)
39
2.8 Software livre em Sistemas Embarcados
Vantagens existentes para desenvolvedores de sistemas embarcados (GNU, 2007):
•
Inovação e valores agregados. A possibilidade de focar o uso no diferencial do
produto, por ter vários componentes prontos para uso em grande parte do sistema;
•
Implementação das características críticas necessárias. Não é necessário aguardar a
implementação de alguém;
•
Inovação constante. As características evoluem algumas vezes antes mesmo que
você precise delas. Logo é possível portar o Linux para uma nova arquitetura
inovadora;
•
Qualidade de Software. Desenvolvedores de componentes chaves e códigos são
excelentes programadores;
•
Software proprietários. Com isso o desenvolvimento de software é completamente
fechado;
•
Controle para os desenvolvedores. Liberdade irrestrita para uso do software, para
tomar decisões a respeito do sistema, para escolher entre várias alternativas
técnicas e sem caixas pretas no sistema que não podem ser corrigidas, modificadas
ou melhoradas;
•
Flexibilidade. Possibilidade de personalização, múltiplas aplicações disponíveis,
possibilidade de realização de tarefas especializadas com baixo custo;
•
Escolhas. Possibilidades de substituição de componentes mesmo após o término
das etapas do desenvolvimento, muitas possibilidades de escolha para a mesma
função, 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.
Além dessas vantagens citadas, você terá acesso às fontes e interfaces de baixo nível,
conhecendo detalhes a respeito do seu próprio sistema, chances reais de encontrar a causa
principal dos problemas; você terá facilidade de desenvolvimento, possibilidade de modificar
e reusar código existente se estiverem desenvolvendo com uma licença compatível; recursos e
40
suportes on-line disponíveis; você tem acesso direto aos desenvolvedores, com possibilidade
de tirar dúvidas em tempo real e entender as tomadas de decisões. (WARFIELD, 1999)
Nos sistemas proprietários, ao final do período de avaliação você tem que pagar ou perder
tudo que implementou, já nas contribuições para projetos abertos, você não tem que fazer
nova implementação em caso de mudança para outra companhia.
Com isso, você tem custos reduzidos, liberdade e iniciativa para iniciar o projeto
imediatamente, sem a necessidade de aprovação da gerência ou compra de software,
requisição de versões de avaliação, etc.
Outra diferença entre sistemas proprietários e projetos abertos, é que no primeiro, sempre vem
com seus próprios termos de licenciamento. Não é necessário perder tempo tentando entendelos ou procurando por armadilhas antes de aceitá-lo. Já licenças softwares livres (SL) são mais
fáceis de entender. A GPL foi escrita por um programador (e então revista por um advogado).
(GNU LICENSES, 2007)
Vantagens para gerentes de sistemas embarcados:
•
Você dispõe de controle em suas decisões técnicas, em suas criações, aplicações e
dispositivos e escolha de fornecedores e vendedores;
•
Tem redução de custo, pois não tem royalties para pagar, tem reuso máximo de
códigos e menor tempo para chegar ao mercado;
•
Além disso, tem posse de sua plataforma, desde que você respeite os termos da
licença SL, ninguém jamais será capaz de revogar seus direitos para continuar a
usar a sua plataforma ou ferramentas. Sem possibilidade de perder o seu
investimento devido à “violação de licença”.
Vantagens para empresas de sistemas embarcados:
•
Inclua todas as vantagens relacionadas para gerentes de sistemas embarcados, além
dessas, menos trabalho para o departamento de compras de software, e menor
custo de litígio;
41
•
Construir dispositivos abertos baseados SL pode gerar uma imagem muito positiva
da sua empresa para a comunidade de desenvolvedores de SL Facilita a atração de
desenvolvedores talentosos;
•
SL garante que seus investimentos de logo prazo são seguros e podem lhe levar
adiante.
Vantagens para os fornecedores de conteúdo:
•
Redução no custo de produção, possibilidade de criar e testar a produção com
ferramentas usando os mesmos codecs 37 ou bibliotecas que estão nos players
embarcados (codecs sem patentes ou royalties).
Vantagens para consumidores e usuários finais:
•
Propriedades dos dados, graças aos formatos abertos e aos SL;
•
Qualidade e confiabilidade;
•
Segurança e privacidade;
•
Dispositivos cheios de características e uso agradável. Biblioteca de software
relativamente grande;
•
Sistemas personalizados (se atualização de firmware 38 estiver disponível).
Desafios com Software Livre
•
Mudança de gerenciamento com atualizações e versões freqüentes de SL (“alvo
móvel”). Críticas a congelar componente cedo demais;
•
Freqüentemente precisa-se escolher entre várias soluções. Falta de tempo dos
desenvolvedores para investigar soluções e seguir as novidades do SL;
•
Necessidade de escolher soluções duradouras. Necessidade de estimar o tamanho
da comunidade de desenvolvedores e usuários quão ativos é o desenvolvimento, a
importância da tecnologia subjacente, disponibilidade de prestadores de serviço;
37
Codecs. Contração do termo "COder-DECoder". Algoritmo de compressão/descompressão.
38
Firmware. Programação em hardware, programa ou dados de computador que são armazenados
permanentemente em um chip de memória de hardware, como uma ROM ou EPROM.
42
•
Freqüentemente muitos recursos e documentação espalhados. Requer experiência
em procura.
Desafios com Linux:
•
Linux é um sistema operacional de propósito geral, suportando sistemas que vão
do pequeno ao enorme. Desta forma, ele pode não ser ótimo e pode não ser capaz
de bater uma solução personalizada bem ajustada;
•
Linux pode requerer uma quantia significativa de ajustes pra fazê-lo suportar os
requerimentos específicos do seu sistema embarcado. Por outro lado, não ser ótimo
pode ser valorizado devido aos custos menores de desenvolvimento;
•
Questões legais: validade da GPL no país local, código misto, legitimidade dos
donos da propriedade, patentes de software;
•
Excesso de atração: engenheiros desejam usar SL, mesmo quando ele não é a
melhor solução.
2.9 Considerações
Notamos que os sistemas embarcados sofrem restrições que não são tão relevantes como em
sistemas de computação convencionais, principalmente os que dizem respeito a consumo de
energia, disponibilidade de memória e espaço utilizado. Devido as restrições, os sistemas
embarcados precisam ser ágeis e enxutos.
Não existe um sistema embarcado dominante. Existem sistemas que atendem aplicações
específicas. Por exemplo, o OpenWRT se destaca nesse tipo de sistema, pois possui uma
maior abrangência em aplicações e que vem se tornando de fato, uma grande oportunidade de
tornar seu roteador em uma solução completa.
Hoje os sistemas embarcados se encontram em vários elementos de nosso cotidiano e
tendência é de aumentar cada vez mais.
43
3. FUNDAMENTOS DE SEGURANÇA DA INFORMAÇÃO
A troca de informações pela internet representa uma forma de sobrevivência para os negócios
nos dias atuais. Pequenas e médias empresas estão cada vez mais utilizando a Internet como
uma forma de expansão. O sistema de Firewall é uma das possibilidades para conseguir
proteger as redes destas corporações conectadas, de ataques. O Linux é um sistema
operacional gratuito que possibilita a configuração 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 máquina contra acessos não
permitidos, tráfego indesejado, proteger serviços que estejam rodando na máquina e bloquear
a passagem de coisas que você ou sua empresa não deseja receber (como conexões 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 são largamente utilizados hoje em dia, sendo imprescindível em basicamente todas
as soluções que utilizam conexão direta ou indireta com a grande rede internet, sendo
primordial e necessário a utilização em máquinas pessoais, junto com o sistema operacional
da mesma, com o grande aumento de técnicas de invasão, de vírus, worms 39 , spywares 40 e
39
Worms. O worm, ou verme, é um programa que, explorando deficiências de segurança de
computadores, propaga-se de forma autônoma, o vírus infecta um programa e necessita deste programa
hospedeiro para se propagar, o worm é um programa completo e não 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
de computador sem o consentimento do usuário. Também conhecido como Software Espião.
44
outros, é praticamente impossível sentir que suas informações digitais estão seguras sem um
firewall. (GARFINKEL, 1996)
O firewall agrupa um conjunto de técnicas como tradução de endereços (Network Address
Translation – NAT), serviços de Proxy 41 , Filtragem de pacotes e redes virtuais privadas
(Virtual Private Network – VPN) que somadas constroem um sistema definido através de uma
política de segurança da rede. (RUSSEL, 2000)
3.2 Arquiteturas de Firewall
Existem diversas formas de juntar estes componentes formando o que é denominado de
arquiteturas de firewall (CHAPMAN, 1995)(SCHUBA, 1997), que podem ser basicamente
três: Dual-Homed Host, Screened Host e Screened Subnet. A seguir, será falado um pouco
sobre cada uma delas, pois são as arquiteturas de firewalls mais comuns, entretanto há muitas
outras variações que podem ser usadas. (RANUM, 1992)
3.2.1 Arquitetura Dual-Homed Host
Esta arquitetura é construída sob uma máquina denominada Dual-Homed Host, que se conecta
as redes interna e externa (Internet), e poderia atuar como roteador entre elas, mas possui a
função de roteamento desabilitada. Assim, sistemas dentro de uma das redes podem se
comunicar com o Dual-Homed Host, mas não podem se comunicar diretamente com outra
41
Proxy. Um servidor que atua como intermediário entre um cliente e outro servidor. Normalmente é
utilizado em empresas para aumentar a performance de acesso a determinados serviços ou permitir que mais de
uma máquina se conecte à Internet. Proxies mal configurados podem ser abusados por atacantes e utilizados
como uma forma de tornar anônimas algumas ações na Internet, como atacar outras redes ou enviar SPAM.
45
rede. Portanto, um Dual-Homed Host pode fornecer serviços apenas através de servidores
proxy, ou permitir que usuários conectem-se diretamente a ele.
3.2.2 Arquitetura Screened Host,
Nesta arquitetura, o firewall é composto por um roteador e uma máquina – chamada bastion
host. Os serviços são 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 segurança principal é feita por filtragem de pacotes. A filtragem de pacotes do
screening router é configurada de tal maneira que o bastion host seja a única máquina da rede
interna que recebe conexões da Internet. Portanto, o bastion host é uma máquina que deve
prover um alto nível de segurança, já que poderá sofrer constantes ataques.
3.2.3 Arquitetura Screened Subnet
Nesta arquitetura é adicionada uma camada extra de segurança através 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 vários serviços, permitindo que clientes internos acessem
servidores externos indiretamente. Ele também atua como servidor de email, ou os envia para
determinados hosts da rede interna.
O roteador interno protege a rede interna da Internet e também da rede DMZ. Ele faz a maior
parte da filtragem de pacotes do firewall, permitindo o estabelecimento de serviços a partir de
46
clientes internos para servidores da Internet. Estes são serviços que o seu site pode
seguramente fornecer usando filtragem de pacotes ao invés 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 através dele, e, em geral, faz pouca filtragem de pacotes. As
regras de filtragem de pacotes para proteger as máquinas internas deverão ser basicamente as
mesmas em ambos os roteadores. As únicas regras de filtragem de pacotes que são realmente
especiais no roteador externo são aquelas que protegem a rede DMZ. Mas geralmente não é
necessário tanta proteção, pois o bastion host é bem protegido com métodos de segurança de
host.
3.3 Política de Segurança
Uma política de segurança típica para uma empresa conectada a Internet com servidores de
FTP, SMTP, POP, HTTP, HTTPS e DNS, segue os requisitos de segurança abaixo: (ZWICK,
2000)
•
Todos os pacotes serão negados, a não ser que seja explicitamente especificado o
contrário;
•
Bloqueio de todas as conexões iniciadas externamente, exceto os serviços
permitidos que serão redirecionados para seus respectivos servidores;
•
Os serviços de FTP, SMTP, POP utilizarão o IP Security para comunicação;
•
Permissão de tráfego ilimitado a partir da interface de loopback;
•
Permissão de conexões iniciadas a partir da rede interna;
•
Pacotes destinados ao firewall serão descartados exceto os da rede interna para o
serviço 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 endereços reservados exceto os definidos em suas
interfaces;
•
Pacotes ICMP terão tamanho máximo limitado quando destinados à rede interna.
3.4 Iptables
O iptables é um firewall em nível de pacotes e funciona baseado no endereço/porta de
origem/destino do pacote, prioridade, etc. Ele funciona através da comparação de regras para
saber se um pacote tem ou não permissão 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 também pode ser usado para modificar e monitorar o tráfego da rede, fazer NAT
(masquerading 45 , source nat, destination nat), redirecionamento de pacotes, marcação de
pacotes, modificar a prioridade de pacotes que chegam/saem do seu sistema, contagem de
bytes, dividir tráfego entre máquinas, criar proteções anti-spoofing, contra syn flood, DoS, e
43
SYN flood. SYN flood ou ataque SYN é uma forma de ataque de negação de serviço (também conhecido
como Denial of Service - DoS) em sistemas computadorizados, na qual o atacante envia uma seqüência de
requisições SYN para um sistema-alvo e não retorna o ACK confirmando a conexão.
44
IP Spoofing. IP spoofing é uma técnica de subversão de sistemas informáticos que consiste em
mascarar (spoof) pacotes IP com endereços remetentes falsificados.
45
Masquerading. O IP Masquerading é uma maneira de utilizar uma máquina 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 doméstica ou do escritório, com computadores usando Windows, MacOS, Linux ou qualquer outro
sistema operacional que ofereça conexão TCP/IP, à Internet, sem grandes investimentos.
48
outros. O tráfego vindo de máquinas desconhecidas da rede pode também ser
bloqueado/registrado através do uso de simples regras. As possibilidades oferecidas pelos
recursos de filtragem iptables como todas as ferramentas UNIX maduras dependem de sua
imaginação, pois ele garante uma grande flexibilidade na manipulação das regras de acesso ao
sistema, precisando apenas conhecer quais interfaces o sistema possui, o que deseja bloquear,
o que tem acesso garantido, quais serviços devem estar acessíveis para cada rede, e iniciar a
construção de seu firewall. (GUIA FOCA, 2007)
O iptables ainda tem a vantagem de ser modularizável, funções podem ser adicionadas ao
firewall ampliando as possibilidades oferecidas. Este é um firewall que tem possibilidades de
gerenciar tanto a segurança em máquinas isoladas como roteamento em grandes organizações,
onde a passagem de tráfego entre redes deve ser minuciosamente controlada.
Um firewall não funciona de forma automática (instalando e esperar que ele faça as coisas por
você), é necessário pelo menos conhecimentos básicos de rede tcp/ip, roteamento e portas
para criar as regras que farão a segurança de seu sistema. A segurança do sistema depende do
controle das regras que serão criadas por você, as falhas humanas são garantia de mais de
95% de sucesso nas invasões.
Enfim o iptables é um firewall que agradará tanto a pessoas que desejam uma segurança
básica em seu sistema, quando administradores de grandes redes que querem ter um controle
minucioso sobre o tráfego que passam entre suas interfaces de rede (controlando tudo o que
pode passar de uma rede a outra), controlar o uso de tráfego, monitoração, etc.
3.4.1 Características do iptables
As características do iptables são:
•
Especificação de portas/endereço de origem/destino;
•
Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens ICMP);
49
•
Suporte a interfaces de origem/destino de pacotes;
•
Manipula serviços de proxy na rede;
•
Tratamento de tráfego dividido em chains (para melhor controle do tráfego que
entra/sai da máquina e tráfego redirecionado);
•
Permite um número ilimitado de regras por chain;
•
Muito rápido, estável e seguro;
•
Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou
mal formados;
•
Suporte a módulos externos para expansão das funcionalidades padrões oferecidas
pelo código de firewall;
•
Suporte completo a roteamento de pacotes, tratadas em uma área diferente de
tráfegos padrões;
•
Suporte a especificação de tipo de serviço para priorizar o tráfego de determinados
tipos de pacotes;
•
Permite especificar exceções para as regras ou parte das regras;
•
Suporte a detecção de fragmentos;
•
Permite enviar alertas personalizados ao syslog sobre o tráfego aceito/bloqueado;
•
Redirecionamento de portas;
•
Masquerading;
•
Suporte a SNAT (modificação do endereço de origem das máquinas para um único
IP ou faixa de IPs);
•
Suporte a DNAT (modificação do endereço de destino das máquinas para um
único IP ou fixa de IPs);
•
Contagem de pacotes que atravessaram uma interface/regra;
•
Limitação de passagem de pacotes/conferência de regra (muito útil para criar
proteções contra syn flood, ping flood, DoS, etc).
50
3.4.2 Conhecendo as tabelas
Existem três tabelas possíveis de serem utilizadas no iptables (IPTABLES, 2007): filter, nat e
mangle. A tabela filter, é a tabela padrão, utilizada nos tráfegos de dados comuns, sem
ocorrência de NAT. A tabela nat, é utilizada para dados que geram outra conexão (exemplo:
masquerading, source nat, destination nat, port forwarding, proxy transparente). A tabela
mangle, é utilizada para alterações especiais de pacotes (exemplo: modificar o tipo de serviço
– TOS). Na prática, a tabela mangle não é muito utilizada.
Cada tabela possui chains, e através delas podemos especificar a situação do tratamento dos
pacotes, seja qual tabela for.
As chains da tabela filter são:
INPUT – Consultado para dados que chegam à máquina. Exemplo, pacotes cujo destino final
é a própria máquina firewall.
OUTPUT – Consultado para dados que saem da máquina. Exemplo, pacotes que saem da
máquina firewall.
FORWARD – Consultado para dados que são redirecionados para outra interface de rede ou
outra máquina. Exemplo, pacote que atravessa a máquina firewall, cujo destino é uma outra
máquina. Este pacote não sai da máquina firewall e sim de outra máquina da rede ou fonte.
Neste caso a máquina firewall está repassando o pacote.
As chains da tabela nat são:
PREROUTING – Consultado para pacotes que precisam ser modificados antes de serem
roteados. É o chain ideal para realização de DNAT e redirecionamento de portas.
POSTROUTING - Consultado quando os pacotes precisam ser modificados após o
tratamento de roteamento. É o chain ideal para realização 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 conexões que se originam de
IPs de interfaces locais.
3.4.3 Regras úteis, modelo I
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 critérios de ataques, e como permitir
acesso a determinados serviços. Maiores descrições diretamente no script.
1:
IPTABLES=/sbin/iptables
2:
3:
# Protege contra os "Ping of Death":
4:
$ IPTABLES -A FORWARD -p icmp --icmp-type echo-request ©
ª -m limit --limit 1/s -j ACCEPT
5:
6:
# Protege contra os ataques do tipo "Syn-flood, DoS, etc":
7:
$IPTABLES -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
8:
9:
# Permite repasse (NAT,DNAT,SNAT) de pacotes com o estado
10:
# e de estabelecidos e relacionados:
11:
$
IPTABLES
-A
FORWARD
-m
state
--state
©
ª ESTABLISHED,RELATED -j ACCEPT ESTABLISHED,RELATED -j ©
ª ACCEPT
12:
13:
# Loga os pacotes mortos por inatividade:
52
$ IPTABLES -A FORWARD -m limit --limit 3/minute ©
14:
ª --limit-burst 3 -j LOG
15:
16:
# Protege contra port scanners avançados (ex.: nmap):
17:
$
IPTABLES
-A
FORWARD
-p
tcp
--tcp-flags
©
ª SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
18:
19:
# Estou redirecionando a porta ZZ do ip
20:
# xxx.xxx.xxx.xxx para a porta zz do ip
21:
# yyy.yyy.yyy.yyy.
22:
# Iptables na inicialização do sistema
23:
$ iptables -t nat -A PREROUTING -d xxx.xxx.xxx.xxx ©
ª
-p
tcp
-m
tcp
--dport
ZZ
-j
DNAT
©
ª --to-destination yyy.yyy.yyy.yyy:zz
Quadro 1: Arquivo: /etc/firewall.sh
Para colocar suas regras na inicialização do sistema é preciso que você crie um arquivo e
salve como um nome qualquer, no meu caso uso como "firewall", demonstrado no quadro 2.
1:
$ mv firewall /etc/init.d/
2:
$ chmod +x /etc/init.d/firewall
3:
$ cd /etc/rc2.d/
4:
$ ln -s /etc/firewall.sh /etc/rc2.d/S99firewall
Quadro 2: Comando para adicionar o firewall à inicialização automática.
3.4.4 Regras úteis, modelo II
Será mostrado outra forma de utilizarmos os scripts de firewall, neste melhor estruturado e
utilizando uma maneira mais clara de programar as regras. Serão criados e/ou modificados
três arquivos, firewall.sh, que carregará as regras propriamente ditas, hosts, que possuirá a
53
relação de nome versus ip de cada maquina que deverá ser conhecida pelo roteador, fwlib.sh,
que é a biblioteca de funções utilizadas pelo firewall.sh, conforme quadro 3.
1:
#!/bin/sh
2:
. /etc/fwlib.sh
3:
flush_firewall
4:
5:
### Ports accessible on the router from the WAN
6:
# allow_tcp_port 22 # SSH
7:
# allow_tcp_port 465 # HTTPS
8:
9:
### Ports accessible from specific hosts to the
10:
# router from the WAN
11:
allow_tcp_port_fromhost 80 remote_access # HTTP
12:
allow_tcp_port_fromhost 22 remote_access # HTTP
13:
14:
### Ports accessible to client machines.
15:
# forward_port 22 server
16:
forward_port 9100 printer_01
17:
18:
### if we really need _all_ ports...
19:
# register_dmz server
20:
21:
# forward workstation port for application
22:
# development forward_port 8080 workstation1
23:
24:
# forward a few utility port-ranges to make it easier
25:
# to deal with bittorrent configurations and the like
26:
# forward_port 10000:10099 workstation1
27:
# forward_port 10100:10199 laptop1
28:
# forward_port 10200:10299 laptop2
29:
30:
### Translate port for client machines.
31:
translate_port 8080 printer_01 80
54
32:
33:
### Trusted hosts, full access to router
34:
# trusted_host my_support_company
Quadro 3: Arquivo: /etc/firewall.sh
Como dito acima o arquivo hosts carrega os nomes de cada ip conhecido pelo roteador, não é
obrigatório cadastrá-los no arquivo pois poderá ser utilizado o ip diretamente nas regras do
firewall. No quadro 4 é mostrado como se deve configurar o arquivo “hosts”.
1:
127.0.0.1 localhost OpenWrt
2:
192.168.1.100 server
3:
192.168.1.50 workstation1
4:
192.168.1.80 laptop1
5:
192.168.1.81 laptop2
6:
195.xxx.xxx.xxx my_support_company
7:
192.168.1.55 printer_01
8:
195.xxx.xxx.xxx remote_access
Quadro 4: Arquivo: /etc/hosts
No quadro 5 temos as funções utilizadas no script principal de firewall, citada no quadro 3.
1:
#!/bin/sh
2:
3:
. /etc/functions.sh
4:
5:
WAN=$(nvram get wan_ifname)
6:
LAN=$(nvram get lan_ifname)
7:
8:
9:
flush_firewall () {
iptables -F input_rule
10:
iptables -F output_rule
11:
iptables -F forwarding_rule
12:
iptables -t nat -F prerouting_rule
13:
iptables -t nat -F postrouting_rule
55
14:
}
15:
16:
### BIG FAT DISCLAIMER
17:
### The "-i $WAN" literally means packets that came
18:
### in over the $WAN interface;
19:
### this WILL NOT MATCH packets sent from the LAN to
20:
### the WAN address.
21:
22:
allow_tcp_port () {
23:
ALLOWPORT=$1
24:
iptables -t nat -A prerouting_rule -i $WAN -p ©
ª tcp --dport $ALLOWPORT -j ACCEPT
25:
iptables
-A
input_rule
-i
$WAN
-p
tcp
©
to
©
ª --dport $ALLOWPORT -j ACCEPT
26:
}
27:
28:
allow_tcp_port_fromhost () {
29:
ALLOWPORT=$1
30:
ALLOWHOSTNAME=$2
31:
ALLOWHOST=`sucky_resolve $ALLOWHOSTNAME`
32:
echo
ª
"Allowing
tcp
from
$ALLOWHOSTNAME
port $ALLOWPORT"
iptables -t nat -A prerouting_rule -i $WAN -p ©
33:
ª tcp -s $ALLOWHOST --dport $ALLOWPORT -j ACCEPT
34:
iptables
-A input_rule
-i $WAN -p ©
ª tcp -s $ALLOWHOST --dport $ALLOWPORT -j ACCEPT
35:
}
36:
37:
sucky_resolve () {
38:
HOSTNAME=$1
39:
###
40:
grep $HOSTNAME /etc/hosts | awk '{ print $1 }'
41:
42:
}
56
43:
forward_port() {
44:
ALLOWPORT=$1
45:
ALLOWHOSTNAME=$2
46:
ALLOWHOST=`sucky_resolve $ALLOWHOSTNAME`
47:
echo
"FORWARDING
$ALLOWPORT
TO
©
ª $ALLOWHOSTNAME ($ALLOWHOST)"
iptables -t nat -A prerouting_rule -i $WAN -p ©
48:
ª tcp --dport $ALLOWPORT -j DNAT --to $ALLOWHOST
49:
-A forwarding_rule -i $WAN -p ©
iptables
ª tcp --dport $ALLOWPORT -d $ALLOWHOST -j ACCEPT
50:
}
51:
52:
translate_port() {
53:
ALLOWPORT=$1
54:
ALLOWHOSTNAME=$2
55:
ALLOWHOSTPORT=$3
56:
ALLOWHOST=`sucky_resolve $ALLOWHOSTNAME`
57:
echo "TRANSLATING $ALLOWPORT TO $ALLOWHOSTNAME ©
ª ($ALLOWHOST:$ALLOWHOSTPORT)"
iptables -t nat -A prerouting_rule -i $WAN -p ©
58:
ª
tcp
--dport
$ALLOWPORT
-j
DNAT
–to©
ª $ALLOWHOST:$ALLOWHOSTPORT
59:
iptables
-A forwarding_rule -i $WAN -p tcp ©
ª --dport $ALLOWHOSTPORT -d $ALLOWHOST -j ACCEPT
60:
}
61:
62:
63:
trusted_host (){
64:
ALLOWHOSTNAME=$1
65:
TRUSTEDHOST=`sucky_resolve $ALLOWHOSTNAME`
66:
iptables -t nat -A prerouting_rule -i $WAN -p ©
ª tcp -s $TRUSTEDHOST -j ACCEPT
57
67:
iptables
-A
input_rule
-i
$WAN
-p
tcp
©
ª -s $TRUSTEDHOST -j ACCEPT
68:
}
Quadro 5: Arquivo: /etc/fwlib.sh
3.5 Considerações
O iptables implementa vetores de regras na memória utilizadas para verificar o que cada hook
deve fazer com os pacotes que passam por eles. Este gerencia tabelas que indicam quais
regras devem ser consideradas quando os pacotes ultrapassam cada um dos pontos de
checagem. As tabelas filter, nat e mangle são utilizadas respectivamente para filtragem de
pacotes, tradução de endereços de rede (Network Address Translation) e manipulação dos
pacotes.
A troca de informações sobre a Internet representa uma questão de sobrevivência para os
negócios nos dias atuais. Pequenas e médias empresas estão cada vez mais utilizando a
Internet como uma forma de expansão. O sistema de firewall é uma das possibilidades para
conseguir proteger as redes destas corporações conectadas, de ataques. O Linux é um sistema
operacional gratuito que possibilita a configuração de um firewall. Apresenta-se um sistema
de firewall baseado no Linux com o kernel reduzido.
Com o iptables fizemos uma abordagem das chains de todas tabelas, mostrando de uma
maneira simples, com exemplos, formas de utilização e configuração de um firewall Linux,
em um sistema embarcado, possibilitando ao leitor a customização das regras propostas.
58
4. CONHECENDO O LINKSYS WRT54G
O Access Point 46 roteador Wi-Fi 47 Linksys WRT54G reúne em um mesmo equipamento um
roteador de rede com firewall, capacidades de port forwarding e acesso Wi-Fi para redes
802.11b/g sob a marca da Linksys. A Linksys é a divisão de equipamentos soho 48 da Cisco,
renomada fabricante mundial de equipamentos de rede. Destina-se a compartilhar sua rede
local ethernet com clientes Wi-Fi e também distribuir sua conexão de banda larga entre as
diversas máquinas de uma rede (LINKSYS, 2007).
Entre suas características de funcionamento podemos encontrar as funções normais para um
aparelho de sua categoria. Ele trabalha como roteador para sua conexão web de banda larga
distribuindo pacotes entre vários clientes da rede. Suas configurações permitem ajustar o
roteador para efetuar o login via PPPoE 49 sobre o modem, dispensando o procedimento
manual que você executa hoje para poder navegar na web, caso seja este método de
autenticação usado por seu sistema de banda larga. Ele também pode estabelecer uma
conexão direta pelo modem e receber o endereço IP diretamente do servidor de seu provedor
de banda larga, via DHCP 50 . Também é possível utilizar no modo bridge 51 , ou ip estático.
46
Access Point. Um Wireless Access Point (WAP ou AP) é um dispositivo que conecta dispositivos
wireless uma rede sem fios. O AP é conectado geralmente a uma rede cabeada, e pode repetir dados entre
dispositivos em cada lado, na rede cabeada para rede sem fio ou vice versa.
47
Wi-fi. Wireless Fidelity. Transmissão via ondas de rádio ou satélite, sem a necessidade de conexão
física por meio de cabos. Provavelmente será usada em redes de computadores do futuro, permitindo maior
flexibilidade de uso e abrindo novas oportunidades para EAD por meio de telecomunicações.
48
Soho. Divisão da Cisco para desenvolvimento de equipamentos para uso doméstico e pequenas redes.
49
PPPoE. É uma especificação para conectar os usuários em um ethernet a Internet através de um meio,
tal como uma única linha do DSL, de um dispositivo wireless ou de um modem de cabo broadband comum.
Todos os usuários sobre o ethernet compartilham de uma conexão comum, assim que dos princípios do ethernet
que suportam usuários múltiplos em uma LAN com os princípios do PPP, que se aplicam às conexões em série.
50
DHCP. Dynamic Host Configuration Protocol, é um protocolo de serviço TCP/IP seguro, que oferece
configuração dinâmica com concessão de endereços IP de host e distribui outros parâmetros de configuração
para clientes de rede.
51
Bridge. É um equipamento que conecta duas redes locais (LANs) ou dois segmentos de uma mesma
LAN. Diferentemente dos roteadores ou routers, bridges trabalham enviando pacotes sem a capacidade de
otimizar rotas, isso lhes dá velocidade, porem menos versatilidade.
59
O equipamento também permite ajustar características avançadas de gerenciamento de rede,
como definir horários nos quais as conexões externas estarão disponíveis e quais portas ou
serviços podem ser utilizados. Poucos equipamentos dessa classe possuem tais ajustes. As
funções de gerenciamento de portas são avançadas, mas ainda assim a documentação do
equipamento é farta e permite o entendimento mesmo para usuários pouco habituados aos
procedimentos técnicos das redes. É possível definir em detalhes para qual IP interno da rede
cada porta será direcionada, permitindo que serviços específicos sejam disponibilizados para a
web a partir de servidores da rede local sem colocar em risco o resto da rede. Usuários
avançados irão apreciar as funções de VPN que são amigáveis e acessíveis. Há também
suporte para que o roteador faça a atualização de IP em serviços de DNS dinâmico
(DynDNS.org e TZO.com) para que você sempre encontre sua rede quando estiver em
trânsito, não importando qual IP sua conexão usa naquele momento.
A parte wireless do dispositivo merece destaque pela simples configuração. Apenas
pressionando um botão pode-se configurar com um assistente toda a rede Wi-Fi, inclusive a
criptografia com passos simples. O equipamento possui duas antenas Wi-Fi externas que
permitem uma conexão com bom nível de sinal e rápidas transmissões de dados. Além da
simplicidade de configuração o equipamento fornece uma interface avançada que permite
configurar, desde os endereços MAC que terão permissão ou proibição de acesso até
parâmetros avançados do wireless.
Outro ponto alto do equipamento é a facilidade para salvar suas configurações em arquivos
locais de alguma máquina na rede e poder restaurá-las posteriormente. Isso permite que você
possa explorar diferentes configurações de serviço e acesso e depois retornar ao estado
original de sua rede com apenas alguns cliques. Um destaque fica para o fácil upgrade de
firmware do equipamento, que pode ser realizado com apenas alguns cliques de mouse. Como
o firmware desse dispositivo é baseado em software livre ele foi disponibilizado pela Linksys
em seu site. Isso permitiu que variantes de firmware fossem criadas adicionando ao
equipamento várias características que originalmente ele não possui. Buscando pelo modelo
do dispositivo você pode encontrar vários firmwares de terceiros que adicionam coisas como
seções SSH e até mesmo VoIP ao WRT54G.
60
As figuras 1 e 2 apresentam a imagens externa do Linksys WRT54G e de sua placa-mãe
(motherboard), respectivamente.
Figura 1: Ponto de acesso sem fios e encaminhador Linksys WRT54G.
Figura 2: Motherboard do sistema embebido Linksys WRT54G v1.1.
61
O hardware deste sistema é baseado numa motherboard que integra todos os componentes
funcionais: CPU, RAM, memória FLASH 52 , transdutores e switch Ethernet e transdutor
wireless. Maiores informações serão visualizadas na tabela 1.
Tabela 1: Características de hardware do sistema embarcado Linksys WRT54G.
Ainda existe o uClinux. Este sistema foi desenvolvido com base num kernel Linux 2.0 com
otimizações para sistemas embarcados sem Memory Management Unit (MMU) que passam
pela redução da necessidade de recursos. Por exemplo, este sistema não possui proteção de
memória entre processos, o que pode ser um problema de segurança visto que qualquer
processo pode acessar o espaço de memória de qualquer outro processo. Por outro lado, não
existe uma chamada de sistema fork() tendo esta chamada sido substituída pela chamada
vfork() que obriga a que o processo pai espere pela terminação do processo filho para
continuar a sua execução. Este tipo de funcionamento impossibilita a utilização em sistemas
multiusuário.
4.1 Trabalhos e soluções correlatas
O Linksys WRT54G é um dispositivo de rede de destaque, pois foi o primeiro que teve o
código fonte do firmware aberto sob a licença GNU GPL. Isto permitiu a evolução e
customização do firmware padrão, pois os profissionais da área puderam adaptar o sistema às
52
Memória Flash. Um tipo de chip de memória que retém as informações quando a energia elétrica é
interrompida (memória não-volátil). Usado em alguns computadores para armazenar as informações relativas ao
BIOS.
62
suas necessidades. Com isso, surgiram novos projetos de desenvolvimento e evolução de
firmwares customizados para o Linksys WRT54G. Inicialmente as customizações foram
projetadas para o Linksys WRT54G, entretanto, é possível utilizar o firmware em Embora as
customizações do firmware em outros tipos de dispositivos baseados no Linux, tais como a
série de equipamentos da marca Buffalo e NetGear.
Lista dos principais projetos de customização do firmware do Linksys WRT54G baseados no
firmware padrão:
•
DD-WRT (http://www.dd-wrt.com/) – Versões pagas e livres disponíveis;
(Linux/GPL)
•
HyperWRT Thibor (http://www.thibor.co.uk/) – Baseados nos firmwares do
WRT54GS, junto do HyperWRT +tofu e nas outras modificações do Thibor;
•
OpenWRT (http://openwrt.org/) – Firmware com o sistema de arquivos
SquashFS 53 para gerenciamento de pacotes. Destaque desta monografia;
(Linux/GPL)
•
Sveasoft (http://www.sveasoft.com/) – Versões pagas e livres disponíveis. As
ultimas versões estão disponíveis através de inscrições;
•
Tomato (http://www.polarcloud.com/tomato) – Firmware livre que caracterizam
pelo número de recentes inovações web tais como Ajax 54 e de SVG 55 .
Desenvolvida por programadores de HyperWRT +tofu. O manual do Tomato está
53
SquashFS, É um compacto sistema de arquivos somente leitura para o Linux. É geralmente utilizado
em montando arquivos compactos somente leitura tipo .tar.gz, e em sistemas embarcados onde é necessário
pouco overhead. Hoje este sistema de arquivos esta estável, e já foi testado em PowerPC, em i586, em Sparc e
em arquiteturas ARM.
54
Ajax. Asynchronous JavaScript and XML, é uma técnica de desenvolvimento de aplicações web
interativas. A intenção é fazer com que as paginas web respondam trocando pequenas quantidades de dados em
background, de modo que não necessite recarregar toda a pagina a cada solicitação do usuário. Isto permite
aumentar a interatividade, a velocidade, e a usabilidade das paginas Web.
55
SVG. É a abreviatura de Scalable Vectorial Graphics que pode ser traduzido do inglês como Gráficos
Vetoriais Escaláveis. Trata-se de uma linguagem XML para descrever de forma vetorial desenhos e gráficos
bidimensionais. Umas das principais características dos gráficos vetoriais é que não perdem a qualidade ao
serem ampliados. A grande diferença entre o SVG e outros formatos vetoriais é o fato de ser um formato aberto,
não sendo propriedade de nenhuma empresa.
63
disponível em Wikibooks 56 . (Linux/GPL)
Lista de outros projetos que se basearam nos projetos principais:
•
BatBox – Distribuição baseada na RAM para experimentos, não muda o firmware;
•
Bluebox – Abre automaticamente o software que scaneia e cria uma ponte para
Internet que funciona em WRT54G com OpenWRT;
•
Chillispot – Software portal de captura 57 que funciona em WRT54G e em outras
plataformas, disponível sob GPL;
•
CoovaAP (http://coova.org/wiki/index.php/CoovaAP) – Baseado no firmware
OpenWRT especifico para hotspots 58 , possui o patch Coova com Chillispot e
Wifidog (GPL);
•
Earthlink's IPv6 Firmware – Adicionado suporte ao IPv6 59 no firmware original
Linksys (versão beta-test);
•
EWRT – Enhanced WRT, com integração a portal de captura, baseado no
NoCatSplash;
•
FON – Worldwide Hotspot com compartilhamento patrocinado pelo Google e
Skype. FON Firmware (com 2 SSIDs) para WRT54G;
56
•
FreeWRT – Firmware experimental baseado no OpenWRT;
•
Freifunk – Software alemão com suporte a redes Mesh 60 com OLSR 61 , baseado no
Wikibooks. A Wikilivros (do Inglês Wikibooks) é dedicada ao desenvolvimento e livre disseminação de
livros e textos didáticos de conteúdo aberto. Também faz parte da Fundação Wikimedia como a Wikipédia.
57
Portal de Captura. Captive Portal. É uma técnica utilizada onde clientes HTTP de uma rede são
forçados a visualizar uma pagina web especial, normalmente para autenticação, antes de poder navegar
normalmente na internet.
58
Hotspot. Um ponto ou uma área de acesso Wi-Fi, particularmente para conectar-se a Internet.
59
IPv6. É a versão 6 do protocolo IP. O IPv6 tem como objetivo substituir o padrão anterior, o IPv4, que
só suporta cerca de 4 bilhões ( 4 * 109) de endereços, enquanto que o IPv6 suporta ( 3.4 * 10^38 ) endereços. A
previsão atual para a exaustão de todos os endereços IPv4 livres para atribuição a operadores é de Janeiro de
2014, o que significa que a transição da versão do IPv4 para o IPv6 é inevitável num futuro próximo. O governo
dos Estados Unidos da América determinou que todas as suas agências federais devem suportar o protocolo IPv6
até 2008.
60
Redes Mesh. É uma maneira de distribuir dados, voz e instruções entre nós. Permite conexões e a
reconfiguração contínua em torno dos trajetos obstruídos do nó até que uma conexão possa ser estabelecida. Nas
redes Mesh, cada nó trabalha como propagador do sinal do ponto de acesso.
64
OpenWrt;
•
Meraki – Wi-Fi AP para redes Mesh desenvolvido através do projeto de Roofnet,
baseado em OpenWRT;
•
OpennetFirmware – Firmware baseado no OpenWRT e em partes de Freifunk;
•
PacketProtector – Baseado no OpenWRT, distribuição enfatizando a segurança
incluindo facilidades de IDS 62 , IPS 63 , VPN, e web antivírus;
•
TinyPEAP – Adicionado a facilidade de autenticação de segurança wireless no
firmware Linksys padrão;
•
WiFi-Box
(http://sourceforge.net/projects/wifi-box/)
–
(Sem
documentação
disponível em Abril de 2007);
•
Neighbornode;
•
Tarifa (http://tarifa.sourceforge.net/) – Baseado no firmware padrão do
WRT54GL;
•
WiFiDog Captive Portal – WiFi Dog por Ile Sans Fil, um software portal de
captura que roda sob plataforma OpenWRT;
•
WifiTastic (http://www.wifitastic.com/) – Solução hotspot para residência ou
pequenas empresas. Caracteriza-se pelo faturamento no cartão de crédito.
Funciona na plataforma OpenWRT;
•
Wirds.net – Um projeto que utiliza o firmware Freifunk como base, com o portal
de captura do Chillispot e autenticação gratuita no Worldspot.net;
•
X-Wrt End user extensions para OpenWRT – Fornece uma agradável interface
web para gerenciamento do OpenWRT. (Linux/GPL);
61
OLSR. Optimized Link State Routing Protocol. É um protocolo para conectar as redes ad-hoc móveis,
também chamadas de redes Mesh wireless. É um protocolo do roteamento do Link-state. Coleta os dados sobre
que membros da rede que podem se comunicar, e calcula então uma tabela otimizada de roteamento.
62
IDS. Intrusin Detection System, em português Sistema de Detecção de Intrusão, são ferramentas que
trabalha em conjunto com o sistema, integrando seus logs com o do Linux, com o objetivo de registrar, proteger
e manter a integridade de dados e serviços.
63
IPS. Intrusion Prevention System, um sistema da prevenção de intrusão é um dispositivo de segurança e
controle de acesso das atividades para proteger computadores de explorações. A tecnologia da prevenção de
intrusão é considerada por alguns ser uma extensão da tecnologia da detecção do intrusão (IDS) mas é realmente
um outro sistema de controle de acesso, como um firewall da camada de aplicação.
65
Projetos descontinuados:
•
HyperWRT – Firmware original para ligação rápida projetada por Avenger 2.0
permanecendo perto do firmware oficial WRT54G e WRT54GS, porem
adicionada características como transmissão power, port triggers, scripts, Telnet,
etc.
o HyperWRT +tofu – Baseado no firmware WRT54GS, HyperWRT e com
algumas customizações;
o Rupan HyperWRT – Baseado no firmware WRT54GS e HyperWRT.
4.2 Considerações
O Linksys WRT54G é um grande exemplo da utilização de Linux em sistemas embarcados. É
um ponto de acesso sem fios IEEE 64 802.11b/g (wireless access point) com função de
encaminhamento integrada e um switch Ethernet de 4 portas. O firmware deste aparelho é
baseado no kernel Linux e em outros projetos Open Source.
Grande precursor do desenvolvimento de sistemas embarcados customizados para pequenos
roteadores, possui atualmente dezenas de firmwares modificados para atender as mais
variadas especialidades.
64
IEEE. O Instituto de Engenheiros Eletricistas e Eletrônicos, Institute of Electrical and Electronics
Engineers, ou IEEE (pronuncia-se I-3-E ) é uma organização profissional sem fins lucrativos, fundada nos
Estados Unidos. É a maior (em número de sócios) organização profissional do mundo. O IEEE foi formado em
1963 pela fusão do Instituto de Engenheiros de Rádio (IRE) com o Instituto Americano de Engenheiros
Eletricistas (AIEE). Um de seus papéis mais importantes é o estabelecimento de padrões para formatos de
computadores e dispositivos.
66
5. UMA PROPOSTA DE APLICAÇÃO DO OPENWRT EM REDES DE
PEQUENO E MÉDIO PORTE
Como visto conceitualmente, é possível – e as vezes necessário – a personalização do
firmware padrão do roteador Linksys WRT54G, possibilitando uma abordagem mais
especializada, criando possibilidades de substituir em pequenas e médias empresas servidores
NAT, Proxies e Firewalls, tudo apenas com a solução proposta, e somente um equipamento.
Mostraremos uma aplicabilidade dos conceitos abordados mostrando em um estudo de caso a
usabilidade e a robustez do conjunto Linksys WRT54G mais OpenWRT, indo desde sua
instalação até sua configuração.
5.1 Instalando o OpenWRT e atualizando o firmware do roteador WRT54G
O sistema embarcado OpenWRT possui diversas compilações exclusivas para cada tipo de
roteador, neste exemplo utilizaremos o firmware especifico para o roteador Linksys WRT54G
que poderá ser baixado em http://downloads.openwrt.org/whiterussian/newest/, que possui a
versão mais recente do sistema.
Lembre-se de verificar a compatibilidade do OpenWRT com seu dispositivo. A listagem
completa dos dispositivos suportados poderá ser visualizada em http://toh.openwrt.org/.
67
5.1.1 Equipamento utilizado:
O equipamento utilizado nesta monografia é o Linksys WRT54G v2.2 / CPU 200Mhz, e
roteadores Linksys WRT54G versões anteriores a v.4 são suportadas por esse mesmo
firmware.
5.1.2 Preparando para atualizar:
Reinicie o Access Point, deixando o mesmo com ip padrão "192.168.1.1".
Conecte o cabo de rede na porta número 1 "RJ45" do roteador.
Configure a placa de rede do micro que vai acessar o Access Point como DHCP para obter ip
automático.
ATENÇÃO: Não faça esse procedimento com outros roteadores que não sejam WRT54G,
pois o processo envolve habilitar o boot_want=on e o firmware é outro.
5.1.3 Atualizando
Mostraremos neste tópico as varias formas de atualizar seu roteador Linksys WRT54G, sendo
possível a atualização nas diversas plataformas, e mostraremos no Windows e Linux via
TFTP, ou Windows e Linux via browser.
68
5.1.3.1 Atualização por TFTP (Windows)
Se você é usuário Windows baixe o programa abaixo e utilize-o para atualizar o firmware
seguinte as instruções.
ftp://ftp.linksys.com/pub/network/tftp.exe
Execute o programa “tftp” e coloque as informações:
Server: 192.168.1.1
Por padrão do roteador o campo “Login” fica em branco, no campo “Password” a senha é
“admin”, caso possua outra senha utilize-a.
File: [...] no botão procure o firmware
Upgrade [click]
Aguarde a atualização, a luz power fica piscando, espere ela parar de piscar para concluir a
atualização, não interrompa.
5.1.3.2 Atualização por TFTP (Linux)
Caso seja usuário Linux é necessário verificar se já não possui o TFTP instalado, não citarei
os comandos de verificação pois difere de acordo com as distribuições.
No quadro 6 verificaremos os comandos utilizados para abrir o TFTP cliente, mostraremos
também a forma correta de conectar e enviar o arquivo ao roteador.
69
1:
$ tftp
2:
tftp> connect 192.168.1.1
3:
tftp> put openwrt-wrt54g-squashfs.bin
4:
Sent 2746882 bytes in 6.8 seconds
5:
tftp> quit
Quadro 6: Atualização por TFTP.
Aguarde a atualização, a luz power fica piscando, espere ela parar de piscar para concluir a
atualização, não interrompa.
5.1.3.3 Atualização por browser (Firefox ou IExplorer)
Entre no navegador na página de configuração do seu WRT54G exemplo:
http://192.168.1.1
Procure o link "system / firmware upgrade", procure o firmware que você baixou do site
acima e atualize.
A figura 3 mostra exatamente como se deve proceder para fazer a atualização do firmware
pela interface web padrão do roteador, esta é a maneira mais simples de fazer a atualização.
70
Figura 3: Ilustração da atualização via browser.
Aguarde a atualização, a luz power fica piscando, espere ela parar de piscar para concluir a
atualização, não interrompa.
5.2 Configurando OpenWRT
Neste tópico será descrito as varias formas de acessar seu roteador Linksys WRT54G, sendo
possível acessar por telnet, ssh e via interface web, esta ultima ensinaremos de forma mais
detalhada, pela facilidade em administrar o sistema.
5.2.1 Acessando via SSH ou Telnet
Terminada a atualização, é precisamos desligar o equipamento e ligar novamente, para que
consigamos passar para o próximo passo, que é colocar senha.
Pronto, atualizado/reiniciado, agora vamos acessar via telnet para colocar senha no root para
podermos continuar com nossas configurações.
71
1:
$ telnet 192.168.1.1
Quadro 7: Atualização por telnet.
Ilustrado na figura 4 a mensagem de boas vindas recebida pelo administrador do roteador em
seu primeiro acesso depois de atualizado para o OpenWRT, note que este primeiro acesso não
é solicitada senha, porem a mensagem adverte da importância que isso tem, e que depois que
a senha for setada o acesso Telnet passa a ser desabilitado e ao SSH passa a ser habilitado
automaticamente.
Figura 4: Tela que obteríamos ao acessar o OpenWRT via telnet.
72
Por questões de segurança coloque uma senha maior que 5 caracteres, repita a senha duas
vezes para confirmar a alteração. Após feito isso, basta utilizar o comando mencionado no
quadro 8 para sair do acesso Telnet.
1:
$ exit
Quadro 8: Comando para sair do acesso telnet.
Agora você só terá acesso à linha de comando pelo ssh. Baixe o putty para acessar pelo
Windows:
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
Figura 5: Tela que obteríamos ao conectar no OpenWRT via Putty(SSH).
Através do Putty, como mostra a figura 5, poderemos configurar de forma segura o
OpenWRT, note que ao acessar via SSH é solicitada a senha a qual setamos via Telnet no
primeiro acesso.
73
Se for usuário do Linux:
1:
$ ssh 192.168.1.1
Quadro 9: Comando para acessar por ssh.
Os usuários Linux não necessitam do Putty, o acesso pode ser feito pelo próprio comando
“ssh”, como mostrado no quadro 9, e receberemos as mesmas mensagem que as do acesso via
Putty.
5.2.2 Configurando em modo AP
Nossa rede/roteador ficariam assim:
IP porta RJ45 internet: wan_ipaddr=200.200.0.2
Gateway: wan_gateway=200.200.0.1
IP acesso roteador (Wserver): lan_ipaddr=192.168.1.1
O comando utilizado é nvram, digite-o e veja a sintaxe do comando, como mostrado no
quadro 10.
1:
$ nvram
Quadro 10: Comando de acesso a memória.
Veja todos os parâmetros configurados utilizando o comando mostrado no quadro 11.
1:
$ nvram show | more
Quadro 11: Comando para visualizar o conteúdo da memória.
Configurando o roteador como ssid “Wserver”, modo AP, canal 11, como demonstrado os
comandos no quadro 12.
74
1:
$ nvram set wl0_ssid=Wserver
2:
$ nvram set wl0_mode=ap
3:
$ nvram set wl0_channel=11
Quadro 12: Comando para setarmos as configurações do roteador.
Caso queira checar o conteúdo das variáveis basta utilizar o comando “get” como
demonstrado no quadro 13.
1:
$ nvram get wl0_channel
2:
11 Í Retorno do comando
Quadro 13: Comando para pegar a informação do canal utilizado.
Lembrando que temos que gravar as informações pois podemos desligar o roteador e perder
essas informações aplicadas, como mostrado no quadro 14, utilize este comando com
moderação, memórias flash tem um tempo de vida de escrita limitado a algo entre 1.000 e
10.000 vezes.
1:
$ nvram commit
Quadro 14: Comando para gravar as informações setadas na memória.
Configurando a porta que entra a internet, vamos colocar ip fixo (static), como demonstrado
no quadro 15.
1:
$ nvram set wan_proto=static
2:
$ nvram set wan_ipaddr=200.200.0.2
3:
$ nvram set wan_gateway=200.200.0.1
Quadro 15: Configurando com ip fixo a interface wan.
Vamos agora para rede wireless e LAN, vamos somente checar, pois já vem com ip
192.168.1.1. Querendo mudar o ip é só mudar o "get" por "set" e colocar o novo ip e demais
configurações, conforme os quadros 16, 17 e 18.
75
1:
$ nvram get lan_proto
2:
Static Í Retorno do comando
Quadro 16: Pegando a informação do método de utilizado na configuração ip.
1:
$ nvram get lan_ipaddr
2:
192.168.1.1 Í Retorno do comando
Quadro 17: Pegando a informação do ip da LAN.
1:
$ nvram get lan_netmask
2:
255.255.255.0 Í Retorno do comando
Quadro 18: Pegando a informação da mascara da LAN.
Pronto, finalizamos nossa configuração, agora vamos salvar, para que as configurações feitas
permaneçam após o boot com o comando do quadro 19.
1:
$ nvram commit
Quadro 19: Comando para gravar as informações setadas na memória.
Agora faremos a atualização das regras de firewall, salve o script do quadro 20 em um
arquivo chamado “/etc/firewall-up.sh”. Este script foi baixado no site Viva o Linux, na seção
de arquivos de configurações e será utilizada a legenda abaixo para demonstrar os locais onde
foram feitas alterações, inclusões ou foi mantido o script original do site.
Original
Incluído
Alterado
1:
#!/bin/bash
2:
#======================= *** ========================
3:
#
4:
# Autor: Fabricio Beltram
5:
# Data de Criação: 16/11/2006
6:
#
7:
#=========================================================
8:
# Script: Firewall - iptables
76
9:
#
10:
#====================================================
11:
#
12:
# regras de firewall e subir as novas regras de
13:
# acordo com as regras do script - este script possui
14:
# a função de flush que e' a limpeza das regras e faz
15:
# um full NAT como e' conhecido por ai. O script esta
16:
# bem comentado para facilitar eventuais consultas e
17:
# alterações.
18:
#====================================================
19:
#
20:
# alterado e distribuído livremente.
21:
#====================================================
22:
# Versão: 1.01
23:
#====================================================
24:
#
Alterações Realizadas:
25:
#
- Correções dos comentários
26:
#
- Ajustes de IPs e aliases.
27:
#
- Regra de liberação de TELNET para a rede local
28:
#
- Regra de liberação de acesso a TELNET
29:
#
- Regra de estabilização e relacionamento de
30:
#
31:
#
Autor: Felipe Deboni
32:
#
Data : 15/12/2006
33:
#
34:
#####################################################
Descrição: Este script ira limpar todas as
Este script esta sobre licença
GPL pode ser
conexões
35:
36:
#MODPROBE
37:
# Carrega os módulos de iptables + NAT no Kernel
38:
# Estas linhas não são necessárias se você já tem os
39:
# módulos do kernel compilado.
40:
#
41:
modprobe ip_nat_ftp
42:
modprobe iptable_nat
77
43:
44:
# ============================
45:
# === Declaração das variáveis
46:
# ============================
47:
# Definir a variável INTRA com a interface que esta
48:
# ligada com a rede interna/local.
49:
# Ex
50:
# INTRA=eth0
51:
INTRA=eth1
52:
53:
# Definir a variável INTER com a interface que esta
54:
# ligada com a rede externa (INTERNET)
55:
# Ex
56:
# INTER=eth1
57:
# INTER=ppp0
58:
INTER=eth0
59:
60:
# Definir a variável LAN com o range de IP utilizado
61:
# por sua rede local, não esquecer mascara da rede
62:
# Ex
63:
# LAN=10.0.0.0/24
64:
LAN=192.168.1.0/24
65:
66:
# ====================== *** ========================
67:
# Inicia as regras
68:
# Verifica se o parâmetro = flush
69:
# Se igual, então, limpa todas as regras e seta as
70:
# políticas padrões para ACCEPT e também deixa a rede
71:
# como full nat. "Sem Bloqueios"
72:
if [ "$1" = "flush" ]; then
73:
74:
echo "Limpando as regras, setando as Políticas©
ª padrões..."
75:
78
76:
# Seta as políticas padrões para accept
77:
iptables -P INPUT ACCEPT
78:
iptables -P FORWARD ACCEPT
79:
iptables -P OUTPUT ACCEPT
80:
iptables -F
81:
iptables -t nat -F
82:
iptables -X
83:
iptables -Z
84:
85:
# Faz o mascaramento completo da rede
86:
iptables
-t
nat
-A
POSTROUTING
-o
$INTER
©
ª -j MASQUERADE
echo "Firewall - Desativado... Mascaramento ©
87:
ª completo."
88:
89:
# ELSE - Se o parâmetro != flush
90:
else
91:
92:
echo "Firewall iptables starting..."
93:
94:
# Seta as políticas padrões para DROP Bloqueia
95:
# tudo que não for OUTPUT
96:
iptables -P INPUT DROP
97:
iptables -P FORWARD DROP
98:
iptables -P OUTPUT ACCEPT
99:
iptables -F
100:
iptables -t nat -F
101:
iptables -X
102:
iptables -Z
103:
104:
#======================***======================
105:
# Inicio das regras que já defino como padrão
106:
# Liberação do loopback
107:
iptables -A INPUT -i lo -j ACCEPT
79
108:
109:
# ======== *** =========
110:
# INTERNET ---> FIREWALL
111:
# Setaremos as portas q serão acessíveis via
112:
# internet
113:
114:
# SSH - Para mim imprescindível
115:
# Obs: comente esta linha para não aceitar ssh
116:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
117:
118:
# PING - Se não quiser ser alvo de ping mantenha
119:
# comentadas as 2 linhas abaixo
120:
# iptables -A INPUT -p icmp --icmp-type 0 -j©
ª ACCEPT
121:
# iptables -A INPUT -p icmp --icmp-type 8 -j©
ª ACCEPT
122:
123:
# HTTP/HTTPS - Apache e outros webservers
124:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
125:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
126:
127:
# Por padrão só é aceito conexões na porta 22
128:
# que e' SSH
129:
# Obs. não deixe ssh direto como root. para isso
130:
# altere o arquivo sshd_conf
131:
# set a linha PermitRootLogin no
132:
133:
# ======== *** =========
134:
# LAN ---> FIREWALL
135:
# Setaremos as portas que poderemos acessar via
136:
# rede local no servidor
137:
138:
# TELNET - Permitindo apenas acesso telnet a lan
80
139:
iptables -A INPUT -p tcp -s $LAN --dport 23 ©
ª -j ACCEPT
140:
141:
# NETBIOS - Estas 3 portas são usadas pelo
142:
# protocolo de compartilhamento de arquivos em
143:
# redes Microsoft.
144:
# Cada uma das portas tem uma função especial
145:
# (nome, datagrama e sessão) mas é necessário
146:
# que as 3 estejam abertas no firewall para que
147:
# a visualizações dos compartilhamentos e acesso
148:
# aos arquivos funcione corretamente
149:
iptables
-A
INPUT
-p
tcp
-s
$LAN
--dport
©
-A
INPUT
-p
udp
-s
$LAN
--dport
©
ª 137:139 -j ACCEPT
150:
iptables
ª 137:139 -j ACCEPT
151:
152:
# DNS - Libera a resolução de nomes
153:
iptables -A INPUT -p tcp -s $LAN --dport 53 ©
ª -j ACCEPT
154:
iptables -A INPUT -p udp -s $LAN --dport 53 ©
ª -j ACCEPT
155:
156:
157:
#======== *** =========
158:
# LAN ---> INTERNET
159:
# Setaremos as portas comuns que devem ser
160:
# acessadas da rede local para a internet Portas
161:
# comuns que devem ser acessadas na Internet
162:
163:
# FTP-DATA(20) FTP(21) SSH(22) TELNET(23)
164:
iptables
-A
ª --dport 20:23 -j ACCEPT
165:
166:
# SMTP
FORWARD
-i
$INTRA
-p
tcp
©
81
167:
iptables -A FORWARD -i $INTRA -p tcp --dport ©
ª 25 -j ACCEPT
168:
169:
# POP3
170:
iptables -A FORWARD -i $INTRA -p tcp --dport ©
ª 110 -j ACCEPT
171:
172:
# DNS tcp/udp
173:
iptables -A FORWARD -i $INTRA -p udp --dport ©
ª 53 -j ACCEPT
174:
iptables -A FORWARD -i $INTRA -p tcp --dport ©
ª 53 -j ACCEPT
175:
176:
# HTTP/HTTPS
177:
iptables -A FORWARD -i $INTRA -p tcp --dport ©
ª 80 -j ACCEPT
178:
iptables -A FORWARD -i $INTRA -p tcp --dport ©
ª 443 -j ACCEPT
179:
180:
# ========= *** =======
181:
# Faz o mascaramento da rede local
182:
iptables
-t
nat
-A
POSTROUTING
-o
$INTER
©
ª -j MASQUERADE
183:
184:
# Statefull inspection
185:
# Aceita pacotes de conexões já estabelecidas ou
186:
# relacionadas
187:
iptables
-A
FORWARD
-m
state
--state
©
-m
state
–state
©
ª ESTABLISHED,RELATED -j ACCEPT
188:
iptables
-A
INPUT
ª ESTABLISHED,RELATED -j ACCEPT
189:
190:
# FIM - Ate aqui nos temos um firewall seguro
82
191:
# estável e confiável
192:
#======================***======================
193:
#
194:
# A partir desta linha chamo meus scripts de
195:
# exceções.
196:
# Ex: Proxy Transparente, Regra acesso ao TED,
197:
# Regra acesso a CONECTIVIDADE SOCIAL, etc...
198:
#
199:
# obs. Aqui em regras especiais você pode
200:
# configurar algum tipo de DNAT ou FORWARD que
201:
# sua empresa ira precisar. É só criar os
202:
# scripts e chamá-los abaixo que ele startará
203:
# junto com o firewall.
204:
echo
"Carregando
as
regras
especiais
ª utilizadas por Empresa 1."
205:
206:
# Coloque aqui as suas regras especiais, Caso
207:
# exista
208:
# Start fw-squid.sh
209:
#/root/bin/fw-squid.sh
210:
211:
# Start fw-infib.sh
212:
#/root/bin/fw-infib.sh
213:
214:
echo "Firewall - running - OK !!"
215:
216:
# Fim do Script e do IF
217:
fi
Quadro 20: Script firewall. Arquivo: /etc/firewall-up.sh
©
83
5.2.3 Acessando via interface web (WebIf)
Com a chegada de novos releases, uma facilidade tão esperada por todos os utilizadores,
principalmente os que não possuem domínio da linha de comando é a interface web, com ela
o administrador poderá acessar a principais configuração de seu roteador através do conforto
de um browser, o projeto é chamado de WebIf, e é desenvolvido pela mesma equipe que
desenvolve o OpenWRT, abaixo poderemos ter uma noção das facilidade encontradas.
Figura 6: Tela de informações do OpenWRT na interface web.
Deve-se deixar claro que a interface web não possibilita total interatividade com as
possibilidades que o sistema embarcado OpenWRT oferece, apenas trás as informações e
configurações básicas para o mesmo, podendo o administrador utilizar a conexão SSH para
configurações avançadas, ou mesmo desenvolver paginas web capaz de oferecer-lhe a
necessidade faltante.
84
Figura 7: Tela sobre o WebIf do OpenWRT.
Na figura 7 é mostrado as informações sobre o WebIf, tal como dados sobre sua licença GPL
(GNU LICENSES, 2007), de utilização, distribuição e redistribuição, sendo mostrado também
a lista de contribuintes.
85
Já na figura 8 podemos observar o status das conexões, que mostra as maquinas que estão
utilizando o roteador como gateway 65 , e as conexões estabelecidas com seus respectivos
status.
Figura 8: Status de conexão do OpenWRT na interface web.
65
Gateway. Computador ou dispositivo que serve para interligar duas ou mais redes que usem protocolos
de comunicação internos diferentes, ou, computador que interliga uma rede local à Internet.
86
Na figura 9 poderemos consultar todas as maquinas que solicitaram ip ao serviço de DHCP de
nosso router, conseguindo obter algumas informações da maquina cliente, como endereço
MAC, endereço ip, nome da maquina e em ate qual data e hora que estas informações terão
validade.
Figura 9: Clientes DHCP do OpenWRT na interface web.
87
Obteremos informações sobre o status de nossa rede wireless, a figura 10 trás exatamente o
retorno do comando “iwconfig” do Linux, nele constam o ESSID 66 , chave de encryptação,
canal utilizado, e outros.
Figura 10: Status wireless do OpenWRT na interface web.
66
ESSID. Extended Service Set Identifier (ESSID). É o código de identificação da rede sem fio. Este
código é anexado a todos os pacotes que trafegam em redes sem fio, possibilitando a identificação da rede em
que cada pacote faz parte.
88
Figura 11: Configurações do sistema do OpenWRT na interface web.
Na Figura 11 poderemos observar a tela de configuração do sistema, nela é possível setar o
nome do host, o boot_wait que deverá sempre ficar em “enable”, e a linguagem da interface
web, que fica a escolha do utilizador. E na figura 12 mostra a tela para alteração da senha do
administrador, é sempre aconselhado que a senha do administrador tenha mais que cinco
caracteres, contendo letras e números.
Figura 12: Alterações de senha do OpenWRT na interface web.
89
É possível observar na figura 13 a tela de instalação de pacotes, uma facilidade de grande
importância na interface web, através dela é possível consultar os pacotes disponíveis, instalálos, ou se necessário desinstalá-los, com grande rapidez.
Figura 13: Instalação ou desinstalação de pacotes do OpenWRT na interface web.
90
A atualização de firmware também poderá ser feita pela interface web, conforme figura 14,
basta baixar a atualização no site, salvar em seu computador, e acessar a interface web para
fazer o upgrade.
Figura 14: Atualização de firmware do OpenWRT na interface web.
91
Figura 15: Configurações de rede do OpenWRT na interface web.
Na tela de configuração de rede, figura 15, colocaremos o ip que utilizaremos para o roteador,
essa definição deverá ser feita pelo administrador de redes, de posse das informações da rede
local e do servidor DNS, basta colocar nos campos destinados e salvar as alterações.
Figura 16: Configurações da WAN do OpenWRT na interface web.
Demonstrado na figura 16 as configurações WAN, que são de grande importância para um
bom funcionamento da conexão com a internet, é possível configurar em diversos tipos de
92
conexões WAN, PPPoE, obter ip automaticamente, ip estático, entre outros, fica a cargo do
administrador buscar a configuração correta.
Figura 17: Configurações wireless do OpenWRT na interface web.
Conforme demonstrado na figura 17 é possível habilitar ou desabilitar a interface sem fio na
pagina de configurações wireless, é também onde setaremos o ESSID da nossa rede sem fio, o
canal utilizado poderá depender do cenário em que encontra sua rede, procure canais com
menos ruídos, essa medição poderá ser feita utilizando softwares ou de forma empírica,
testando os canais e vendo qual o consegue o melhor desempenho, o modo de operação
aconselhamos utilizar o “Access Point”, e o mais importante, a criptográfica utilizada, fica a
cargo do administrador da rede optar pela melhor cryptagem, sendo aconselhada aqui a
utilização da criptografia WEP 67 , apesar de ser facilmente quebrado, é de fácil configuração
dos clientes. É aconselhado que no futuro essa criptografia seja mudada para WPA2 68 , que
possui maior robustez e menor vulnerabilidade. Apenas se deve utilizar o WEP se não for
67
WEP. Do inglês Wired Equivalent Privacy. Protocolo de segurança para redes sem fio que implementa
criptografia para a transmissão dos dados. Este protocolo apresenta algumas falhas de segurança.
68
WPA2. É uma certificação de produto disponibilizada pela Wi-Fi Alliance. A WPA2 certifica que o
equipamento sem fio é compatível com o padrão IEEE 802.11i. A certificação de produto WPA2 substitui
formalmente a WEP (Wired Equivalent Privacy) e os outros recursos de segurança do padrão IEEE 802.11
original. A meta da certificação WPA2 é oferecer suporte aos recursos de segurança obrigatórios adicionais do
padrão IEEE 802.11i ainda não inclusos nos produtos com suporte a WPA.
93
possível utilizar nos equipamentos WPA 69 ou WPA2. Porem lembre-se, ter WEP é melhor do
que não ter qualquer proteção.
Esta interface web ainda proporciona a descrição e funcionalidades dos campos mais
importantes da configuração, note o lado direito da figura acima.
Figura 18: Configurações wireless avançadas do OpenWRT na interface web.
Uma funcionalidade de grande importância fica nas configurações avançadas da rede sem fio,
conforme figura 18, nela é possível conceder acesso apenas aos endereços MAC ali
discriminados, e ate fazer as configurações Wireless Distribution System 70 (WDS) se
necessário.
69
WPA. Também chamado de WEP2, ou TKIP (Temporal Key Integrity Protocol), essa primeira versão
do WPA (Wi-Fi Protected Access) surgiu de um esforço conjunto de membros da Wi-Fi Aliança e de membros
do IEEE, empenhados em aumentar o nível de segurança das redes sem fio no ano de 2003, combatendo algumas
das vulnerabilidades do WEP.
70
Wireless Distribution System, WDS. É um sistema que permite a interconexão de Access Points sem
necessidade de fios. Como descrita em IEEE 802.11, permite que uma rede wireless seja expandida usando
múltiplos pontos de acesso sem a necessidade de ligá-los via cabo.
94
Figura 19: Configurações de hosts do OpenWRT na interface web.
Na figura 19 mostra outra facilidade muito apreciada que é a configuração de ips estáticos
para certos endereços MAC, é possível informar qual ip devera ser dado pelo serviço DHCP a
determinado endereço MAC, nesta tela também é possível informar qual o nome das
maquinas referente a determinado ip, esta ultima funcionalidade alimenta o arquivo /etc/hosts.
95
Figura 20: Configuração firewall do OpenWRT na interface web.
Também é possível adicionar regras de firewall através da interface web, caso seja do gosto
do administrador, é necessário um domínio das tabelas e chains do iptables para construir
estas regras, demonstrada da figura 20.
5.3 Proposta de utilização
A solução proposta apresenta uma boa relação custo x benefício, pois tem um baixo consumo
de energia e custo de aquisição. Além disso, é versátil e totalmente customizável. com apenas
um roteador Linksys WRT54G, é possível transformá-lo num grande e robusto servidor para
compartilhamento de internet com firewall.
96
5.3.1 Vantagem do OpenWRT para sua empresa:
•
Parque de ate 40 maquinas, pelas especificações da Linksys, o roteador WRT54G
funciona bem com ate 50 maquinas, calculamos uma margem de 20% para que não
trabalhe no limite.
•
Redução do consumo de energia elétrica sempre é um item que agrada os
administradores de empresa, mas tem empresas que realmente necessitam deste
diferencial classificando-o como uma prioridade.
•
Roteamento avançado. Esta solução possui o mais avançado sistema de
roteamento, possibilitando ao administrador da rede total controle.
•
Firewall avançado. Todas as possibilidades encontradas em um sistema Linux
instalado num maquina comum é possível transportar para esta solução.
•
Possibilidade de criação de VPNs.
•
Possibilidade de controle com login por usuário. Com alguns pacotes é possível
implantar o sistema de login por usuário, que possibilita políticas mais severas de
acordo com o usuário logado, podendo bloquear determinados sites, ou ate liberar
para usuários especiais.
5.3.2 Desvantagem do OpenWRT para sua empresa:
•
Parque de maquinas maior que 40 maquinas.
•
Demanda de um profissional ou prestadora de serviço com capacitação para
implementar as políticas e exercer configurações.
•
Não possui disco rígido para armazenamento, impossibilitando que o roteador seja
utilizado para backup de arquivos da empresa, porem isso pode ser contornado
pela adaptação de uma porta USB 71 no roteador, não entraremos neste mérito pelo
71
USB. Sigla de Universal Serial Bus, ou seja, Barramento Serial Universal, é um tipo de conexão Plug
and Play que permite a conexão de periféricos sem a necessidade de desligar o computador.
97
fato desta adaptação ser de grande complexidade e acarretará o desvio do foco
inerente nesta monografia.
5.4 Considerações
Os recursos limitados comuns em sistemas embarcados obrigam a uma escolha mais criteriosa
do sistema operacional e aplicações. É de grande importante esta escolha, deve ser flexível e
modular, e que sejam de fácil adaptação a diferentes hardwares, com funções diferentes, sem
grandes alterações ou custos.
Neste trabalho ficou bem definido a facilidade de adaptação do OpenWRT a estes requisitos.
Com baixos encargos financeiros (ou pelo menos, custos não imputáveis diretamente à
utilização do sistema), grande poder de customização possibilitam que cada empresa destaque
em seu roteador suas prioridades, facilitando o controle dos administradores de redes para
aplicação das regras definidas pela diretoria da empresa.
98
6. CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS
A procura por soluções customizáveis e com baixo custo tem sido uma realidade vivenciada
nas empresas. A substituição de um computador que funciona como firewall por um roteador
customizável é uma solução interessante e atrativa, principalmente para empresas de pequeno
e médio porte.
A utilização do sistema embarcado OpenWRT no roteador Linksys WRT54G é uma solução
interessante que apresenta uma boa relação Custo x Benefício. Essa solução permite a
utilização de todos os recursos disponíveis em um firewall tradicional baseado no Linux com
a utilização do iptables. Com isso, é possível alcançar um bom nível de segurança na rede.
Esse trabalho apresenta um roteiro detalhado de configuração e customização do roteador
Linksys WRT54G (trabalhando como Firewall). Com os testes e pesquisas realizadas é
possível afirmar que a utilização do OpenWRT é uma solução eficaz e de baixo custo que
consegue substituir o Firewall tradicional utilizado em empresas de pequeno e médio porte.
Uma alternativa de continuação desse trabalho seria pesquisar a possibilidade de substituição
de um servidor de firewall mais robusto e com regras mais complexas pelo Linksys WRT54G.
Além disso, a implementação de autenticação e controle de acesso. Com isso, o equipamento
trabalharia como um portal de captura.
99
7. REFERÊNCIAS BIBLIOGRÁFICAS
GARFINKEL, Simpson. SPAFFORD, and Gene. Pratical Unix e Internet Security.
O’Reilly & Associates, Inc. Second Edition, 1996
RANUM, M. J. An Internet Firewall, proceedings of World Conference on Systems
Management and Security, 1992. ftp://decuac.dec.com/pub/docs/firewall.ps
ZWICK, Elizabeth D. Bulding Internet Firewalls. O’Reilly & Associates, Inc., Second
Edition, 2000.
WARFIELD, Michael H. Security and the Open Source Model . Atlanta Linux Showcase,
1999. http://www.wittsend.com/mhw/1999/oss_security/
SCHUBA, Christoph Ludwig. Design, and Implementation of Firewall Technology.
Purdue University, 1997.
PETERSON, James L. Petri Net Theory and Modeling of System. Prentice-Hall, 1981.
RUSSEL, Rusty. Linux netfilter Hacking, 2000. Disponível para download em
http://www.netfilter.org/documentation/HOWTO//netfilter-hacking-HOWTO.html, acesso em
Fevereiro de 2007.
MAXWELL, Scott. Linux Core Kernel commentary. Coriolis Open Press, 1999.
WOLF, W. Computers as Componentes. McGraw-Hill, 2001.
MOORE, G.E. Cramming More Components Onto Integrated Circuits. Electronics
Magazine, Vol. 38, Abr. 1965. pp 114-117.
MAGARSHACK, P. Improving SOC Design Quality through a Reproducible Design
Flow. IEEE Design & Test of Computers, Vol. 19, No. 1, Jan-Fev. 2002, pp 76-83.
KEUTZER, K. et alii. System-Level Design: Orthogonalization of Concerns and
Platform-Based Design. IEEE Transactions on Computer-Aided Design of Integrated
Circuits, Vol. 19, No. 12, Dez. 2000. pp 1523-1543.
100
DUTTA, S. Jensen, R. e Rieckmann, A. Viper: A Multiprocessor SoC for Advanced SetTop Box and Digital TV Systems. IEEE Design & Test of Computers, Vol. 18, No. 5,
Set/Out. 2001. pp 21-31
J. FARINES, J. S. Fraga, R. S. Oliveira. Sistemas de Tempo Real. Departamento de
Automação e Sistemas, Universidade Federal de Santa Catarina. Julho 2000.
DEMMELER, T. e Giusto, P. A Universal Communication Model for an Automotive
System Integration Platform. DATE’01 – Design, Automation and Test in Europe, Munich,
Alemanha, Mar. 2001. Proceedings, IEEE Computer Society Press, 2001.
PAULIN, P. et alii. Embedded Software in Real-time Signal Processing Systems:
Application and Architecture Trends. Proceedings of the IEEE, Vol. 85, No. 3, Mar. 1997.
pp 419-435.
KEATING, M. e Bricaud, P. Reuse Methodology Manual for System-on-a-Chip Designs.
Kluwer Academic Publishers, 2002 (terceira edição).
VSIA. Virtual Socket Interface Alliance, 2003. Disponível em: http://www.vsi.org
OpenWRT. Disponível em: http://openwrt.org/, acesso em Fevereiro de 2007.
uClinux. Disponível em: http://www.uclinux.org/, acesso em Fevereiro de 2007.
Windows Embedded. Disponível em: http://www.microsoft.com/windows/embedded/, acesso
em Fevereiro de 2007.
HTC Smart Mobile. Disponível em: http://www.htc.com/, acesso em Junho de 2007.
LinuxDevices. Disponível em: http://linuxdevices.com/articles/AT8073314981.html, acesso
em Junho de 2007.
Java SE Embedded. Disponível em: http://java.sun.com/javase/embedded/index.jsp, acesso
em Fevereiro de 2007.
GNU. Disponível em: http://www.gnu.org, acesso em Fevereiro de 2007.
GNU Licenses. Disponível em: http://www.gnu.org/licenses/, acesso em Fevereiro de 2007.
101
CARRO, Luigi, Wagner, Flávio Rech., Gervini, Alexandre I e Corrêa, Edgard de F .
Avaliação de Desempenho, Área, e Potência de Mecanismos de Comunicação em
Sistemas Embarcados, 2003.
CARRO, Luigi, Sistemas Computacionais Embarcados, chapter 2, 2004.
ROSA JÚNIOR, Leomar Soares da. Um estudo sobre sistemas operacionais embarcados
de tempo real, 2002.
REIS, Cleinton Peres. Embedded system applications, 1999.
GUPTA, Prof. Rajesh K. Introduction to embedded systems, 2000.
BERGAMASCHI, R.A. et alii. Automating the Design of SOCs Using Cores. IEEE Design
& Test of Computers, Vol. 18, No. 5, Set/Out. 2001. pp 32-45.
REDHAT. eCos Reference Manual, 2003. Disponível em:http://sources.redhat.com/
ecos/docslatest/ref/ecos-ref.html, acesso em Fevereiro de 2007. Technical Reference Manual,
RedHat, Mar.
IPTABLES. Disponível em: http://www.iptables.org/, acesso em Fevereiro de 2007.
Viva o Linux. Disponível em: http://www.vivaolinux.com.br, acesso em Fevereiro de 2007.
Guia Foca. Disponível em: http://focalinux.cipsga.org.br/, acesso em Junho de 2007.
Linksys. Disponível em: http://www.linksys.com/, acesso em Fevereiro de 2007.
CHAPMAN, D. Brent e ZWICKY, Elizabeth D. Building Internet Firewalls. 1. ed.
O’Reilly, 1995. Disponível em: http://www.unix.org.ua/orelly/networking/firewall/, acesso
em Fevereiro de 2007.
ORTIZ, S. JR. Embedded OSs Gain the Inside Track. IEEE: Computer, n. 11, vol. 34, pag.
14-16, Nov. 2001.
SANTO, B. Embedded Battle Royale. IEEE: Spectrum, n. 12, vol. 38, pag. 36-41,
Dec.2001.
102
OLIVEIRA, R.; Carissimi, A; Toscani, S. Sistemas Operacionais. Segunda Edição. Sagra
Luzzatto, 2001.
BARABANOV, M.; Yodaikien, V. Real-Time Linux. New Mexico Institute of Technology,
Mar. 1996
KADIONIK, P. Linux Embarqué: Le Project uClinux. Linux Magazine, France, n. 36, pag.
16-23, Fev. 2002.