Professional Documents
Culture Documents
So Lus, MA
2015
LUCAS JEFERSON DA COSTA SILVA
So Lus, MA
2015
Silva, Lucas Jeferson da Costa.
Sistema de gerenciamento de redes wi-fi de pequeno e mdio porte /
Lucas Jeferson da Costa Silva.So Lus, 2016.
80 f
CDU: 004.738.5.057.4
LUCAS JEFERSON DA COSTA SILVA
Este trabalho dedicado toda a minha famlia, que sempre me apoiou, seja com apoio finan-
ceiro, motivacional ou at mesmo atravs cobranas.
Agradecimentos
Aos meus pais, por terem sido a base de todos os meus apredizados.
Aos meus tios Ftima e Jos Raimundo, por me acolherem em sua casa e fazerem dela a minha
casa.
Aos muitos colegas que conheci nessa caminhada e que contriburam com a minha formao.
Nesse trabalho foi apresentado uma proposta de um Sistema de Gerenciamento de Redes WiFi,
onde foi feita a implementao de um prottipo, utilizando web2py, OpenWrt e Raspberry Pi,
para comprovar a eficcia do sistema. O princpio de funcionamento do sistema o gerencia-
mento de algumas funcionalidades de Access Points utilizando um sistema embarcado chamado
OpenWrt atravs de uma interface web, onde o sistema esteve executando em um computador
do tamanho de um carto de crdito, o Raspberry Pi. No decorrer deste trabalho foi mostrado a
fundamentao terica, que ajuda a entender como funciona cada parte do sistema, foi mostrado
tambm a construo do prottipo do sistema, seu funcionamento, os componentes utilizados e
os testes realizados.
This work presented a proposal of a WiFi Network Management System, which carried out
the implementation of a prototype using web2py, OpenWrt and Raspberry Pi, to prove the
effectiveness of the system. The systems working principle is the management of some Access
Points features using an embedded system called OpenWrt through a WEB interface where the
system is running on a credit-card sized computer, the Raspberry Pi. In this paper was shown the
theoretical foundation, it helps to understand how each part of the system, It has also been shown
the construction of prototype system, its operation, the components used and the tests performed.
Rede Local
Rede Metropolitana
Distribution System
Station Service
Infra Red
System on a Chip
Secure Shell
Internet Protocol
Model-view-controller
1 INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.1 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2 Hiptese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.2 Objetivos Especficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2 PADRO IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Arquitetura IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Servios IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.1 Servios de Estao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.2 Servios de Sistema de Distribuio . . . . . . . . . . . . . . . . . . . . . . 31
2.2.3 Estados de uma estao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Autenticao em redes WLAN . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.1 Autenticao Aberta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.2 Wired Equivalent Privacy (WEP) . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.3 WiFi Protected Access (WPA) . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.3.1 Extensible Authentication Protocol (EAP) . . . . . . . . . . . . . . . . . . 35
2.3.3.2 IEEE 802.1x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.4 Wi-Fi Protected Access (WPA) . . . . . . . . . . . . . . . . . . . . . . . . 37
3 OPENWRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.1 Histrico do OpenWrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 O sistema UCI (Unified Configuration Interface) . . . . . . . . . . . . . 40
3.3 Sintaxe nos arquivos de configurao . . . . . . . . . . . . . . . . . . . . 41
3.4 Configurao por linha de comando . . . . . . . . . . . . . . . . . . . . 42
4 PROTOCOLO TELNET . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1 Fundamentos do Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 RASPBERRY PI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1 Componentes do Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . 47
6 FRAMEWORK WEB2PY . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1 Mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2 Materiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2.1 TP-Link TL-WR740N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2.2 Raspberry Pi B+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.3 Implementao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.3.1 Instalao do OpenWrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3.2 Desenvolvimento do Prottipo . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.3.3 Instalao do Prottipo no Raspberry Pi . . . . . . . . . . . . . . . . . . . . 60
7.3.4 Testes Prticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8 CONCLUSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.1 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.2 Dificuldades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.3 Aprendizado do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.4 Contribuies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.5 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Apndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
APNDICE A Cdigo do Controller do Prottipo . . . . . . . . . . . 71
APNDICE B Cdigo do Model do Prottipo . . . . . . . . . . . . . 73
APNDICE C Cdigo do Mdulo de Comunicao do Prottipo . . . 75
APNDICE D Script de Configurao do Web2py com Apache no
Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . 77
25
1 INTRODUO
As redes sem fio esto sendo cada vez mais utilizadas na comunicao entre dispositivos
dos mais variados tipos e tamanhos e em diferentes ambientes. Por permitirem a mobilidade,
estas redes facilitam a ubiqidade do poder computacional, tornando transparente a disseminao
da informao e a cooperao dos dispositivos na realizao das mais variadas tarefas (VIEIRA,
2005).
Por esse motivo, os esforos visando aperfeioar ainda mais essa tecnologia so in-
cessantes, para que o usurio possa obter uma experincia agradvel na utilizao do servio
oferecido.
Por exigir padres de qualidade e disponibilidade mais elevados, os clientes corporativos
so os mais cobiados pelas grandes fabricantes de tecnologia de redes WiFi, onde so oferecidas
funcionalidades dentre as quais podemos destacar o gerenciamento centralizado dos APs (Access
Points), gerenciamento de usurios e mobilidade por toda a rea de cobertura da rede. Essas
funcionalidades, aliadas qualidade do hardware utilizado, acabam resultando em um produto
que atende as expectativas do meio corporativo, porm a um custo consideravelmente alto,
tornando a utilizao dessas tecnologias invivel para pequenas empresas e clientes domsticos.
Tendo em vista que a tecnologia WiFi est presente em variados dispositivos e a
necessidade que o usurio tem de estar sempre conectado (inclusive em suas horas de lazer) nos
faz enxergar que, em alguns lugares, um nico AP no mais o suficiente para atender essa
demanda, geralmente devido a arquiterura do ambiente e das limitaes da comunicao via RF
(Rdio Frequncia).
O presente trabalho pretende descrever a criao de um sistema que oferea funci-
onalidades de redes coorporativas, utilizando tecnologias open source e hardware de baixo
custo.
No decorrer do Trabalho, ffoi feito uma fundamentao terica sobre os elementos
cruciais para o desenvolvimento do prottipo, mais adiante sero mostrado as caractersticas e a
implementao do prottipo do projeto e, por fim, foi avaliado a eficcia das tcnicas utilizadas e
mostrado a concluso que foi possvel chegar com o desenvolvimento do projeto.
1.1 Problema
Como gerenciar mltiplos Access Points em uma rede sem a necessidade de se fazer
processos repetitivos?
1.2 Hiptese
automatizada.
1.3 Objetivos
1.4 Justificativa
O que motivou a desenvolver esse trabalho foi o alto custo para se desenvolver redes
WiFi com gerenciamento centralizado de todos os dispositivos da rede wireless.
A maioria das solues oferecidas pelo mercado so focadas a atender clientes empresa-
riais de grande porte, tornando o acesso a essas tecnologias, por parte de clientes domsticos e
pequenas empresas, pouco vivel.
27
A comunicao sem fios uma das tecnologias que mais tem crescido nos ltimos anos.
A demanda pela conexo de dispositivos sem a utilizao de cabos aumentou vertiginosamente
em todo o mundo. Atualmente, as LANs sem fios so encontradas em campus universitrios,
escritrios de empresas e em reas pblicas (FOROUZAN, 2006).
Cada vez mais organizaes descobrem que as LANs sem fio so um comple-
mento indispensvel para as LANs com fio tradicionais, para atender necessida-
des de mobilidade, relocao, interligao, rede provisria e cobertura de locais
difceis de ligar (STALLINGS, 2005).
O padro IEEE 802.11 prev que a camada fsica poder usar at trs tipos de mtodos
de transmisso: FHSS, DSSS1 e o Infra Vermelho (IR). Os padres FHSS e DSSS operam na
frequncia de 2.4 GHz, sendo que a maioria das aplicaes utilizam a tcnica de DSSS (VINCI;
FERREIRA, 2007).
Segundo CARROLL (2009), a faixa de frequncia de 2.4GHz , provavelmente, a mais
utilizada em WLANs. Sendo utilizada nos padres IEEE 802.11, 802.11b, 802.11g e 802.11n. A
faixa de frequncia de 2.4 GHz vai de 2.400 GHz a 2.4835 GHz ou 2.495 GHz (dependendo
1
Frequency-Hopping Spread Spectrum e Direct-Sequence Spread Spectrum: so tcnicas de codificao para
transmisso digital de sinais
28 Captulo 2. PADRO IEEE 802.11
da regulamentao pas). Nos Estados Unidos e no Brasil utilizado a faixa de 2.400 GHz a
2.4835 GHz, dispostos em 11 canais de largura de banda de 22 MHz, como pode ser visto na
Figura 2. Nesse cenrio, esto disponveis 11 canais, onde alguns deles se sobrepem, podendo
causar interferncia entre si. Por essa razo, os canais 1, 6 e 11 so os mais utilizados, por eles
no estarem sobrepostos.
A faixa de 5 GHz utilizada pelos padres IEEE 802.11a, 802.11n e 802.11ac. Essa
faixa de frequncia foi utilizada inicialmente no padro 802.11a, onde as taxas de transmisso
variam de 6 Mbps a 54 Mbps. Algum tempo depois, a faixa de 5 GHz foi utilizada nos padres
802.11n, que poderia usar tanto a faixa de 2.4 GHz quanto a de 5 GHz, e no padro 802.11ac,
que utiliza exclusivamente essa frequncia de transmisso.
A arquitetura definida para este padro celular, onde cada clula, denominada de Basic
Service Set (BSS), controlada por um Access Point (VINCI; FERREIRA, 2007).
Existem trs tipos de topologia nas quais possvel formar uma rede WLAN, o tipo de
topologia classificado de acordo com a forma que os dispositivos se comunicam. Os trs tipos
de topologias so IBSS (tambm conhecido como AD-HOC), BSS (o mais utilizado nas nossas
residncias) e o ESS (mais utilizadas em ambientes mais extensos ou com muita interferncia).
A seguir temos uma descrio mais detalhada de cada uma dessas topologias:
IBSS (Independent Basic Service Sets): trata-se de um grupo de estaes que se comuni-
cam de forma direta entre si, sem a necessidade de um AP para controlar o acesso, como
pode ser visto na Figura 3. Esse tipo de topologia tambm conhecida como AD-HOC.
2.1. Arquitetura IEEE 802.11 29
BSS (Basic Service Set): um grupo de estaes mveis que se comunicam em uma
clula, tendo o AP como um ponto de conexo comum, como pode ser visto na Figura 4.
Esse AP deve estar conectado rede de distribuio por meio de uma rede cabeada ou at
mesmo por conexes sem fios.
ESS (Extended Service Sets): nessa topologia, temos duas ou mais estruturas de BSS
conectadas atravs de uma rede de distribuio (uma infraestrutura de rede que pode ser
cabeada, sem fios ou fibra ptica), como pode ser visto na Figura 5. Dependendo de como
os APs esto dispostos no ambiente, possvel que as estaes possam passar da rea de
cobertura de uma BSS para a rea de cobertura de outra de forma transparente, processo
esse denominado de roaming.
30 Captulo 2. PADRO IEEE 802.11
O padro IEEE 802.11 especifica nove servios diferentes, divididos em duas categorias:
Servios de Estao (SS - Station Services) e os servios de sistema de distribuio (DSS - Dis-
tribution System Service), ambos os servios utilizados pela camada MAC (VINCI; FERREIRA,
2007).
Autenticao: Usada para estabelecer a identidade das estaes, de uma para outra.
Em uma rede LAN, geralmente se considera que o acesso a uma conexo fsica significa
autorizao para se conectar LAN. Essa no uma suposio vlida para uma WLAN, na
qual a conectividade obtida simplesmente com uma antena corretamente sintonizada. O
servio de autenticao usado pelas estaes para estabelecer sua identidade em estaes
com as quais elas iro se comunicar. O padro IEEE 802.11 no exige qualquer esquema
de autenticao especfico, que pode variar de um handshaking a esquemas de criptografia
de chave pblica (STALLINGS, 2005).
Desautenticao: Uma notificao por parte de uma estao ou AP de que uma associa-
o existente ser finalizada. Assim como necessrio a autenticao para que a estao
tenha acesso efetivo rede, necessrio que a estao emita uma notificao quando
2.2. Servios IEEE 802.11 31
Associao: Esse servio o responsvel por permitir que uma estao envie e receba
dados pela rede atravs da associao um AP, onde o processo de associao sempre
iniciado pela estao. Ainda que uma estao possa estar autenticada em mais de um AP,
ele pode estar associado somente a um AP, que o mais importante para o sistema de
distribuio quando este necessita descobrir em qual AP a estao est associada.
Desassociao: Este servio serve para informar ao AP quando uma estao no continu-
ar associada ele, podendo ser efetuado tanto pela estao como pelo AP. Esse servio
importante para que no ocorra o envio de frames de forma equivocada para um AP que
no possui mais a estao destinatria associada a ele.
Distribuio: determina como ser a entrega dos frames. Esse servio determina que o
sistema de distribuio ficar responsvel pela entrega dos frames aos seus respectivos
32 Captulo 2. PADRO IEEE 802.11
destinatrios, mesmo que a estao destino esteja associada ao mesmo AP em que a estao
de origem est associada.
O padro IEEE 802.11 define que os dispositivos que sigam esse padro devem imple-
mentar os servios anteriormente citados. Com isso, em algum momento do seu funcionamento,
toda estao poder assumir um dos trs estados que podem ser visualizados na Figura 6, onde
possvel ver melhor a funo de alguns dos servios que j foram mostrados.
Estado 1: Quando a estao encontra-se nesse estado, ela no est associada e nem
autenticada a nenhum AP. O prximo passo seria realizar autenticao em algum AP
disponvel no local.
Estado 2: Nesse estado, a estao j realizou a autenticao com sucesso, porm ainda
no est associada ao AP. Quando est nesse estado, a estao tem a opo de realizar a
associao para realizar a transmisso dos dados ou realizar a desautenticao para que ele
volte para o Estado 1.
Estado 3: nesse estado que a estao est apta a transmitir dados aos outros dispositivos
da rede, onde a estao encontra-se autenticada e associada um AP. Para sair desse estado,
a estao pode ser desautenticada para voltar ao Estado 1 ou ser desassociado para voltar
ao Estado 2, em ambos os casos o servio pode ser solicitado tanto pela estao quanto
pelo AP.
2.3. Autenticao em redes WLAN 33
Conhecida como open system, este mtodo de autenticao no possui nenhuma forma
de segurana no controle de acesso das estaes rede. Para fazer a autenticao, considerando
dois dispositivos A e B, o dispositivo A afirma sua identidade para o dispositivo B atravs de uma
34 Captulo 2. PADRO IEEE 802.11
requisio de autenticao. O dispositivo B envia para A o resultado da requisio, que pode ser
"success" ou "failure". O dispositivos estaro mutuamente autenticados caso o resultado seja
"sucess" (HOLT; HUANG, 2010).
Como no foi definido originalmente nenhum tipo de segurana para controlar a auten-
ticao das estaes, foi implementado por alguns fabricantes uma lista de autorizao acesso
baseada em endereo MAC, onde somente os dispositivos com o endereo MAC contido na lista
recebiam a resposta "sucess" pela requisies de autenticao feitas ao AP. Essa implementao
no est contida na especificao original do padro IEEE 802.11.
Com o intuito original de prover o mesmo nvel de confidencialidade que era extinta
nas redes cabeadas tradicionais, o mtodo de autenticao WEP foi inicialmente especificado no
padro IEEE 802.11b com o objetivo de fornecer confidencialidade aos dados por meio de um
algoritmo criptogrfico de chave secreta, ser eficiente a ponto de ser capaz de ser processado
rapidamente por software e ser exportvel a ponto de poder ser utilizado em outros pases alm
das fronteiras americanas (MORAES, 2010).
Segundo MORAES (2010), o WEP trabalha com o algoritmo RC42 da RSA que uma
cifra baseada em stream de fluxo, onde um algoritmo simtrico uma nica chave para criptografar
e descriptografar os dados.
2
um algoritmo simtrico de criptografia de fluxo mais usado no software e utilizado nos protocolos mais
conhecidos, como Secure Socket Layers (SSL)
2.3. Autenticao em redes WLAN 35
Na Figura 8 possvel ver como montado o frame WEP, onde a chave utilizada uma
chave de 40 bits que concatenada com uma vetor de inicializao de 24 bits para formar a
chamada seed ou semente em traduo livre. Toda vez que um texto claro vai ser enviado, ele
submetido uma operao XOR com uma stream de dados pseudorrandmicos gerado pela
semente, onde o resultado dessa operao novamente concatenado com o vetor de inicializao
e transmitido. O processo de decriptao inverso ao que acabou de ser descrito.
Por conter algumas vulnerabilidades que comprometiam a segurana das informaes
que trafegam na rede, o WEP foi definido pela Universidade de Berkeley na Califrnia e pela
Universidade de Maryland como inadequado para prover privacidade em redes sem fio em
camada de enlace.
Criado em 2003 pela Wi-Fi Alliance, o WPA tinha como objetivo encontrar e tentar
corrigir as falhas do WEP, garantindo uma forma temporria de melhorar a segurana das
WLANs enquanto o padro IEEE 802.11i era finalizado. Para isso, foi implementada uma
melhor forma de gerenciamento de chaves utilizando cifra RC4 atravs do TKIP (Temporal Key
Integrity Protocol).
O funcionamento do TKIP baseado na criao de uma chave temporal de 128 bits,
que compartilhada entre todos as estaes e o AP. Essa chave temporal combinada com o
endereo MAC da estao para ajudar compor o vetor de inicializao, que ser utilizado para
a encriptao dos dados. Para melhorar a segurana, ocorre uma distribuio dinmica dessas
chaves temporais, onde as chaves temporais so trocadas a cada 10.000 pacotes.
O WPA j seguia algumas especificaes de uma verso no terminada do padro
802.11i, que definia que o WPA deveria trabalhar de duas formas:
WPA Personal: utiliza o mtodo PSK (Pre Shared Key), que uma chave pr-compartilhada,
previamente instalada no AP e nas estaes para que se faa a autenticao das estaes,
seguido do processo de troca de chaves atravs do TKIP.
WPA Enterprise: esse mtodo de autenticao utiliza o padro IEEE 802.1x, que um
protocolo de autenticao, baseado em porta, que utiliza o EAP (Extensible Authentication
Protocol) (MORAES, 2010).
Especificado pela RFC 3748, o EAP foi muito utilizado nos anos de 1990 para prover
uma forma segura de autenticao para o protocolo PPP(Point-to-Point Protocol). Apesar de
ser mais utilizado no PPP, o EAP um simples encapsulamento que pode funcionar sobre
qualquer protocolo da camada de enlace, podendo utilizar uma ampla variedade de mtodos de
autenticao, das quais podemos citar:
36 Captulo 2. PADRO IEEE 802.11
TLS: utilizao de certificados, tanto do lado do servidor como do lado do cliente, para
prover autenticao mtua;
PEAP: similar ao TTLS, podendo, tambm, ser utilizado em conjunto com outros mtodos
de autenticao mais fracos;
No mbito de redes sem fio, o EAP utilizado para prover a segurana na autenticao
especificada pelo padro 802.1x, onde o EAP encapsulado em camada 2 e fica conhecido como
EAPOL (EAP over LAN).
Baseado na especificao final do padro IEEE 802.11i, o WPA2 foi lanado pela Wi-Fi
Alliance em 2004, fornecendo usurios domsticos e empresas um maior grau de segurana,
mantendo a compatibilidade com o WPA, ou seja, implementa o algoritmo TKIP e a autenticao
por 802.1x.
A novidade que o WPA2 passou a utilizar o algoritmo CCMP (Counter Mode with
CBC-MAC), que considerado pelo governo dos Estados Unidos como um dos mais seguros
existentes por ser baseado na especificao final do AES (Advanced Encryption Standart).
Assim como WPA, o WPA2 oferece dois mtodos de autenticao, um baseado em uma
chave pr-compartilhada e outro baseado em autenticao 802.1x.
39
3 OPENWRT
Sua funo substituir os firmwares dos roteadores WiFi vindos de fbrica, dando a eles
maior quantidade de funcionalidades e fazendo com o software que executa nesses dispositivo
deixe de ser simplesmente uma ferramenta pronta e esttica, atribuindo mais flexibilidade atravs
da possibilidade de se incluir e excluir novos pacotes de funcionalidades. Isso significa, na
prtica, que possvel ter tudo o que se precisa, sem desperdcios, com base e um kernel Linux
que mais recente do que a maioria das outras distribuies.
Os roteadores de linhas domsticas da grande maioria dos fabricantes oferecem funciona-
lidades limitadas. Essa limitaes so feitas pelo firmware padro de fbrica, que disponibilizam
apenas alguma funes ao usurio, sem oferecer o mximo que os hardwares desses dispositivos
podem oferecer. Como exemplo de funcionalidades que geralmente no so oferecidas de fbrica
e que ficam disponveis com a instalao do OpenWrt temos:
kernel oficiais GNU/Linux e s adiciona patches para o SoC e drivers para interfaces de rede
(OPENWRT, 2015).
De 2007 at os dias atuais foram lanadas vrias verses do OpenWrt, onde as verses
estveis lanadas so:
White Russian v0.9 (2007):Lanada em 2007, essa foi a primeira verso do OpenWrt
estvel que pde ser utilizada pelo pblico. O nome que o batizou veio de um famoso
coquetel, onde as verses subsequentes tambm so batizadas com nomes de coquetis;
Kamikaze v7.09 - v8.09.2 (2006-2010): Nessa verso foram feitas melhorias substanciais
para o ambiente de compilao sobre um fork do BuildRoot-NG em agosto de 2006, onde
estes foram implementados no ramo principal de desenvolvimento do Kamikaze e tornou-
se o primeiro lanamento oficial da verso estvel do Kamikaze. As verses 7 e 8 do
OpenWrt so da corrente Kamikaze e lanados durante o perodo de 2007 a 2008;
Attitude Adjustment v12.03 (2013): foi lanada em abril de 2013, onde foram adiciona-
das importantes atualizaes de segurana e, por esse motivo, recomendado que essa
verso seja utilizada em dispositivos com 4MB de memria flash ou mais;
Chaos Calmer v14.07 (2014): atual verso do OpenWrt, que usa o kernel 3.18 LTS
como base. Essa verso foi lanada em setembro de 2015.
Por ser um sistema baseado em Linux, o OpenWrt segue a mesma estrutura de arquivos
de configurao, alm de aceitar a instalao de programa de terceiros que, por sua vez, tem seus
prprios arquivos de configurao espalhados pelos diretrios do sistema, onde cada arquivo de
configurao de cada programa pode seguir uma sintaxe particular.
Para facilitar a configurao de alguns programas de terceiros, foi feita a compatibilidade
desse programas com o UCI, dessa maneira voc no tem que se preocupar com qualquer um
dos arquivos de configurao deles, basta modificar os arquivos de configurao da UCI, que
seguem uma sintaxe padro. Claro, a maioria dos softwares utilizados no tero sido preparados
para a configurao via UCI, o que pode ser algo bom, porque muitas vezes necessrio utilizar
o poder da prpria interface de configurao de um aplicativo, planejado pelos desenvolvedores.
Portanto, apenas alguns programas selecionados pelos mantenedores dos pacotes OpenWRT
foram beneficiados com da disponibilidade de uma configurao centralizada feita via UCI. A
seguir, temos alguns dos arquivos de configurao com suporte ao UCI:
Fonte:(OPENWRT, 2015).
list : define uma lista de valores, que so considerados como sendo da mesma lista de
acordo com o tipo (que nesse exemplo definido pelo valor collection).
Na definio dos tipos e dos valores pode ser usado aspas simples ou aspas duplas, mas
o uso dessas aspas no so obrigatrias, elas so utilizadas apenas para especificar valores que
contm espaos em sua composio.
At agora, foi mostrado que para alterar as configuraes era necessrio, simplesmente,
mudar os valores nos arquivos de configurao do servio que desejamos modificar. No entanto,
quando for necessrio fazer configuraes via scripts, possvel modificar qualquer configurao
UCI atravs do utilitrio de linha de comando UCI, que pode ser utilizado pelos desenvolvedores
tanto para definir novas configuraes, modificar configuraes existentes e analisar as configu-
raes feitas. Essa ltima funo pode ser muito til quando o desenvolvedor precisa analisar
um arquivo de configurao UCI para tomar outra deciso, tornando o uso dos comandos awk ou
grep totalmente desnecessrios.
A estrutura base dos comandos UCI : "uci [<options>] <command> [<arguments>]"
3.4. Configurao por linha de comando 43
Na estrutura base dos comandos UCI temos as opes (options), que servem como
comandos opcionais para controlar como os resultados sero mostrados ou para especificar como
o comando ser executado. A Tabela 1 mostra os comandos UCI padres, sua utilizao e a
descrio de cada um.
Por ser uma interface de linha de comando, os comandos UCI so utilizados quando
feito o acesso remoto ao dispositivo que executa o OpenWrt. Para permitir o acesso remoto aos
dispositivos, o OpenWrt oferece nativamente servidores Telnet e SSH.
45
4 PROTOCOLO TELNET
Uma conexo Telnet usa o protocolo TCP como base para transmisso. A figura 11
mostra os elementos de uma conexo Telnet entre dois computadores. Para efetuar um conexo
necessrio que no computador do cliente tenha instalado um servio de Telnet Client e para
que o computador destino possa responder requisio de conexo do cliente necessrio que o
o mesmo tenha um servio Telnet Server instalado.
primeira vista, pode ser surpreendente que Telnet tenha levado tanto tempo para se
desenvolvido, porque, em teoria, deveria ser um protocolo muito simples de definir: tudo o que
precisa fazer enviar as teclas digitadas e a sada do programa atravs da rede como qualquer
outro protocolo. Isso seria verdadeiro se cada terminal de computador usasse o mesmo mtodo
de comunicao, mas essas mquinas no faziam isso. O protocolo Telnet torna-se complicado
porque esse protocolo precisa permitir que um terminal de um fabricante seja capaz de falar
com um computador que pode usar uma representao de dados muito diferentes (KOZIEROK,
2005).
Para resolver esse problema, o Telnet implementa uma tecnologia que permite a garantia
de compatibilidade entre diferentes tipos de terminais, permitindo que a utilizao de recursos
especiais opcionais ao computadores que permitirem tais recursos. Para isso, o protocolo Telnet
se baseia em trs fundamentos:
Regras de Negociao: permite que alguns terminais anfitries ofeream opes extras,
que no so especificadas nas opes padro. A regra bsica para a inicializao do uso de
uma opo que uma das partes (ou ambas) faa uma solicitao de incio da opo, que
pode, ou no, ser aceito pelo outro lado (CCM, 2015);
Opes e Opes de Negociadas: servem para evitar situaes de bloqueio, onde pode
ser que uma das partes envie pedidos de negociao de opes a cada confirmao de outra
parte. Para isso, os pedidos devem ser emitidos apenas quando houver uma mudana de
modo, quando uma das partes receber um pedido de mudana de modo a adoo desse
modo s deve acontecer se o modo adequado no estiver ativo e um pedido s pode ser
inserido no fluxo de dados no lugar onde tem efeito.
47
5 RASPBERRY PI
Para construir o prottipo do projeto, foi utilizado o Raspberry Pi modelo B+. Podemos
ver, destacados na Figura 12, os componentes mais relevantes para a formao da estrutura deste
pequeno computador:
48 Captulo 5. RASPBERRY PI
Fonte:(ELEMENT14, 2015).
Broadcom BMC2835 700MHz SoC ARM 11: esse o SoC, onde temos o CPU de
700 MHz, GPU e memria RAM de 512 MB. Alm disso, ele responsvel por gerenciar
perifricos como o GPIO (General Purpose Input/Output).
Portas USB 2.0: Esse modelo conta com 4 portas USB disponveis para conectar perifri-
cos compatveis com o padro USB.
Porta Ethernet 100/10 mbps: nico meio de conexo de rede disponvel por padro
em todos os modelos lanados at o momento.
GPIO 40 pinos: Consiste em duas filas de pinos, onde a maior parte desses pinos so
de propsitos gerais de entrada/sada. Ele pode ser usado para conectar o Raspberry Pi
outros dispositivos eletrnicos (SCHMIDT, 2014).
5.1. Componentes do Raspberry Pi 49
Conector DSI: interface DSI (Display Serial Interface), que pode ser utilizado para
conectar uma tela compatvel com esse tipo de conexo.
Porta HDMI: conexo para vdeo e udio digital de alta qualidade que pode ser conectado
a TVs ou monitores.
Conector CSI: interface CSI (Camera Serial Interface), que pode ser utilizado para
conectar uma cmera compatvel com esse tipo de conexo.
Power Connector: umas das entradas para fonte de energia, que trata-se de uma porta
mini USB. Alm dessa entrada, o Raspberry Pi pode ser energizado por um par de pinos
GPIO, que so especificamente para essa funcionalidade.
Micro SD Connector: essa conexo utilizada para o encaixe do carto micro SD, que
onde o sistema operacional ser armazenado.
51
6 FRAMEWORK WEB2PY
O Web2py procura seguir rigorosamente os dois primeiros princpios por forar o desen-
volvedor a utilizar boas prticas de engenharia de software, utilizando o amplamente difundido
padro de projeto MVC e incentivando o reaproveitamento de cdigo. O framework guia o
1
um conjunto de rotinas e padres estabelecidos por um software, que se resume a utilizar seus servios, sem
implementar nada na prpria API.
52 Captulo 6. FRAMEWORK WEB2PY
Fonte:(PIERRO, 2013).
Aplicao welcome: uma das aplicaes padro do Web2py, que serve como base para
o desenvolvimento de novas aplicaes;
Fonte:(PIERRO, 2013).
7 DESENVOLVIMENTO
Nessa etapa, ser feito um detalhamento dos materiais utilizados no prottipo do projeto,
assim como as etapas realizadas para o desenvolvimento do mesmo.
7.1 Mtodo
3. Desenvolvimentos dos algoritmos que permitiram o envio de comandos para os APs com
o OpenWrt j instalados, que chamaremos de mdulo de comunicao;
6. Testes Prticos.
7.2 Materiais
OpenWrt correta a ser utilizada para cada verso de hardware, onde a utilizao da verso errada
pode acarretar na inutilizao do equipamento.
7.2.2 Raspberry Pi B+
7.3 Implementao
O projeto de Gerenciador de Redes WiFi tem como objetivo criar um sistema para
gerenciar dispositivos WiFi em uma rede local. Para realizar essa tarefa, o sistema contar
com uma interface de configurao que poder ser acessada por qualquer navegador, onde as
configuraes feitas pela interface web so enviadas aos APs.
Os APs funcionam como servidores Telnet, esperando para serem acessados pelo
sistema de gerenciamento WiFi, que por sua vez converte as configuraes feitas pela interface
web em comandos UCI e acessa os APs cadastrados no sistema por linha de comando atravs do
protocolo Telnet. Podemos ver na Figura 17 a arquitetura dos elementos da rede e a topologia
utilizada:
Para conseguir chegar ao prottipo funcional, foi necessrio seguir um pequeno roteiro,
58 Captulo 7. DESENVOLVIMENTO
Fonte: http://www.tp-link.com.br/resources/simulator/TL-WA701ND/Index.htm
Gerenciamento de SSIDs: nessa seo possvel editar dois SSIDs que sero exibidos
por todos os APs cadastrados. Ser possvel modificar cada SSID, editando o prprio
nome do SSID, o tipo de criptografia utilizada para fazer autenticao, a senha de acesso e
at mesmo os dados de um servidor RADIUS para prover a autenticao externa.
Todo o sistema de gerenciamento foi feito utilizando o web2py, onde o sistema dividido
em duas partes, a primeira parte a dos views, models e controllers, que visam fornecer toda a
parte interao com o usurio, manipulao e armazenamento dos dados; e a segunda parte a do
mdulo de comunicao, que foi implementado com o objetivo de receber os dados fornecidos
pelo usurio, convert-los para comandos de texto UCI e enviar esses comandos todos os APs
cadastrados por meio do protocolo Telnet
Reiniciar o Apache.
O script est disponvel na sua forma completa no Apndice D para quem quiser obter
mais aprofundamento sobre o funcionamento do mesmo.
Nesse ponto, caso no ocorra nenhum problema durante a execuo do script de
instalao, o ambiente estar pronto para importar o Sistema de Gerenciamento de Rede WiFi
por meio da aplicao admin do web2py, que server para gerenciar as aplicaes instaladas.
Para o funcionamento do sistema, tambm exigido a instalao do banco de dados
MySQL, onde ser criada uma tabela com o nome "wifi".
Para realizar os testes prticos foram utilizados dois dispositivos TP-Link TL-WR740N
(um com o hardware v4.23 e o outro com o hardware v4.25) e um Raspberry Pi modelo B+.
Foi feito o processo de substituio do firmware do fabricante pelo OpenWrt nos TP-Link TL-
WR740N, a execuo do script para criao do ambiente de execuo de aplicaes web2py com
7.3. Implementao 61
Note que na Tabela 2 no foi inserido o endereo IPV4 do smartphone. Isso acontece
porque ele vai ter o papel de simplesmente monitorar as modificaes feitas nos SSIDs e
criptografias de autenticao utilizadas. Para realizar essa funo, o smartphone s precisava ter
o aplicativo Wifi Analyzer instalado e no precisava estar conectado rede WiFi.
Com toda a rede montada e os dispositivos se comunicando normalmente, usamos o
notebook para acessar o sistema de gerenciamento para cadastrar os dispositivos. Para realizar
essa tarefa, basta abrir o navegador e colocar o endereo 192.168.1.200. Feito isso, o navegador
mostrou a tela mostrada na Figura 19, onde foi clicado na seo "Dispositivos".
como mostra a Figura 22, e comparar com o que mostra o aplicativo Wifi Analyzer, como na
Figura 23. Aps isso, editar as configuraes atravs do sistema e aplicar as configuraes nos
APs, finalizando com uma nova comparao com o que mostra o Sistema de Gerenciamento de
Rede WiFi e o Wifi Analyzer, para comprovar que as modificaes feitas pelo sistema refletem
nos APs em poucos segundos.
Figura 23 Primeiro escaneamento das redes WiFi no local feita pelo Wifi Analyzer.
Aps cerca de cinco segundos, as configuraes feitas so efetivadas nos APs e eles j
comeam a se comportar de acordo com o que foi definido no sistema, a prova disso a Figura
25, que mostra o escaneamento das redes WiFi durante os testes, onde o resultado mostra total
compatibilidade com as configuraes feitas no Sistema de Gerenciamento de Rede WiFi.
Figura 25 Segundo escaneamento das redes WiFi no local feita pelo Wifi Analyzer.
8 CONCLUSO
Garantir uma forma fcil e barata de gerenciar dispositivos de rede WiFi na rede facilita
muito a adoo dessa tecnologia por parte de pequenas e mdias empresas e em ambientes
domsticos, uma vez que ela facilita a configurao dos dispositivos cadastrados e garante a
escalabilidade da rede de forma mais simples.
Durante o desenvolvido prottipo do projeto, algumas dificuldades acabaram aparecendo
devido a falta de experincia com algumas tecnologias utilizadas, mas, no final, conseguimos
chegar a um prottipo funcional, conseguindo atender as funcionalidades propostas, inicialmente,
nos objetivos especficos.
8.1 Resultados
sempre foi possvel ver as mltiplas aplicaes para o que aprendemos e fica difcil, para alguns,
pensar fora do contexto da disciplina e ampliar as possibilidades de uso do que aprendemos.
Dessa maneira, o maior aprendizado obtido foi na utilizao de mltiplos conceitos
e tecnologias, resultando em um amadurecimento multidisciplinar e na descoberta da grande
vantagem da utilizao de vrios conceitos para a soluo dos problemas enfrentados pela
humanidade.
8.4 Contribuies
Esse trabalho criou a base para a construo de um projeto de rede WiFi com gerncia
e configurao centralizada, de forma que o foco sempre esteve em conseguir implementar os
conceitos bsicos, com o objetivo de ser chegar a um prottipo funcional do sistema, sem se
preocupar muito com funcionalidades como a segurana das informaes.
Sendo assim, foi definido como trabalhos futuros, a possibilidade de implementao
de prottipos funcionais que implementem, principalmente, funes de segurana, que um
fator essencial na atualidade. Para isso, poderamos citar citar como melhoria que poderiam ser
implementadas em trabalhos futuros:
A substituio do Telnet pelo SSH como forma de comunicao entre o sistema e os APs;
Referncias
GAST, M. 802.11 Wireless Networks: The Definitive Guide. [S.l.]: ed. 2, OReilly, 2005.
ISBN 0596100523.
HOLT, A.; HUANG, C. 802.11 wireless networks security and analysis. London: Springer,
2010. ISBN 978-1-84996-274-2.
OHARA, B.; PETRICK, A. IEEE 802.11 Handbook: A Designers Companion. [S.l.]: Wiley,
2005. (IEEE standards wireless networks series).
SCHMIDT, M. Raspberry Pi: a quick-start guide. Firsco, TX: The Pragmatic Programmers,
2014. ISBN 978-1-93778-580-2.
68 Referncias
VINCI, O.; FERREIRA, P. WiIP Sistema de Comunicao VoIP Wi-Fi. So Paulo, 2007.
Apndices
71
#########################################################################
## UEMA - Universidade Estadual do Maranho
## Curso de Engenharia da Computao
## Desenvolvido por Lucas Jeferson da Costa Silva com base no modelo for-
## necido pelo framework web2py
##
## Esse o controller default, responsvel por realizar todas funes do
## prottipo.
#########################################################################
def wifi():
return dict()
def ssid():
rows = db().select(db.t_wireless.ALL)
return dict(rows = rows)
def edit_ssid():
arg = request.args(0, cast=int)
form = SQLFORM(Wireless, arg, showid=False, submit_button=Salvar)
if form.accepts(request,session):
session.flash = form accepted
redirect(URL(ssid))
elif form.errors:
response.flash = form has errors
else:
response.flash = please fill the form
return dict(form=form)
def dispositivos():
rows = db().select(db.t_dispositivo.ALL)
return dict(rows = rows)
def add_dispositivo():
form = SQLFORM(Dispositivos, submit_button=Salvar)
if form.process().accepted:
form_canal = form.vars.f_canal
form_end = form.vars.f_endereco
enviarTelnetSimples(wireless.radio0.channel=+form_canal+\n,form_end)
redirect(URL(aplicar))
elif form.errors:
response.flash = Erros no formulrio!
else:
response.flash = Preencha o formulrio!
return dict(form=form)
def del_dispositivo():
72 APNDICE A. Cdigo do Controller do Prottipo
db(Dispositivos.id==request.args(0, cast=int)).delete()
redirect(URL(dispositivos))
def edit_dispositivo():
arg = request.args(0, cast=int)
form = SQLFORM(Dispositivos, arg, showid=False, submit_button=Salvar)
if form.accepts(request,session):
form_canal = form.vars.f_canal
form_end = form.vars.f_endereco
enviarTelnetSimples(wireless.radio0.channel=+form_canal+\n,form_end)
redirect(URL(aplicar))
elif form.errors:
response.flash = form has errors
else:
response.flash = please fill the form
return dict(form=form)
def aplicar():
listaDeComandos = []
for rows in db().select(db.t_wireless.ALL):
dictDados = {}
if (rows.f_disable):
dictDados[disable] = 1
else:
dictDados[disable] = 0
dictDados[ssid] = rows.f_ssid
dictDados[encryption] = converter_cript(rows.f_encryption)
dictDados[key] = rows.f_key
dictDados[server] = rows.f_server
dictDados[port] = rows.f_port
numeroDaInterface = int(rows.id) - 1
listaDeComandos += gerarComandos(dictDados, str(numeroDaInterface))
listDispositivos = []
for row in db().select(db.t_dispositivo.ALL):
print(row.f_endereco)
listDispositivos.append(row.f_endereco)
enviarTelnet(listDispositivos, listaDeComandos)
message = "Enviado!"
return dict(message = message)
73
#########################################################################
## UEMA - Universidade Estadual do Maranho
## Curso de Engenharia da Computao
## Desenvolvido por Lucas Jeferson da Costa Silva com base no modelo for-
## necido pelo framework web2py
##
## Esse o model, responsvel por realizar toda a modelagem de banco de
## dados do sistema.
#########################################################################
if not request.env.web2py_runtime_gae:
#Conexo com o banco de dados MySQL local.
db = DAL(mysql://root:123456@localhost/wifi)
else:
## connect to Google BigTable (optional google:datastore://namespace)
db = DAL(google:datastore+ndb)
## store sessions and tickets there
session.connect(request, response, db=db)
## or store session in Memcache, Redis, etc.
## from gluon.contrib.memdb import MEMDB
## from google.appengine.api.memcache import Client
## session.connect(request, response, db = MEMDB(Client()))
auth = Auth(db)
service = Service()
plugins = PluginManager()
## configure email
mail = auth.settings.mailer
74 APNDICE B. Cdigo do Model do Prottipo
Dispositivos = db.define_table(t_dispositivo,
Field(f_endereco, string, label=IP do dispositivo),
Field(f_canal, string, requires=IS_IN_SET(range(1,12)), label=Canal do AP),
Field(f_nome, string, label=Nome do AP)
)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gluon import *
import socket
import telnetlib
#Cria uma lista com os comandos, contidos no dicionrio, que sero utilizados
listComandos = dictComandos.keys()
def converter_cript(ssid):
if ssid == Aberto:
return none
elif ssid == WPA-PSK:
76 APNDICE C. Cdigo do Mdulo de Comunicao do Prottipo
return psk
elif ssid == WPA2-PSK:
return psk2
elif ssid == WPA2-Enterprise:
return wpa2
else:
return none
77
read CONFIRM
#!/bin/bash
# optional
# dpkg-reconfigure console-setup
# dpkg-reconfigure timezoneconf
# nano /etc/hostname
# nano /etc/network/interfaces
# nano /etc/resolv.conf
# reboot now
# ifconfig eth0
<VirtualHost *:80>
WSGIProcessGroup web2py
WSGIScriptAlias / /home/www-data/web2py/wsgihandler.py
WSGIPassAuthorization On
<Directory /home/www-data/web2py>
AllowOverride None
Order Allow,Deny
Deny from all
<Files wsgihandler.py>
79
AliasMatch ^/([^/]+)/static/(?:_[\d]+.[\d]+.[\d]+/)?(.*) \
/home/www-data/web2py/applications/$1/static/$2
<Directory /home/www-data/web2py/applications/*/static/>
Options -Indexes
Order Allow,Deny
Allow from all
</Directory>
<Location /admin>
Deny from all
</Location>
<LocationMatch ^/([^/]+)/appadmin>
Deny from all
</LocationMatch>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/self_signed.cert
SSLCertificateKeyFile /etc/apache2/ssl/self_signed.key
WSGIProcessGroup web2py
WSGIScriptAlias / /home/www-data/web2py/wsgihandler.py
WSGIPassAuthorization On
<Directory /home/www-data/web2py>
AllowOverride None
Order Allow,Deny
Deny from all
<Files wsgihandler.py>
Allow from all
</Files>
</Directory>
AliasMatch ^/([^/]+)/static/(?:_[\d]+.[\d]+.[\d]+/)?(.*) \
/home/www-data/web2py/applications/$1/static/$2
<Directory /home/www-data/web2py/applications/*/static/>
Options -Indexes
ExpiresActive On
ExpiresDefault "access plus 1 hour"
Order Allow,Deny
Allow from all
</Directory>
/etc/init.d/apache2 restart
cd /home/www-data/web2py
sudo -u www-data python -c "from gluon.widget import console; console();"
sudo -u www-data python -c "from gluon.main import save_password;
save_password(raw_input(admin password: ),443)"
echo "done!"
}