CENTRO UNIVERSITÁRIO DO SUL DE MINAS – UNIS MG BACHARELADO EM SISTEMAS DE INFORMAÇÃO ROGÉRIO RESENDE SOARES
INSTALAÇÃO DO RADIUS: Integração com sistema de gestão
Varginha-MG 2011
ROGÉRIO RESENDE SOARES
INSTALAÇÃO DO RADIUS: Integração com sistema de gestão
Monografia apresentado ao curso de graduação em Bacharelado em Sistemas de Informação do Centro universitário do Sul de Minas – UNIS MG, como pré-requisito conclusão do curso urso,, sob orien rienta taçã çãoo do Prof Prof.. Ric Ricardo rdo Bernardes Mello.
Varginha-MG 2011
ROGÉRIO RESENDE SOARES
INSTALAÇÃO DO RADIUS: Integração com sistema de gestão
Monografia apresentado ao curso de graduação em Bacharelado em Sistemas de Informação do Centro universitário do Sul de Minas – UNIS MG, como pré-requisito conclusão do curso urso,, sob orien rienta taçã çãoo do Prof Prof.. Ric Ricardo rdo Bernardes Mello.
Varginha-MG 2011
ROGÉRIO RESENDE SOARES
INSTALAÇÃO DO RADIUS: Integração com sistema de gestão
Monografia apresentado ao curso de graduação em Bacharelado em Sistemas de Informação do Centro universitário do Sul de Minas – UNIS MG, como pré-requisito conclusão do curso, sob orientação do Prof. Ricardo Bernardes Mello.
Aprovado em _____/_____/_____ _____/_____/_____
_______________________ __________________________________ _______________________ ______________ __ Prof. Esp. Ricardo Bernardes de Mello
_______________________ __________________________________ _______________________ ______________ __ Prof. Ms. Simone de Paula Teodoro Moreira
_______________________ __________________________________ _______________________ ______________ __ Profª Ms. Letícia Rodrigues da Fonseca OBS.:
1
RESUMO Esse projeto tem como objectivo desenvolver uma forma mais eficiente de autenticação dos usuários da rede sem fio do Grupo UNIS. Isso se fez necessário porque o sistema de autenticação da rede sem fio têm várias limitações. Por exemplo, a senha não pode ser alterada pelo usuário, não é possível obter informações estatísticas, os usuarios não podem usar a mesma senha do sistema de gestão, entre outras limitações. A principal hipótese é fazer uso dos usuários e senhas cadastrados no sistema de gestão acadêmica. Foi feita uma analise no atual sistema de gestão do Grupo UNIS para identificar os recursos disponíveis. Foi feita uma pesquisa bibliográfica sobre os principais recursos de rede e autenticação atualmente disponíveis, disponíveis, priorizando-se os recursos de código aberto por ser de menor custo. Decidiu-se usar o servidor RADIUS, com um método de autenticação externo, escrito em linguagem PHP. Com a flexibilidade disponível nesses recursos, foi possível fazer uso das senhas do sistema de gestão para autenticação dos usuários da rede sem fio. Conseguiu-se um sistema seguro, flexível e integrado de baixo custo de instalação, devido ao uso de sistemas de código aberto. O modelo abordado pode ser usado em outras instituições e empresas, bem como pode pode ser integrado com com outros sistemas de gestão. Palavras-chave: Autenticação , RADIUS, WIRELESS.
2
ABSTRACT This project aims to develop a more efficient way of authenticating users of wireless UNIS Group. This was necessary because the authentication system of wireless network have several limitations. For example, the password can not be changed by the user, it is not possible to obtain statistical information, users can not use the same password management system, among other restrictions. The main hypothesis is to make use of user names and passwords registered in the system of academic management. An analysis was made in the current management system UNIS Group to identify the resources available. A search of the literature on the key features and network authentication currently available, focusing on the capabilities of open source because of its lower cost. He decided to use the RADIUS server with an external authentication method, written in PHP. With the flexible features installed, it was possible to make use of the password management system for user authentication of the wireless network. We managed to a secure, flexible and integrated, low cost of installation, due to the use of open source systems. The model discussed can be used in other institutions and companies, and can be integrated with other management systems. Key-Words: Authentication, Wireless, RADIUS.
3
Índice de Figuras Figura 1: Protocolo. Fonte: Korose e Ross (2010).............................................................................11 Figura 2: Arquitetura da LAN Wireless IEEE 802.11. Fonte: Korose e Ross (2010)........................13 Figura 3: Arquitetura básica de um roteador. Fonte: Korose e Ross (2010)......................................14 Figura 4: Requisições entre o servidor DHCP e servidor RADIUS...................................................17 Figura 5: Dicionário de dados sistema Vetorh – Senior.....................................................................26 Figura 6: Esquema estrutural da rede sem fio....................................................................................29 Figura 7: Teste de requisição de endereço IP.....................................................................................32 Figura 8: Resposta recebida após o teste............................................................................................33
4
Índice de tabelas Tabela 1: Tipos de redes.....................................................................................................................11 Tabela 2: Pilha de protocolo da internet.............................................................................................12 Tabela 3: Atributos do RADIUS.........................................................................................................17 Tabela 4: Exemplo de uso da linguagem SQL...................................................................................20 Tabela 5: Campos da tabela PESSOA................................................................................................24 Tabela 6: Campos da tabela DADOSFUNC.......................................................................................24 Tabela 7: Campos da tabela PROFDISC............................................................................................24 Tabela 8: Campos da tabela 'Cadastro de Funcionários' (R034FUN)................................................27 Tabela 9: Variáveis geradas pelo 'radtest' e enviadas ao servidor RADIUS.......................................31 Tabela 10: Teste de autenticação........................................................................................................33
5
Sumário 1 INTRODUÇÃO................................................................................................................................8 1.1 Justificativa..............................................................................................................................8 1.2 Objetivos..................................................................................................................................8 1.2.1 Objetivo Geral...................................................................................................................8 1.2.2 Objetivo Específico...........................................................................................................9 2 REFERENCIAL TEÓRICO...........................................................................................................10 2.1 Redes de computadores.........................................................................................................10 2.1.1 Redes e Internet...............................................................................................................10 2.1.2 Redes de acesso...............................................................................................................10 2.1.3 Protocolo.........................................................................................................................11 2.1.4 Camadas de protocolo.....................................................................................................12 2.1.5 Redes sem fio..................................................................................................................13 2.1.6 Roteador..........................................................................................................................14 2.1.7 Endereços MAC .............................................................................................................15 2.1.8 ARP – Protocolo de resolução de endereços...................................................................15 2.1.9 Protocolo DHCP.............................................................................................................16 2.1.10 Protocolo RADIUS.......................................................................................................16 2.2 Considerações Gerais sobre Segurança em Redes ................................................................18 2.2.1 Identificação e Autenticação de Usuários ......................................................................18 2.3 Banco de Dados.....................................................................................................................19 2.3.1 Conceitos de definições de Banco de Dados...................................................................19 2.3.2 Linguagens de manipulação de dados.............................................................................19 2.3.3 Estrutura básica do SQL.................................................................................................20 2.4 Sistema operacional ..............................................................................................................20 2.4.1 FreeBSD..........................................................................................................................21 2.5 Linguagens de programação..................................................................................................21 2.5.1 Linguagem PHP..............................................................................................................21 2.6 Gestão integrada de organizações..........................................................................................22 2.6.1 Sistemas Integrados de Gestão Empresarial...................................................................22 2.6.2 Sistema Universus...........................................................................................................23 2.6.3 Empresa CadSoft15.........................................................................................................23 2.6.4 Banco de dados do sistema de gestão acadêmica............................................................23 2.6.5 Funções do banco de dados definidas pela Cadsoft........................................................25 2.6.6 Filtros para liberação do acesso a rede sem fio no sistema acadêmico...........................25 2.6.7 Sistema Gestão de Pessoas Senior..................................................................................25 2.6.8 Empresa SENIOR...........................................................................................................26 2.6.9 Banco de dados do sistema Gestão de Pessoas...............................................................26 2.6.10 Filtros para liberação do acesso a rede sem fio no departamento de pessoal...............27 2.6.11 WGU - Wireless Grupo Unis.........................................................................................27 3 METODOLOGIA...........................................................................................................................28 3.1 Rede sem fio Grupo UNIS.....................................................................................................28 3.2 Instalação do sistema operacional..........................................................................................29 3.3 Configuração básica do servidor............................................................................................29 3.4 Servidor RADIUS..................................................................................................................30 3.5 Configuração do serviço Radius............................................................................................30 3.6 Testes de requisição de endereço IP.......................................................................................31 3.7 Testes de autenticação no servidor radius..............................................................................32 4 CONCLUSÃO................................................................................................................................34 6
5 REFERENCIAS BIBLIOGRÁFICAS...........................................................................................36 6 APÊNDICES E ANEXOS..............................................................................................................38 6.1 Arquivos de configuração do FreeRADIUS..........................................................................38 6.1.1 Nets.php – Programação externa para autenticação no sistema de gestão......................38 6.1.2 radius.conf – Configuração do modulo sql no radius.....................................................40 6.1.3 sql.conf – Configuração UnixODBC no radius..............................................................40 6.1.4 sites-enabled/default – Configuração da autenticação externa.......................................41 6.1.5 clients.conf – Configuração de permissões de acesso para clientes do RADIUS...........41 6.2 UnixODBC e FreeTDS – Configuração UnixODBC no FreeBSD.......................................41 6.2.1 odbcinst.ini......................................................................................................................41 6.2.2 odbc.ini............................................................................................................................41 6.2.3 freetds.conf......................................................................................................................41 6.3 Procedimentos armazenados do banco de dados do sistema WGU.......................................42 6.3.1 status_DP – Verifica sistema de gestão de pessoas Senior..............................................42 6.3.2 status_OU – Verifica usuários do sistema WGU............................................................42 6.3.3 status_PF – Verifica professores.....................................................................................42 6.3.4 status_RA – Verifica alunos............................................................................................43 6.3.5 GetIP – Calcula próximo endereço de rede.....................................................................44 6.3.6 WGU – Atualiza e verifica dados dos usuários da rede sim fio......................................44
7
1 INTRODUÇÃO O uso de dispositivos móveis tem aumentado em grande escala. Diante disso as organizações estão se aprimorando para disponibilizar meios para que seus usuários possam se conectar a sua rede por meio destes dispositivos móveis. As instituições de ensino, em especial, promovem o desenvolvimento da tecnologia e devem ser referência em oferecer meios de acesso aos seus alunos, professores e colaboradores. No entanto é um desafio restringir o acesso a apenas as pessoas que estão de vinculadas a essas instituições, visto que a maioria destas instituições não dispõe de recursos suficientes para fornecer acesso ilimitado a toda comunidade. Portanto é importante um sistema de controle de acesso que atualize de modo automático a situação atual de cada usuário do acesso a rede sem fio em relação a instituição que fornece o acesso.
1.1 Justificativa Existe uma grande rotatividade de pessoas a cada novo semestre em uma instituição de ensino. Novos alunos se matriculam enquanto outros solicitam trancamentos. Além disso, ocorrem também desistências. Novos professores são contratados e outros saem da instituição. Com frequência, é necessário que outras pessoas que não têm vínculo direto com essas instituições, tenham acesso a rede de dados, como por exemplo, palestrantes, consultores e outros. Atualmente, é necessária uma intervenção manual para essa liberação de acesso, causando assim falta de segurança e de controle na rede, como também retrabalho manual.
1.2 Objetivos O objetivo desse projeto foi realizar melhorias no sistema de autenticação dos usuários da rede sem fio.
1.2.1 Objetivo Geral Esse projeto identificou os recursos disponíveis nos sistemas de gestão para autenticação dos 8
usuários da rede sem fio, e instalou e configurou outras aplicações e serviços necessários para isso.
1.2.2 Objetivo Específico Verificou-se nos atuais sistemas de gestão as informações e procedimento que poderiam ser usados na autenticação de usuários da rede sem fio. Instalou-se e configurou-se um servidor de autenticação que permite o uso das senhas já cadastradas no sistema de gestão acadêmica e em com outros bancos de dados de usuários. O sistema foi planejado para ter flexibilidade e ser adaptável as mudanças que poderão ocorrer nos sistemas de gestão.
9
2 REFERENCIAL TEÓRICO Apresenta-se aqui uma breve descrição dos conceitos básicos encontrados na literatura que se relacionam com as tecnologias utilizadas no desenvolvimento desse projeto, como também alguns conceitos básicos de banco de dados e linguagem de programação.
2.1 Redes de computadores As redes de computadores são muito comuns atualmente. A história delas é bastante recente quando comparada a outras tecnologias como rádio e televisão por exemplo.
2.1.1 Redes e Internet Segundo Korose e Ross (2010), na década de 60, as redes telefônicas eram o principal meio de comunicação no mudo inteiro. Devido ao crescimento no uso dos computadores e da multiprogramação, foi necessário interligá-los, tendo em vista que os usuários estão distribuídos em várias localizações geográficas. Nesse momento surge a internet para realizar esse processo de interligação. A internet é uma rede de computadores que conecta vários dispositivos, basicamente computadores, segundo Korose e Ross (2010). Entretanto um número cada vez maior de outros dispositivos tem sido elaborado com a funcionalidade de conectar-se à internet. Além disso, existe atualmente uma grande variedade de redes de acesso.
2.1.2 Redes de acesso As redes de acesso, segundo Korose e Ross (2010), são enlaces físicos que fazem conexão entre um sistema final e o primeiro roteador, que por sua vez faz a conexão com outro sistema e assim por diante. Existem vários tipos de redes acesso, que usam vários meios de acesso diferentes. Alguns exemplos de redes de acesso estão listados na Tabela 1.
10
Discadas - Usam as linhas telefônicas analógicas; DSL - Usam linhas telefônicas digitais; Cabo - Usam as redes de televisão por meio de um cabo coaxial; FTTH – Fazem uso de cabos de fibra ótica; Ethernet – Usam pares de fios de cobre trançados; Wifi – Usam canais de rádio sem uso de cabos físicos; Tabela 1: Tipos de redes
Os componentes que tornam possíveis as trocas de informações através de uma rede são chamados de protocolos. Existe uma grande variedade de protocolos. Entender o que são e como funcionam é essencial para compreender o funcionamento de qualquer tipo de rede.
2.1.3 Protocolo Protocolo é um termo importante em redes de computadores. Sem ele as redes simplesmente não funcionariam. Em seu livro, Korose e Ross (2010) faz uma analogia a comunicação entre pessoas para exemplificar o que é um protocolo dentro de redes de computadores, conforme apresentado na Figura 1.
Figura 1: Protocolo. Fonte: Korose e Ross (2010)
11
Quando se encontra com alguém com quem queremos falar, primeiramente cumprimenta-se e espera-se uma resposta, depois fala-se ou pergunta-se algo e novamente aguarda-se a resposta, e assim sucessivamente. O mesmo processo acontece em um protocolo de rede. Em qualquer tipo de acesso na internet estão envolvidos duas ou mais unidades de rede que sejam capazes de entender um mesmo protocolo. Portanto, Korose e Ross (2010) define protocolo de rede como sendo o agente que determina o formato, a ordem das trocas de informações e as ações em uma rede. Os protocolos de rede estão organizados em camadas.
2.1.4 Camadas de protocolo Segundo Korose e Ross (2010), cada camada provê seu serviço executando algumas ações e utilizando os serviços da camada que está diretamente abaixo dela. As camadas podem ser programas em hardware ou software. A pilha de protocolo da internet está organizada em cinco camadas, conforme mostrado na Tabela 2. Aplicação Transporte Rede Enlace Físico Tabela 2: Pilha de protocolo da internet
A camada de aplicação é onde estão os serviços de aplicações de redes e seus protocolos como, por exemplo, serviços Http, Radius, Smtp etc. Na camada de transportes temos na internet dois tipos de protocolos TCP 1 e UDP2, que fazem o transporte das mensagens entre servidores e clientes. A camada de rede na internet possui dois componentes responsáveis pela movimentação de pacotes. Um deles é o protocolo IP que define o datagrama da camada de rede. O outro é o 1 TCP é o acrônimo para o inglês Transmission Control Protocol 2 UDP é o acrônimo para o inglês User Datagram Protocol
12
protocolo de roteamento, que determina as rotas de entrega dos pacotes. A camada de enlace atua entre cada roteador durante o transporte dos pacotes na internet, que geralmente passam por vários roteadores até chegar ao seus destinos. É nessa camada está o endereçamento de LAN 3 ou endereço MAC 4. A camada física é responsável pelo transporte de bits individuais entre os nós de uma rede. Os protocolos e suas camadas podem ser usados em diversos tipos de redes. Atualmente um meio que tem se tornado cada vez mais comum são as redes sem fio.
2.1.5 Redes sem fio Muitas tecnologias de redes sem fio foram desenvolvidas. A tecnologia ' LAN wireless IEEE 802.11',
mais conhecida como Wi-Fi, tem sido a mais usada. Atualmente as redes sem fio estão
presentes em quase todo tipo de ambiente. Segundo Korose e Ross (2010), o bloco básico de uma rede Wi-Fi é o BSS 5, conjunto básico de serviço, que contém uma ou mais estações sem fio e uma estação base central, conhecida como um ponto de acesso. Os pontos de acesso são conhecidos pelas letras AP 6.
Figura 2: Arquitetura da LAN Wireless IEEE 802.11. Fonte: Korose e Ross (2010)
Os dispositivos móveis devem estar dentro da área de cobertura do ponto de acesso para que 3 4 5 6
LAN é o acrônimo para o inglês local area network MAC é o acrônimo para o inglês media access control BSS é o acrônimo para o inglês basic service set AP é o acrônimo para o inglês acess point
13
possam se conectar a rede. Quando está dentro da área de cobertura, o dispositivo móvel pode solicitar uma conexão ao ponto de acesso, conforme mostra a Figura 2. Existem no mercado atualmente diverso tipos e modelos de ponto de acesso. Os modelos mais simples de configurar que podem ser usados em pequenas redes domésticas ou escritórios. Os mais complexos e robustos podem possuir elaborados sistemas de controle de acesso. Depois de atender a uma requisição de um dispositivo móvel, o ponto de acesso pode passar a atuar como roteador ou ponte de acesso até o próximo roteador.
2.1.6 Roteador Roteador é o sistema que faz as conexões entre as redes de computadores. Segundo Korose e Ross (2010), seria necessário um curso completo para tratar do projeto de roteadores em profundidade. Em uma visão de alto nível sobre roteadores consideraremos basicamente um roteador como um conjunto de processos que encaminham os pacotes de informações aos seus destinatários, composto de uma entrada, um elemento de comutação, um processador de roteamento e uma saída, conforme mostra a Figura 3.
Figura 3: Arquitetura básica de um roteador. Fonte: Korose e Ross (2010)
A rede mundial de computadores foi elaboração, desde sua criação na década de 60, com o conceito de rotas, roteadores e roteamento. Desta forma, a rede se torna bastante tolerante a falhas, pois se um caminho for interrompido, outro caminho pode ser usado. O roteador identifica e encaminha as diversas requisições usando o endereço de rede MAC de cada dispositivo . 14
2.1.7 Endereços MAC O endereçamento MAC 7 foi projetado para ser único em cada adaptador, como por exemplo, um número de documento CPF 8 é para ser único para cada cidadão brasileiro. Mas é possível mudar esse endereço por meio de um software, conforme descrito por Korose e Ross (2010), p. 339. O IEEE9, Instituto de Engenheiros Eletricistas e Eletrônicos, é uma organização profissional sem fins lucrativos, fundada nos Estados Unidos, e tem como meta é promover conhecimento no campo da engenharia elétrica, eletrônica e computação. Um de seus papéis mais importantes é o estabelecimento de padrões para formatos de computadores e dispositivos. Um desses padrões organiza os endereçamentos entre os diversos fabricantes de adaptadores de redes no mundo todo. Alocando parcelas de 224 endereços, e fixando os primeiros 24 bits, permite assim que o fabricante do dispositivo crie combinações exclusivas com os últimos 24 bits para cada unidade. Cada endereço MAC é composto por 6 bytes expressos em notação hexadecimal. As informações de todos os endereços MAC dentro de uma mesma rede são armazenadas na memória do roteador e nos dispositivos móveis em uma tabela camada ARP.
2.1.8 ARP – Protocolo de resolução de endereços O protocolo ARP10, segundo Plummer (1982), é o protocolo que faz a tradução entre a camada de rede e a camada de enlace, identificando que endereçamento MAC pertence a qual endereço IP. Os protocolos ARP atuam apenas em uma mesma sub-rede. Para que os endereços ARP sejam encaminhados a outra rede, é preciso que o roteador faça essa cópia entre elas. O manual de Socolofsky (1991) faz uma abordagem abrangente do TCP/IP e ARP. Os pontos de acesso usados nesse projeto, fabricados pela empresa MikroTic 11, possuem um sistema embarcado com a funcionalidade de transportar a tabela ARP entre as sub-redes gerenciadas por ele. O endereço MAC é usado apenas uma mesma sub-rede, portanto outro tipo de endereçamento chamado IP é usado para identificar o local de uma conexão em uma rede local ou pública.
7 8 9 10 11
MAC é a sigla para Media Access Control CPF é o acrônimo para Cadastro de Pessoas Físicas, é o registro de um cidadão na Receita Federal brasileira. A página no brasil do IEEE é http://www.ieee.org.br ARP é o acrônimo para o inglês Address Resolution Protocol A página official da empresa MikroTic é http:///www.mikrotic.com
15
2.1.9 Protocolo DHCP Os endereçamentos de rede IP podem ser configurados manualmente, mas esse processo pode ser automatizado com o uso dos servidores DHCP 12, conforme Korose e Ross (2010), p. 257. O servidor DHCP pode ser configurado para que um mesmo cliente, identificado pelo seu endereçamento MAC, receba sempre o mesmo número IP. Com o uso do protocolo DHCP, além de receber o endereçamento IP, o cliente pode também receber mais informações como a mascara de sub-rede, endereço do roteador e endereço servidor de DNS. Após receber o endereçamento IP, o cliente pode acessar outros serviços disponíveis na rede. Podendo assim autenticar-se e receber autorização para ter acesso a outros recursos. Nesse projeto foi utilizado o servidor RADIUS para autenticar, autorizar e gerar estatísticas dos acessos.
2.1.10
Protocolo RADIUS Conforme Korose e Ross (2010), p. 389, §5, existem várias alternativas para autenticar uma
associação entre um cliente e um determinado ponto de acesso. É muito comum entre as empresas usarem o endereçamento MAC para fazer essa autenticação. Outra forma bastante comum é usar usuário e senha. De qualquer forma, nos dois casos, o ponto de acesso geralmente se comunica com um servidor de autenticação para validar o usuário e senha, determinar quais serviços estarão disponíveis e também manter um registro dos acessos feitos. Ter um servidor de autenticação separado do ponto de acesso permite que vários outros usem a mesma estrutura de autenticação, facilitando assim a manutenção dos usuários, senhas, permissões e relatórios de acessos. Para isso foi escolhido o servidor RADIUS nesse projeto. RADIUS é um protocolo da camada de aplicação tipo AAA para acesso à rede de computadores e mobilidade através de rede IP. Os protocolos do tipo AAA são usados em sistemas de autenticação, autorização e accouting .
Referindo-se respectivamente ao processo de verificar a identidade do usuário, garantir
que o usuário tenha acesso apenas aos recursos autorizados, e a coleta de informações sobre o uso dos recursos de um sistema. O pontos de acesso MikroTik (2011) possuem embarcado em seu sistema operacional um 12 DHCP é o acrônimo para o inglês Dynamic Host Configuration Protocol
16
servidor DHCP que pode ser configurado para obter o endereço IP de um servidor RADIUS, conforme mostra a Figura 4.
Figura 4: Requisições entre o servidor DHCP e servidor RADIUS
A norma RFC 2865, conforme descrito por Rigney (2000), descreve os padrões para o protocolo RADIUS. O protocolo RADIUS é resumidamente, um serviço baseado em UDP de pergunta e resposta. As requisições e respostas seguem um padrão de tabelas (variável=valor).
Atributo
id
tipo
User-Name
1
string
Password
2
string
Tabela 3: Atributos do RADIUS
No RADIUS, as variáveis são identificadas por um número. A relação entre este número e seu nome é obtida através de dicionários. Podemos ver um exemplo de dicionário padrão na Tabela 3. O valor tem um tipo definido no dicionário, e os tipos comuns são: string , inteiro (numero), octeto ou ipaddr (endereço IP: 4 bytes) e tipo estendido (usado para transportar parâmetros personalizados de fabricantes de equipamentos). O RADIUS tem uma porta para autenticação (UDP 1645 ou UDP 1812) e outra para contabilidade (UDP 1646 ou UDP 1813). Segundo Rigney (2000), o RADIUS opera em uma arquitetura cliente/servidor. O cliente do servidor RADIUS é responsável por enviar informações do usuário ao RADIUS e depois agir sobre a resposta que é retornada. O servidor RADIUS é responsável por receber as informações e retornar ao cliente as informações necessárias para entregar o serviço ao usuário. A segurança é feita por uma senha informada no cliente e no servidor. A senha pode ser vinculada ao endereço IP do cliente, 17
aumentando assim a segurança. Essa senha nunca é enviada pela rede. Isso garante que apenas clientes autorizados poderão enviar informações ao servidor. Os servidores RADIUS suporta uma variedade de métodos de autenticação de usuários e pedidos de informações. Portanto foi utilizado nesse projeto um método integrado à um banco de dados SQL, que facilita a manutenção dos usuários.
2.2 Considerações Gerais sobre Segurança em Redes Considera-se aqui algumas medidas de segurança das redes cabeadas que podem e devem se aplicadas às redes Wi-Fi.
2.2.1 Identificação e Autenticação de Usuários Como o objetivo de disponibilizar os dados e recursos de uma rede apenas às pessoas autorizadas, devemos identifica-las meio de se estabelecer uma identidade do usuário. Depois de identificado, o usuário precisa ser autenticado, por meio de uma verificação da veracidade da identidade do usuário. Essa identificação se relaciona com o nome do usuário na rede, e a autenticação geralmente é feita com o uso da senha, tokens e outros métodos. Existem várias formas de se fazer autenticação de usuário, sendo que alguns métodos são mais eficientes que outros. Alguns dos métodos de autenticação de usuários mais usados são as senhas e tokens. Considera-se aqui o médodo de autenticação por senha e validação do endereço de rede MAC. Neste método, o usuário se identifica com um nome de usuário e se autentica através de uma senha. Em seguida o sistema verifica se o endereço de rede MAC do dispositivo usado pelo usuário está registrado em seu cadastrado. Entretanto, ainda assim é importante ter cuidado ao utilizar senhas. Segundo Tittel (2001), p. 214, de acordo com alguns peritos em segurança, a maior causa de furto de dados e vandalismo eletronico são os próprios usuários. Isso não quer dizer que tenham a intenção de causar dando, mas devido a falta de cuidados básicos, facilitam a entrada de invasores. Portanto, ao cadastrar senhas deve-se evitar o uso de palavras óbvias. Senhas criadas a partir de dados pessoais como data de nascimento, por exemplo, são facilmente descobertas. A definição e divulgação de uma política de senhas aos usuários pode orientar e regulamentar o uso das senhas e outros procedimentos que podem aumentar a segurança da rede. 18
Outro fator importante na segurança de redes é a manutenção do cadastro dos usuários demitidos e afastados das instituições. Esses cadastros devem ser prontamente suspensos e seu acesso bloqueado imediatamente. Nesse projeto, um procedimento armazenado no servidor de banco de dados verifica periodicamente a situação cadastral dos funcionarios. Esse procedimento pode ser visto no anexo 6.3.1 .
2.3 Banco de Dados Devido ao grande volume de informações e a necessidade de acessá-las com agilidade foram criados sistemas de armazenamento e mecanismos de acesso chamados bancos de dados.
2.3.1 Conceitos de definições de Banco de Dados Um Sistema Gerenciador de Banco de Dados (SGBD) é um conjunto de dados interrelacionados e uma coleção de ferramentas para acessá-los, segundo Silberschatz (2006). Os SGDB são projetados para armazenar, manipular e garantir a segurança das informações contidas nele. Os SGBDs são organizados por modelos de dados que descrevem a forma como os dados são armazenados, suas relações, sua semântica e restrições. Os modelos de dados são classificados em quatro categorias: Modelo relacional, Modelo entidade/relacionamento, Modelo de dados baseado em objeto e Modelo de dados semi-estruturado, segundo Date (2003). Historicamente, os primeiros modelos de Banco de Dados surgiram na década de 60, desde então, a pesquisa científica na área procura evoluir no sentido de definir e encontrar modelos que representem da melhor maneira possível os dados de uma realidade, ou seja, que organizem os dados de uma forma mais próxima à maneira como estes são vistos e manipulados pelas pessoas no mundo real. O modelo relacional que usaremos nesse projeto é o mais usado atualmente. Segundo Silberschatz (2006), consiste em um conjunto de tabelas para representar os dados e as relações entre eles. Cada tabela pode possuir uma ou mais colunas, e cada uma possui um nome único.
2.3.2 Linguagens de manipulação de dados Uma linguagem de manipulação de dados, segundo Silberschatz (2006), permite aos
19
usuários acessar ou manipular dos dados para recuperar as informações armazenadas, inserir novas informações, excluir informações do bando de dados, modificarem os dados dessas informações. Existem várias linguagens de banco de dados. Neste projeto foi usando a linguagem SQL (Structured Query Language).
2.3.3 Estrutura básica do SQL Visto que um banco de dados relacional consiste em uma coleção de relações, cada uma com um nome único, o SQL usa esses nomes em uma estrutura que é formada básica por três expressões: select , from e where.
Conforme descrito por Silberschatz (2006), o SQL forma o produto cartesiano das relações nomeadas na clausula from, realiza uma seleção com os parâmetros da cláusula where, e, depois, projeta o resultado nos atributos da cláusula select . Como pode-se ver na Figura 4, o SQL encontrará os nomes de todos os produtos da tabela produtos, que possuem quantidade maior que 10. Select produto.nome_produto from produtos where quantidade_produto > 10 Tabela 4: Exemplo de uso da linguagem SQL
A linguagem SQL é bastante flexível e se adéqua a uma infinidade de tipos de dados e relacionamentos. Existem pequenas diferenças de sintaxe entre os diversos fornecedores de sistemas SGDBs, entretanto a lógica e os conceitos fundamentais da linguagem SQL permanece o mesmo entre eles. Tanto os sistemas SGDBs como os sistemas de rede são instalados em sistemas operacionais.
2.4 Sistema operacional Os sistemas operacionais fazem a comunicação entre o hardware e a aplicação em uso. Sem o sistema operacional seria muito complicada a criação e distribuição de software para usuários finais, pois cada software teria que ser capaz de identificar os diversos tipos de hardware existente no mercado. Os sistemas operacionais mantêm uma coleção de configurações chamadas drivers, em geral 20
fornecidos pelos fabricantes, para identificar e utilizar os diversos periféricos que compõe um computador. Atualmente existe uma grande variedade de sistemas operacionais gratuitos e proprietários disponíveis para uso. Nesse projeto foi escolhido o FreeBSD.
2.4.1 FreeBSD O sistema operacional FreeBSD é derivado do BSD Unix desenvolvido pela Universidade da Califórnia, Berkeley. O FreeBSD oferece um conjunto de avançados recursos tecnológicos de rede, segurança, desempenho e compatibilidade ainda não encontrada em outros sistemas operacionais, até mesmo entre os melhores sistemas comerciais, segundo FreeBSD (2011). Segundo as estatísticas do Netcraft (2011), que monitora vários servidores e serviços da internet, os servidores FreeBSD são os mais confiáveis quanto a estabilidade e segurança, entre outros fatores bastante relevantes para segurança e estabilidade dos servidores. No ano de 2011, o FreeBSD liderou as estatísticas dos servidores mais estáveis por sete vezes. Para desenvolvimento de aplicações, os sistemas operacionais permitem o uso de diversas linguagens de programação.
2.5 Linguagens de programação Os computadores são capazes de executar ações através de instruções uma linguagem específica chamada linguagem de máquina. A linguagem de máquina é um conjunto de números que são entendidos pelo computador, mas é muito difícil de ser entendido pelo homem. Já as linguagens de programação são conjuntos de instruções que podem ser entendidos tanto por homens e máquinas. Segundo Medina e Fertig (2006), p. 15, as linguagens de programação são classificadas conforme sua semelhança com a linguagem de máquina. Quanto mais próximas da linguagem de máquina, mais baixo é o nível da linguagem. As linguagens mais semelhantes a linguagem humana são as de alto nível. Existe uma grande variedade de linguagens de programação. Foi escolhido para esse projeto a linguagem PHP.
2.5.1 Linguagem PHP
21
A linguagem PHP teve seu inicio em 1994 e, segundo Muto (2006), foi criada por Rasmus Lerdorf. Em 1997 houve uma mudança em seu desenvolvimento, pois nessa época o PHP foi reescrito por Zeev Suraski e Andi Gutmans. A partir da versão 4.3.0, a linguagem PHP possui uma outra SAPI13 além da CGI, chamada de PHP-CLI. A nova PHP-CLI permite acesso a toda gama de funções da linguagem PHP através da linha de comando ou de pequenos códigos conhecidos como scripts.
Mais informações sobre esta SAPI podem ser encontradas na página oficial da internet
PHP-CLI14. Neste projeto, foi usado a linguagem PHP em SAPI CLI porque sua documentação é ampla e acessível. Além disso, sua SAPI CLI pode ser executada pelo serviço do RADIUS. Como o uso das diversas linguagens de programação foi criado várias aplicações para diversas áreas de atividade. Com o crescimento do uso das aplicações de sistemas de informações e grande importância que passaram a ter, foram elaborados grandes sistemas integrados.
2.6 Gestão integrada de organizações Na atual era do conhecimento as organizações conseguem ser competitivas fazendo bom uso das informações, dominando bem suas operações, entendendo seus processos e se aproximando de seus clientes, segundo Chamon (2008). As organizações fazem uso de diversos mecanismos de medição direcionados aos controles operacionais para tomada de decisões estratégicas. Os sistemas informatizados de gestão são hoje essenciais para armazenagem, processamento e recuperação das informações para esses mecanismos de medição.
2.6.1 Sistemas Integrados de Gestão Empresarial Os Sistemas Integrados de Gestão Empresarial (SIGE ou SIG) são amplamente conhecidos por sua sigla em inglês ERPs. Sistemas ERPs são sistemas que são projetados com o objetivo de integrar dados e processos dentro de uma organização. No entanto existem processos dentro da diversidade de organizações que os sistemas de gestão ERPs não são capazes de atender, visto que tais processos não fazem parte do escopo do projeto dos sistemas ERPs. Um exemplo disso é a autenticação de usuários de uma rede sem fio. Visto que a permissão de acesso a rede sem fio e uso depende da situação cadastral dos usuários nos sistemas ERPs, 13 SAPI é o acrônimo para o inglês Server Application Programming Interface 14 A página oficial na internet do PHP-CLI é http://www.php-cli.com
22
haveria um grande retrabalho e um enorme risco de erros se a inclusão e manutenção dos dados forem feita manualmente. Diante desse cenário, é necessário um terceiro sistema que faça a junção das informações destes sistemas ERPs com o objetivo de atender uma necessidade específica da organização fora do escopo do projeto do sistema ERP em uso. Existe a possibilidade que uma melhoria futura em alguns desses sistemas ERPs venha a atender essa necessidade. Contudo as empresas desenvolvedoras dos sistemas em questão não manifestaram nenhuma possibilidade desse tipo de suporte para as próximas atualizações. Portanto, foi necessário desenvolver aplicações que façam essa integração entre esses sistemas conforme a necessidade da organização. O sistema em uso atualmente no UNIS MG é o sistema Universus da empresa CadSoft 15.
2.6.2 Sistema Universus O sistema Universus é um aplicativo especializado em gestão acadêmica, desenvolvido com foco em atender os requisitos do MEC 16. O sistema Universus foi desenvolvido pela empresa CadSoft 15.
2.6.3 Empresa CadSoft
15
CadSoft15 é uma empresa da área de tecnologia da informação que tem como ideologia participar do aprimoramento educacional visando o progresso humano, em conjunto com instituições éticas e atentas ao bem-estar social, contribuindo para formação de uma comunidade próspera e humana que compartilha, ensina, aprende e se doa. A empresa CadSoft 15 não fornece dicionário de dados do seu sistema de gestão acadêmica, mas coloca-se à disposição para quaisquer informações sobre o banco de dados aos seus clientes. Dessa forma foi possível saber quais tabelas e funções são necessárias para integrar com o sistema de autenticação.
2.6.4 Banco de dados do sistema de gestão acadêmica Muitas tabelas foram usadas para consulta de informações, e cada uma delas possui vários 15 Página oficial na internet: http://www.cadsoft.com.br 16 Ministério da Educação: http://www.mec.gov.br/
23
campos. O objetivo desse projeto é documentar apenas as tabelas e os campos que contém as informações necessárias para autenticação na rede sem fio. A Tabela PESSOA contém dados pessoais de todos os alunos e outras pessoas diretamente vinculadas aos alunos, como familiares e responsáveis financeiros. Os campos da tabela PESSOA que são usados no sistema de autenticação estão relacionados na Tabela 5. CODPESSOA - Chave primaria da tabela pessoa. CICCPF - Número do CPF. NOME - Nome da pessoa. SENHA – Senha da pessoa. LOGIN – Nome de login da pessoa. Tabela 5: Campos da tabela PESSOA
A tabela DADOSFUNC contém os dados dos professores. Os campos usados das tabelas DADOSFUNC estão relacionados na Tabela 6. DADOSFUNC.ATIVO - status do professores, código 1 é ativo. DADOSFUNC.CODFUNCIONARIO - código do funcionário. DADOSFUNC.CODPESSOA – código da pessoa. Tabela 6: Campos da tabela DADOSFUNC
A tabela PROFDISC contém a relação de disciplinas dos professores. Os campos usados das tabelas PROFDISC são: PROFDISC.CODFUNCIONARIO - código do funcionário. PROFDISC.PERIODO - período no qual o professores está vinculado a disciplina. PROFDISC.ANO - ano no qual o professores está vinculado a disciplina. Tabela 7: Campos da tabela PROFDISC
24
2.6.5 Funções do banco de dados definidas pela Cadsoft A empresa CadSoft desenvolveu um algorítimo próprio para criptografia das senhas armazenadas no campo SENHA da tabela PESSOA. A função responsável por esse algorítimo é a dbo.GETPASSWORDHASH('senha'), com um único parâmetro. Essa função recebe uma cadeia de caracteres com a senha e retorna uma cadeia de caracteres criptografados de modo irreversível.
2.6.6 Filtros para liberação do acesso a rede sem fio no sistema acadêmico Foi definido que apenas os alunos matriculados no período corrente devem ter acesso a rede sem fio. No entanto, o conceito de aluno matriculado depende da área de negócio. Dentro dos cursos de graduação (CURSO.CURSOEQUIVALENTE=5) um aluno é considerado matriculado quando seu status (ENTURMA.CODSTATUS) está ' cursando' (código 2) em pelo menos uma disciplina no ano e período corrente. Nos cursos de pós-graduação considera-se que um aluno está matriculado quando seu status curricular (ALUCURRICULO.CodStatus)
está cursando (código 402) ou em transferência interna
(código 403). Nos cursos do ensino fundamental e médio, a regra é a mesma dos cursos de pós-graduação, levando-se em conta apenas que o código da escola é diferente dos demais alunos (ALUNO.CODESCOLA=2). Quanto aos professores a regra para que eles tenham acesso a rede sem fio é que estejam com status 'ativo' (DADOSFUNC.ATIVO) em pelo menos uma disciplina no período corrente.
2.6.7 Sistema Gestão de Pessoas Senior Segundo Senior (2011), a ‘Solução de Gestão de Pessoas’ que aplica conceitos inovadores no gerenciamento estratégico do capital humano. O software é ideal para a descentralização da área de Recursos Humanos (RH), pois torna as informações disponíveis e acessíveis aos colaboradores em tempo real, pela internet, intranet, portais e dispositivos móveis. A solução é dividida em cinco áreas para atender às rotinas legais e às práticas de gestão.
25
2.6.8 Empresa SENIOR Segundo Senior (2011), ela é uma das maiores desenvolvedoras de software para gestão empresarial do Brasil. As soluções de Gestão Empresarial (ERP), Gestão de Pessoas (RH), Gestão de Acesso e Segurança, Tecnologia da Informação, Gestão Estratégica e Serviços são direcionadas a clientes de todos os portes e têm como objetivo garantir total domínio sobre informações e processos empresariais. Com matriz em Blumenau (SC), a empresa possui filial em São Paulo e unidades localizadas nos principais centros do País, atuando também no mercado latino-americano. Atualmente conta com mais de 9.500 clientes e cerca de 3 mil pessoas envolvidas — entre colaboradores, parceiros comerciais e canais de distribuição —, além de mais de 100 canais distribuídos pelo Brasil. Focada na evolução desde a sua fundação, em 1988, a Senior investe no conhecimento de cada profissional, criando oportunidades de aperfeiçoamento técnico e comercial para os seus colaboradores. Os sistemas da empresa Senior possuem dicionário de dados dentro da aplicação, conforme mostra Figura 5.
Figura 5: Dicionário de dados sistema Vetorh – Senior
Desta forma foi possível identificar as tabelas e campos necessários para obter a situação cadastral atual dos funcionários.
2.6.9 Banco de dados do sistema Gestão de Pessoas O banco de dados do sistema Gestão de Pessoas possui uma tabela 'Cadastro de 26
Funcionarios' (R034FUN) que contém os dados dos funcionários. Os campos usados na integração com a autenticação da rede sem fio estão relacionados na Tabela 8. TipCol – Tipo do funcionário. Numcpf – Número do documento CPF. SitAfa – Situação cadastral atual. Tabela 8: Campos da tabela 'Cadastro de Funcionários' (R034FUN)
2.6.10
Filtros para liberação do acesso a rede sem fio no departamento de pessoal O Grupo UNIS definiu que apenas funcionários com situação cadastral diferente de
'Afastado' (R034FUN.SitAfa<>7) podem ter acesso a rede sem fio. Além dos sistemas de gestão ocasionalmente outras pessoas que não estão cadastradas nesses sistemas podem requerer acesso a rede sem fio. Por isso foi criado uma banco de dados para o cadastro desses usuários denominado WGU (Wireless Grupo Unis).
2.6.11 WGU - Wireless Grupo Unis O sistema de cadastro WGU é uma página na internet onde o usuário poderá fazer o cadastro do seu endereçamento MAC. Desta forma o seu MAC fica vinculado ao seu usuário e senha. Nesta mesma página é possível cadastrar outros usuários que não tem suas informações registradas nos sistemas de gestão. O sistema possui um banco de dados simples. Uma tabela registra os dados e senhas dos usuários e seus respectivos endereçamentos de rede MAC. Alguns procedimentos armazenados no servidor de banco de dados do sistema WGU verificam e atualizam o banco de dados do servidor RADIUS. Estes procedimentos estão descritos no anexo 6.3 .
27
3 METODOLOGIA Diante dos procedimentos técnicos envolvidos no projeto e do tipo de problema, foi realizado um pesquisa-ação, concebida e realizada direcionada melhorias no sistema de autenticação da rede sem fio. A pesquisa-ação envolveu pessoas do departamento de tecnologia da informação envolvidas de modo cooperativo. O levantamento das informações foi feita de modo tradicional, por observação individual realizada por um pesquisador. O problema foi identificado diante da necessidade dos usuários e administradores terem melhores controles e estatísticas dos acessos à rede sem fio. A pesquisa foi feita primeiramente com base em um levantamento para determinar quais recursos dos sistemas de gestão atualmente utilizados na instituição poderiam ser usados em um sistema de autenticação. Depois foi feita um análise junto ao departamento de Tecnologia da informação do para identificar quais os recursos técnicos estariam disponíveis para o desenvolvimento do projeto. Com estas informações, a próxima etapa foi eleger quais sistemas e softwares seriam instalados, e quais módulos seriam desenvolvidos. Os sistemas escolhidos foram instalados e configurados. Foram feitos testes e simulações com diversos dispositivos. Verificou-se então que o projeto funcionou conforme esperado e poderia ser colocado em uso. Por meio deste projeto confirmamos que existem recursos de baixo custo, de alta tecnologia, disponíveis para o desenvolvimento de pesquisas e integração de tecnologias, que podem agregar mais qualidade aos serviços prestados pelas instituições de ensino.
3.1 Rede sem fio Grupo UNIS A rede sem fio usa uma infraestrutura de pontos de acesso MikroTik (2011) que fornecessem acesso a internet.
28
Figura 6: Esquema estrutural da rede sem fio
O serviço RADIUS foi instalado no ‘ Servidor Virtual - 2 -’, visto na Figura 6. Este servidor é uma maquina virtual com o sistema operacional FreeBSD.
3.2 Instalação do sistema operacional A instalação foi feita por meio de uma imagem de CD disponibilizada por FreeBSD (2011). Foi selecionado o tipo de instalação ' Standard ', e depois foi incluída a opção de compilação do kernel . Após a instalação é importante informar corretamente a senha do
usuário root. Além disso, é
recomendável criar um usuário para cada pessoa vai administrar o servidor. Após a criação do usuário administrador podemos fazer as configurações básicas.
3.3 Configuração básica do servidor Após a instalação básica, foi executados procedimentos de atualização da coleção de pacotes de aplicativos preparados para instalação no sistema FreeBSD, chamada de Ports. Esta coleção conta com mais de 22 mil aplicativos preparados para instalação no FreeBSD. Para atualizar a árvore de diretórios Ports podemos usar vários meios. Foi usado a aplicação Portsnap
executando o comando ' portsnap fetch extract update' para essa atualização. Depois de
atualizar a árvore de diretórios, foram atualizados todos aplicativos já instalados junto com o sistema operacional. O aplicativo que atualiza os programas instalados não faz parte a instalação 29
inicial, por isso deve ser instalado executando o comando ' cd /usr/ports/ports-mgmt/portupgrade && make install clean'. Após instalação, foi executado ' portupgrade -a'
para que todos aplicativos
instalados fossem atualizados. Com o sistema atualizado, o servidor RADIUS pode ser instalado, executando o comando 'cd /usr/ports/net/freeradius 2 & make install clean'. O sistema do ' Ports' analisou os pré-requisitos para instalação e fez as instalações dos necessárias. Para ativar o serviço do FreeRADIUS (2011), foi colocada a linha de configuração 'radiusd_enable="YES" ' no arquivo '/etc/rc.conf '. A pasta padrão de configuração é '/usr/local/etc/raddb'
. Para iniciar o serviço do FreeRadius manualmente, execute
/usr/local/etc/rc.d/radiusd start'.
3.4 Servidor RADIUS O servidor RADIUS entregará endereços de internet correspondentes endereçamentos de redes específicos, através de uma relação com o serviço de configuração dinâmica de endereçamento de internet embarcados nos pontos de acesso da rede sem fio. Um recurso de personalização do servidor RADIUS, através de programação externa, descrito no apêndice 6.1.1 , permite consultar no banco de dados a senha dos usuários do sistema de gestão. Não foi possível usar os métodos de criptografia de senhas nos padrões aceitos pelo servidor RADIUS, como o MD5, porque o sistema de gestão possui método de criptografia proprietário (dbo.GETPASSWORDHASH), desenvolvido pela CadSoft.
3.5 Configuração do serviço Radius O servidor Radius aqui está sendo configurado para usar o banco de dados na armazenagem de suas configurações de autorização, autenticação e registro de acesso. Portanto, deve-se incluir o módulo SQL em seus arquivos de configurações, conforme mostra o apêndice 6.1.2 . Após isso, deve-se colocar os parâmetros referentes a conexão como banco e dados no arquivo de configuração do SQL, conforme vemos no apêndice 6.1.3 . Para realizar a conexão entre o Radius no FreeBSD e o Microsoft SQLServer 2008 17 vamos 17 Site ofical do SQL Server 2008 http://www.microsoft.com/sqlserver/2008/pt/br/default.aspx
30
utilizar a UnixODBC, as configurações da ODBC estão no apêndice 6.2 .
3.6 Testes de requisição de endereço IP No primeiro teste foi enviado um endereço MAC válido executando o comando no próprio servidor Radius '/usr/local/etc/raddb/Nets.php 00:1f:3c:7f:d7:34'. Foi recebido a resposta ' Accept ' no teste, indicando assim que o endereço MAC é válido. Se resposta recebida fosse ' Reject ', isso indicaria que o endereçamento MAC foi enviado no formato incorreto ou é invalido. O endereço MAC é composto por 6 bytes expressos em notação hexadecimal. Na autenticação nos sistemas de gestão usamos a função ' preg_match' do PHP para fazer essa validação, como pode ser visto no apêndice 6.1.1 . Como o endereço MAC enviado foi válido, o sistema buscou por ele no banco de dados WGU, e se existisse nenhuma ação seria executada. No entanto, se o MAC não fosse encontrado, um IP seria gerado dentro da faixa predefinida e gravado no banco de dados. Desta forma verificou-se que sistema respondeu corretamente a primeira etapa da conexão, que foi a requisição de endereço IP fixo para cada endereçamento MAC. O segundo teste foi feito com o ' radtest '. O 'radtest' faz parte do pacote de instalação do servidor RADIUS. O teste poderia ter sido feito de qualquer computador conectado a rede ou no terminal do próprio servidor Radius, deste que esteja corretamente configurado. O teste foi feito executando a linha de comando ' radtest -x 00:1f:3c:7f:d7:34 '' 172.16.0.103 0 zxczxc'.
Para ter êxito no teste, o cliente '172.16.0.103 ' e a chave secreta 'zxczxc' forão
configuradas no arquivo 'clients.conf', como pode ser visto no apêndice 6.1.5 . A opção '-x' habilita o modo de depuração do cliente, exibindo assim mais informações sobre a requisição enviada e a resposta recebida. Dessa forma foi enviado ao servidor RADIUS as variáveis vista na tabela 9. User-Name User-Password NAS-IP-Address NAS-Port
00:1f:3c:7f:d7:34 172.16.0.103 0
Tabela 9: Variáveis geradas pelo 'radtest' e enviadas ao servidor RADIUS
No terminal foi exibido as informações vista na Figura 7.
31
Sending Access-Request of id 204 to 172.16.0.103 port 1812 User-Name = "00:1f:3c:7f:d7:34" User-Password = "" NAS-IP-Address = 127.0.1.1 NAS-Port = 0
Figura 7: Teste de requisição de endereço IP
Nesse caso a resposta do servidor RADIUS foi o numero IP que deverá ser atribuído ao endereço MAC, enviado como resposta da requisição, na variável ' Framed-IP-Address' e valor '172.17.1.133'. No terminal foi exibido a resposta ' Access-Accept ' indicando assim o sucesso no procedimento de requisição de endereço IP para o MAC enviado. Se uma requisição com endereço MAC incorreto fosse enviada, a resposta ' Access-Reject ' indicaria esse erro e nenhum endereço IP seria enviado como resposta.
3.7 Testes de autenticação no servidor radius O teste de autenticação é semelhante ao teste de requisição de endereço IP, mas desta vez foi verificado o usuário e a senha integrado com o sistema de gestão acadêmica. Foi também verificado se o endereço MAC cadastrado corresponde ao endereço do dispositivo que solicitou o acesso. No primeiro teste foi enviado um usuário com numero de R.A. 18 '0803397', uma senha 'xxxxx' e um endereço MAC válido, já cadastrado no site WGU 19, na linha de comando '/usr/local/etc/raddb/Nets.php
0803397 xxxxx 01:1f:3c:7f:d7:71
'.
A resposta ' Accept ' no teste indicou que o usuário e a senha foram validados no banco de dados do sistema acadêmico e que o endereço MAC corresponde ao endereço cadastrado para esse usuário. Caso o usuário não fosse localizado no sistema acadêmico, o mesmo usuário e senha seria validado no sistema WGU, que mantém registros de funcionários e outros usuário que não possuem senha no sistema acadêmico. Para verificar uma autenticação de um usuário que não estava cadastrado no sistema de gestão acadêmica, foi usado o mesmo comando e foi utilizado o número do CPF como usuário, desta forma: '/usr/local/etc/raddb/Nets.php
96364289649 321231 01:1f:3c:7f:d7:71
'
A resposta 'Reject ' indicaria que o usuário e senha estariam incorretos ou que o endereço 18 R.A. Refere-se ao número de matrícula no registro acadêmico. 19 http://www.wgu.unis.edu.br
32
MAC cadastrado não correspondeu ao endereço do dispositivo que fez a requisição. Desta forma verificamos que sistema respondeu corretamente a primeira etapa da conexão, que é a validação do usuário e seu endereço MAC. O segundo teste foi feito com o aplicativo ' radclient ' . O 'radclient ' também faz parte do pacote de instalação do servidor Radius. O teste foi feito com esse aplicativo porque foi preciso simular o envio de um endereço MAC. O teste foi feito executado a linha de comando ' echo =
\"0803397\"\nUser-Password
=
\"xxxxx\"\nNAS-Port
=
-e
"User-Name
0\nCalling-Station-Id
01:1f:3c:7f:d7:71" | radclient -x 172.16.0.103:1812 auth zxczxc
=
'.
A opção '-x' habilitou o modo de depuração do cliente, exibindo assim mais informações sobre a requisição enviada e a resposta recebida. Dessa forma foi enviado ao servidor RADIUS as seguintes variáveis vistas na Tabela 10. User-Name User-Password NAS-IP-Address Calling-Station-Id
0803397 xxxxx 172.16.0.103 01:1f:3c:7f:d7:71
Tabela 10: Teste de autenticação
No terminal foi exibido as informações de envio mostradas na Figura 8. Sending
Access-Request
of
id
29
to
172.16.0.103 port
1812 User-Name = "0803397" User-Password = "xxxxx" NAS-Port = 0 Calling-Station-Id = "01:1f:3c:7f:d7:71"
Figura 8: Resposta recebida após o teste
Logo em seguida foi exibido a resposta ' Access-Accept ' indicando o sucesso no procedimento. Se uma requisição com endereço MAC válido fosse enviada, mas o cadastro desse endereçamento não estive vinculado ao usuário, a resposta seria ' Access-Reject '. Isso indicaria uma tentativa de usar um dispositivo móvel não cadastro para esse usuário.
33
4 CONCLUSÃO O desenvolvimento deste projeto, bem como a instalação do servidor, proporcionou uma excelente experiência em segurança de rede sem fio. A fundamentação teórica mostra que o protocolo Radius é amplamente utilizado para controlar acesso a recursos de rede, e atendeu ao objetivo de fornecer controle de acesso à internet em uma rede sem fio. Os resultados obtidos com o uso do FreeRadius e banco de dados demonstram um mecanismo eficiente de controle para acesso utilizando usuário e senha do sistema de gestão acadêmica, além de controlar o acesso por endereço MAC de origem, mantém um histórico dos acessos dos clientes. A maior dificuldade encontrada não foi a configuração do servidor RADIUS, mas foi a falta de documentação do banco de dados do sistema de gestão acadêmica. Foram necessários vários ajustes até conseguir menor erro na identificação dos alunos atualmente matriculados na instituição. Esse conhecimento foi adquirido ao longo da instalação do sistema acadêmico e de outros sistemas que necessitavam dessas informações. Embora a empresa desenvolvedora sempre esteve disposta a colaborar, muitas vezes não dava respostas satisfatórias. A expectativa da Assessoria de Tecnologia da Informação era conseguir melhor controle e registro do acesso a rede sem fio. Espera-se melhor monitoramento dos recursos com o uso da senha do sistema acadêmico em conjunto com o registro do endereço MAC do dispositivo móvel. Pretende-se assim limitar o uso indevido dos recursos da rede sem fio. Direcionando assim esses recursos a quem realmente faz uso da rede para fins acadêmicos. O cenário atual é sem precedentes com relação à segurança da informação. Portanto as instituições precisam estar cada vez mais atentas a sua segurança de rede. Principalmente nas redes internas, onde geralmente encontra-se o maior número de falha nesta área. Após pesquisas realizadas dentro desta área foi verificado que uma das soluções possíveis para amenizar este problema encontra-se em autenticar o usuário ainda na camada de enlace, designando a ele o que pode ou não fazer dentro da rede. Nesse sentido, o padrão de protocolo utilizado foi de grande importância. O protocolo Radius tem grande vantagem de possuir vários métodos de autenticação. Os experimentos realizados com o servidor FreeRadius foram fundamentais para demonstrar o resultado do projeto. É importante destacar, que toda a instalação do servidor de autenticação foi baseada em aplicativos dentro da filosofia do software livre. Com exceção apenas do SQL Server da empresa Microsoft, 34
que foi usado porque já havia sido adquirido em função do sistema de gestão acadêmica já anteriormente instalado. A implantação de uma solução de controle de acesso acrescenta vários benefícios importantes em uma rede de computadores. Por se tratar de um projeto inovador no contexto das instituições de ensino da região, mesmo que os elementos utilizados sejam bem conhecidos individualmente, existe pouca pesquisa no que se diz respeito à integração destes elementos. A integração de todos esses serviços permite melhor controle de usuários sem duplicação de cadastros ou de senha inseguras. Por ser o FreeBSD um sistema bastante estável e que não exige tantos recursos a nível de hardware, os custos financeiros para a implementação do conjunto foram relativamente baixo. Para trabalhos futuros serão importantes as documentações e melhorias nos procedimentos armazenados no servidor de banco de dados relacionados ao sistema de autenticação. São necessários ajustes e novas opções na página do sistema WGU para cadastro e manutenção dos usuários que não estão nos sistemas de gestão. Desenvolvimento de um sistema automatizado para controle de conteúdo de páginas seguras criptografadas que estão sendo usadas para transportes de conteúdos impróprios, limitando e tendo melhor controle no acesso aos mesmos.
35
5 REFERENCIAS BIBLIOGRÁFICAS CHAMON, Edna Maria Querido de Oliveira , Gestão integrada de organizações, 2008, Rio de Janeiro: Brasport, . DATE, C. J., Introdução a sistemas de bancos de dados, 2003, Rio de Janeiro: Elsevier, . FREEBSD, The FreeBSD Project, 2011, Disponível em: . Acesso em: 25/11/2011. FREERADIUS, The FreeRADIUS Project, , Disponível em: . Acesso em: 02/12/2011. KUROSE, James F.; ROSS, Keith W., Redes de computadores e a internet: uma abordagem topdown, 2010, São Paulo: Editora Addison Wesley, 5ª Edição. MEDINA, Marco; FERTIG, Cristina, Algoritmos e programação: teoria e prática, 2006, São Paulo: Novatec, . MIKROTIK, Routers and Wireless, 2011, Disponível em: . Acesso em: 17/11/2011. MUTO, Claudio Adonai, Php e MySQL: guia introdutorio, 2006, Rio de Janeiro: Brasport, 3. ed.. NETCRAFT, Most Reliable Hosting Company Sites in November 2011, 2011, Disponível em: . Acesso em: 07/12/2011. PLUMMER, David C. , An Ethernet Address Resolution Protocol, 1982. Disponível em: . Acesso em: 22/11/2011. RIGNEY, C.; Willens, S., Remote Authentication Dial In User Service, 2000, Disponível em: . Acesso em: 23/11/2011. SENIOR, Soluções em Gestão Empresarial, Gestão de Pessoas e Acesso e Segurança, 2011, Disponível em: . Acesso em: 26/11/2011.
36
SILBERSCHATZ, Abraham, Sistema de banco de dados, 2006, Rj: Editora Campus, . SOCOLOFSKY, T. e Kale, C., A TCP/IP Tutorial, 1991. Disponível em: . Acesso em: 16/10/2011. TITTEL, Ed., Rede de Computadores, 2002, São Paulo: Artmed Editora SA, .
37
6 APÊNDICES E ANEXOS Foram relacionados nestes apêndices os principais arquivos de configurações e os códigos fontes desenvolvidos para a autenticação dos usuários nos sistemas de gestão.
6.1 Arquivos de configuração do FreeRADIUS Arquivos necessários para conexão com o banco de dados e para autenticação no sistema de gestão.
6.1.1 Nets.php – Programação externa para autenticação no sistema de gestão #!/usr/local/bin/php '1') if (mssql_num_rows($rs)>0) { $ok=true; $row = mssql_fetch_assoc($rs); $wcpf = $row['cpf']; } else { $ok=false; $wcpf = ''; if ($log) { fwrite($f,strftime('%Y-%m-%d %H:%M:%S')); } if ($log) { fwrite($f,print_r($argv,TRUE)); } } }
38
if ($ok) { //--- se encontrou usuario e senha validos no RA, verifica MAC e CPF mssql_select_db('radius', $mslink); $sSql="SELECT id FROM wireless where cpf='$wcpf' and upper(mac) = replace(upper('$wmac'),':','') "; $rs=mssql_query($sSql, $mslink); if ($rs<>'1') if (mssql_num_rows($rs)>0) { $ok=true; } else { if ($log) { fwrite($f,strftime('%Y-%m-%d %H:%M:%S')); } if ($log) { fwrite($f,print_r($argv,TRUE)); } $ok=false; } } elseif ( ($wpass!='') and ($wuser!='') ) { // -- Se nao existe usuario no RA, verifica outros mssql_select_db('radius', $mslink); $sSql="SELECT wireless.id FROM wireless_usuarios inner join wireless on wireless.cpf = wireless_usuarios.cpf where wireless.codigo='$wuser' and senha='$wpass' and upper(mac) = replace(upper('$wmac'),':','') "; $rs=mssql_query($sSql, $mslink); if ($rs<>'1') if (mssql_num_rows($rs)>0) { $ok=true; } else { if ($log) { fwrite($f,strftime('%Y-%m-%d %H:%M:%S')); } if ($log) { fwrite($f,print_r($argv,TRUE)); } $ok=false; } } if ((!$ok) and ($wpass=='') and ($wuser!='')) { //--- Se usuario e senha nao validaram e senha esta em branco, verifica se é uma requisicao do DHCP Server mssql_select_db('radius', $mslink); $sSql="SELECT id FROM wireless where mac=replace(upper('$wuser'),':','') "; $rs=mssql_query($sSql, $mslink); if ($rs<>'1') if (mssql_num_rows($rs)>0) { $ok=true; } else { if(preg_match('/^[0-9a-fA-F]{2}(?=([:;.-]?))(?:\\1[0-9a-fA-F]{2}) {5}$/', $wuser)) { $sSql="select mac from wireless_tmp where mac = replace( upper('$wuser'), ':', '') "; $rs=mssql_query($sSql, $mslink); if (($rs=='1') or (mssql_num_rows($rs)==0) ) { $sSql="select dbo.GetIP() as ip "; $rs=mssql_query($sSql, $mslink); $row = mssql_fetch_assoc($rs); $ip = $row['ip']; $ip1 = intval($ip/256); $ip2 = $ip - ($ip1*256); $sSql="update ip set ip=$ip"; $rs=mssql_query($sSql, $mslink);
39
$sSql="insert
into
wireless_tmp
(
mac
,
ip
,
data_cadastro ) values ( replace(upper('$wuser'),':','') '172.17.".$ip1.".".$ip2."' , getdate() ) "; $rs=mssql_query($sSql, $mslink); $sSql="insert into (UserName,Attribute,op,Value) values ( upper('$wuser') , 'Accept') "; $rs=mssql_query($sSql, $mslink); $sSql="insert into (UserName,Attribute,op,Value) values ( upper('$wuser'), '=', '172.17.".$ip1.".".$ip2."') "; $rs=mssql_query($sSql, $mslink); } $ok=true; } else { $ok=false; } } } if ($ok) { echo "Accept"; } else { echo "Reject"; }
if ($log) { fclose($f); } ?>
6.1.2 radius.conf – Configuração do modulo sql no radius modules { ... $INCLUDE sql.conf }
6.1.3 sql.conf – Configuração UnixODBC no radius sql { ... database = "unixodbc" driver = "rlm_sql_${database}" server = "XXXX" login = "XXXX" password = "XXXX" radius_db = "radius" ... }
40
,
radcheck 'Auth-Type',
':=',
radreply 'Framed-IP-Address',
6.1.4 sites-enabled/default – Configuração da autenticação externa authorize { … sql … update control { Auth-Type := `/usr/local/etc/raddb/Nets.php %{User-Name} %{User-Password} % {Calling-Station-Id} ` } }
6.1.5 clients.conf – Configuração de permissões de acesso para clientes do RADIUS client 127.0.0.1 { secret shortname } client X.X.X.X { secret shortname }
= xxxxxx = local
= xxxxxx = self
6.2 UnixODBC e FreeTDS – Configuração UnixODBC no FreeBSD Arquivos necessários para configuração da conexão entre o FreeBSD e o SQL Server.
6.2.1 odbcinst.ini [FreeTDS] description driver setup fileusage
= = = =
FreeTDS driver for MSSQL /usr/lib/libtdsodbc.so /usr/lib/libtdsS.so 1
= = = = = = =
FreeRADIUS ODBC for MSSQL FreeTDS NOME 1433 radius 8.0 us_english
6.2.2 odbc.ini [PIAU] description driver server port database tds_version language
6.2.3 freetds.conf # Sql 2008 [NOME] host = x.x.x.x port = 1433 tds version = 8.0 charset = LATIN1 timeout = 30 connect timeout = 30
41
6.3 Procedimentos armazenados do banco de dados do sistema WGU 6.3.1 status_DP – Verifica sistema de gestão de pessoas Senior CREATE PROCEDURE [dbo].[status_DP] @cpf varchar(15) AS BEGIN SET NOCOUNT ON; if exists (SELECT R034FUN.SitAfa FROM senior.rhsenior.R034FUN R034FUN WHERE (R034FUN.TipCol = 1) and R034FUN.numcpf = @cpf and R034FUN.SitAfa <> 7) return 1 else return 0 return END
6.3.2 status_OU – Verifica usuários do sistema WGU CREATE PROCEDURE [dbo].[status_OU] @cpf varchar(15) AS BEGIN SET NOCOUNT ON; declare @status int SELECT @status = wireless_usuarios.status FROM radius..wireless_usuarios wireless_usuarios WHERE wireless_usuarios.cpf = @cpf return isnull(@status,0) END
6.3.3 status_PF – Verifica professores CREATE PROCEDURE [dbo].[status_PF] @cpf varchar(15) AS BEGIN SET NOCOUNT ON; declare @ano int declare @periodo int declare @status int select @ano=ano, @periodo=periodo from wireless_ano_periodo set @status=0 select @status=1 where exists ( select DADOSFUNC.CODPESSOA from Universus..PROFDISC PROFDISC inner join Universus..DADOSFUNC DADOSFUNC on DADOSFUNC.CODFUNCIONARIO = PROFDISC.CODFUNCIONARIO inner join Universus..PESSOA PESSOA on PESSOA.CODPESSOA = DADOSFUNC.CODPESSOA
42
where ano=@ano and (PERIODO=@periodo or PERIODO=0) and DADOSFUNC.ATIVO=1 and PESSOA.CICCPF=@cpf ) return @status END
6.3.4 status_RA – Verifica alunos
CREATE PROCEDURE [dbo].[status_RA] @cpf varchar(15) AS BEGIN SET NOCOUNT ON; declare @ano int declare @periodo int declare @status int select @ano=ano, @periodo=periodo from wireless_ano_periodo select @status = case /* PIO XII: se curriculo cursando, liberado acesso */ when ALUNO.CODESCOLA = 2 then case when (select min(CodStatus) from universus..ALUCURRICULO ALUCURRICULO WITH (NOLOCK) where ALUCURRICULO.CODESCOLA=ALUNO.CODESCOLA AND ALUCURRICULO.CODALUNO=ALUNO.CODALUNO and CodStatus<>401) = 402 or (select max(CodStatus) from universus..ALUCURRICULO ALUCURRICULO WITH (NOLOCK) where ALUCURRICULO.CODESCOLA=ALUNO.CODESCOLA AND ALUCURRICULO.CODALUNO=ALUNO.CODALUNO) = 403 then 1 else 0 end /* Pos-graducao: status codigo 5 contido em CURSO.CURSOEQUIVALENTE e curriculo cursando, libera acesso */ when 5 IN (SELECT CURSO.CURSOEQUIVALENTE FROM universus..ALUCURRICULO ALUCURRICULO WITH (NOLOCK) INNER JOIN universus..CURRICULO CURRICULO WITH (NOLOCK) ON ALUCURRICULO.CODCURRICULO = CURRICULO.CODCURRICULO AND ALUCURRICULO.CODESCOLA = CURRICULO.CODESCOLA INNER JOIN universus..CURSO CURSO WITH (NOLOCK) ON CURRICULO.CODCURSO = CURSO.CODCURSO AND CURRICULO.CODESCOLA = CURSO.CODESCOLA WHERE (ALUNO.CODESCOLA = ALUCURRICULO.CODESCOLA AND ALUNO.CODALUNO = ALUCURRICULO.CODALUNO)) then case when (select min(CodStatus) from universus..ALUCURRICULO ALUCURRICULO WITH (NOLOCK) where ALUCURRICULO.CODESCOLA=ALUNO.CODESCOLA AND ALUCURRICULO.CODALUNO=ALUNO.CODALUNO and CodStatus<>401) = 402
43
or (select max(CodStatus) from universus..ALUCURRICULO ALUCURRICULO WITH (NOLOCK) where ALUCURRICULO.CODESCOLA=ALUNO.CODESCOLA AND ALUCURRICULO.CODALUNO=ALUNO.CODALUNO) = 403 then 1 else 0 end /* demais alunos: verifica pelas disciplinas, se cursando em alguma, libera acesso */ when (SELECT MIN(ENTURMA.CODSTATUS) AS menorstatus FROM universus..ENTURMA WITH (NOLOCK) WHERE ALUNO.CODESCOLA = ENTURMA.CODESCOLA AND ALUNO.CODALUNO = ENTURMA.CODALUNO and ENTURMA.ANO = @ano AND ENTURMA.PERIODO = @periodo and ENTURMA.CODSTATUS <> 1 ) = 2 then 1 else 0 end FROM universus..ALUNO ALUNO inner join universus..pessoa pessoa on pessoa.codpessoa = aluno.CODPESSOA where pessoa.CICCPF = @cpf return isnull(@status,1) END
6.3.5 GetIP – Calcula próximo endereço de rede ALTER FUNCTION [dbo].[GetIP] () RETURNS int AS BEGIN declare @ip int declare @ip1 decimal declare @ip2 decimal select @ip=ip from ip set @ip2=0 while @ip2 in (0,1,2,3,4,5,6,7,8,9,254,255) begin set @ip=@ip+1 set @ip1=floor(@ip/256) set @ip2=@ip - (@ip1*256) end return @ip END
6.3.6 WGU – Atualiza e verifica dados dos usuários da rede sim fio CREATE PROCEDURE [dbo].[WGU] AS BEGIN SET NOCOUNT ON; declare @ano int declare @periodo int select @ano=ano, @periodo=periodo from wireless_ano_periodo declare @wl_status varchar
44
declare declare declare declare declare declare declare declare declare declare
@id int @mac varchar(20) @origem varchar(2) @codigo varchar(15) @cpf varchar(15) @nip varchar(15) @ip decimal @ip1 decimal @ip2 decimal @status varchar
if (select ip from ip) >= ((256*256)-(256*2)) begin delete FROM [radius].[dbo].[radcheck] delete FROM [radius].[dbo].[radreply] delete FROM [radius].[dbo].[radgroupcheck] delete FROM [radius].[dbo].[radgroupreply] delete FROM [radius].[dbo].[radusergroup] update wireless set ip=null update ip set ip=1 end DECLARE wireless Cursor For select id,mac,origem,codigo,cpf,status,ip from wireless where origem in ('AC','OU') order by origem, cpf OPEN wireless fetch next from wireless into @id,@mac,@origem,@codigo,@cpf,@status,@nip while @@fetch_status = 0 begin if @origem = 'AC' begin -- se ALUNO/PROF exec @wl_status = status_RA @cpf -- busca status ALUNO if @wl_status = '1' begin -- se ALUNO ativo if @status = 'B' update wireless set status='L' where id = @id -- libera WL end else begin -- se NAO ALUNO ativo exec @wl_status = status_PF @cpf -- busca status PROF if @wl_status = '1' begin -- se PROF ativo if @status = 'B' update wireless set status='L' where id = @id -- libera WL end else begin -- se NAO PROF ativo exec @wl_status = status_DP @cpf -- busca status FUNC if @wl_status = '1' begin -- se FUNC ativo if @status = 'B' update wireless set status='L' where id = @id -- libera WL end else begin exec @wl_status = status_OU @cpf -- busca status OUTROS if @wl_status = '1'begin -- se OUTROS ativo if @status = 'B' update wireless set status='L' where id = @id -- libera WL end else begin if @status = 'L' update wireless set status='B' where id = @id -- bloqueia WL end end end end
45
end else if @origem = 'OU' begin exec @wl_status = status_DP @cpf -- busca status FUNC if @wl_status = '1' begin -- se FUNC ativo if @status = 'B' update wireless set status='L' where id = @id -- libera WL update wireless_usuarios set status=1 where cpf=@cpf end else begin exec @wl_status = status_OU @cpf -- busca status OUTROS if @wl_status = '1' begin -- se OUTROS ativo if @status = 'B' update wireless set status='L' where id = @id -- libera WL end else begin if @status = 'L' update wireless set status='B' where id = @id -- bloqueia WL end end end if @nip is null or @nip='' begin set @nip='' select @nip=Value from radreply where Attribute = 'Framed-IP-Address' and upper(@mac)=replace(UserName,':','') if @nip='' begin set @ip = dbo.GetIP() set @ip1=floor(@ip/256) set @ip2=@ip - (@ip1*256) update ip set ip=@ip set @nip = '172.17.'+cast(@ip1 as varchar) +'.'+cast(@ip2 as varchar) end update wireless set ip = @nip where id = @id end fetch next from wireless into @id,@mac,@origem,@codigo,@cpf,@status,@nip end close wireless deallocate wireless -- insere no radius MAC para DHCP insert into radcheck (UserName,Attribute,op,Value) select substring(upper(mac),1,2)+':'+substring(upper(mac),3,2)+':'+substring(upper(mac ),5,2)+':'+substring(upper(mac),7,2)+':'+substring(upper(mac),9,2)+':'+substrin g(upper(mac),11,2), 'Auth-Type', ':=', 'Accept' from wireless where status='L' and not exists (select UserName from radcheck where upper(wireless.mac)=replace(UserName,':','') ) -- insere no radius IP/MAC insert into radreply (UserName,Attribute,op,Value) SELECT substring(upper(mac),1,2)+':'+substring(upper(mac),3,2)+':'+substring(upper(mac ),5,2)+':'+substring(upper(mac),7,2)+':'+substring(upper(mac),9,2)+':'+substrin g(upper(mac),11,2), 'Framed-IP-Address', '=', ip FROM wireless where status='L' and not exists (select UserName from radreply where upper(wireless.mac)=replace(UserName,':','') ) -- exclui MACs temporarios (cadastros via wireless)
46