Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática Instituto de Telecomunicações Ano Lectivo 2005/06 Projecto de 5ºano Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Data limite de entrega: Sexta-Feira, 14 de Julho de 2006 Autores: Pedro Manuel Paupério Duarte Oliveira ([email protected]) José António Gonçalves Nogueira ([email protected]) Orientador: Prof. Dr. Francisco Fontes Colaboradores: Eng. Vítor Simões Ribeiro Eng. Vítor Pinto Eng. André Oliveira Eng. Ricardo Azevedo nº25381 LEET nº26223 LEET Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP ÍNDICE 1. Enquadramento 2. Objectivos 3. Introdução e Fundamentos Teóricos 3.1. Protocolos relacionados com o projecto pág 3 pág 5 pág 7 pág 7 3.1.1. IP 3.1.2. PPP pág 7 pág 11 3.1.3. DNS 3.1.4. NAT 3.1.5. AAA 3.1.6. RADIUS 3.1.7. HTTP 3.1.8. FTP 3.1.9. SIP pág 13 pág 14 pág 15 pág 15 pág 16 pág 18 pág 18 3.1.2.1. PPPoA 3.1.2.2. PPPoE pág 12 pág 12 3.1.9.1. Conceitos gerais 3.1.9.2. O problema da Firewall 3.1.9.3. O problema do NAT 3.1.9.4. Métodos para resolver o problema do NAT 3.1.9.4.1. Universal Plug and Play 3.1.9.4.2. Simple Traversal of UDP Through Network Address Translation Devices (STUN) 3.1.9.4.3. Application Layer Gateway 3.1.9.4.4. Manual Configuration 3.1.9.4.5. Tunnel Techniques 3.1.9.4.6. Automatic Channel Mapping (ACM) 3.2. Tecnologias de Acesso 3.2.1. Dial-up 3.2.2. RDIS (ISDN) 3.2.3. BroadBand pág 18 pág 20 pág 21 pág 22 pág 22 pág 23 pág 25 pág 26 pág 26 pág 27 pág 27 pág 27 pág 28 pág 29 3.2.3.1. DSL (ADSL) 3.2.3.2. Cable 3.2.3.3. Wireless pág 29 pág 31 pág 34 3.2.3.3.1. Wi - Fi 3.2.3.3.2. WiMax 3.2.3.3.3. FWA 3.2.3.3.4. BWA 3.2.3.3.5. Tmax 3.2.3.3.6. xMax pág 35 pág 36 pág 36 pág 37 pág 38 pág 38 3.3. Ofertas Serviços Residenciais pág 38 4. Trabalho Desenvolvido 4.1. Apresentação do cenário a implementar 4.2. FreeRADIUS e base de dados mySQL 4.2.1. Instalação do freeRADIUS 4.2.2. Configuração do freeRADIUS para utilizar base de dados mySQL 4.2.3. Colocação dos utilizadores em base de dados mySQL 4.2.4. Criação do túnel PPP 1/115 pág 43 pág 43 pág 45 pág 45 pág 45 pág 47 pág 50 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 4.3. Dynamic DNS (DDNS) pág 52 4.3.1. Instalação e configuração mhDNS 4.3.2. Instalação e configuração BIND 4.3.3. Análise do funcionamento do servidor DDNS pág 52 pág 53 pág 59 4.4.1. Instalação do SER 4.4.2. Introdução do SIPALG 4.4.3. Permissões para segurança e restrição do acesso às câmaras 4.4.4. Análise dos pacotes trocados numa sessão SIP pág 61 pág 63 pág 64 pág 69 4.4. SIP Express Router (SER) 4.4.4.1. Demonstração do funcionamento do SIP ALG 4.4.4.2. “REGISTER” cenários possíveis 4.4.4.3. “INVITE” cenários possíveis 4.4.4.4. Demonstração do funcionamento do módulo permissions.so 4.5. Criação do “Centro de Serviços” 4.5.1. Captura das imagens e criação dos vídeos 4.5.2. Implementação dos servidores HTTP e FTP 4.5.3. Instalação e descrição do phpMyAdmin 4.5.4. Criação do portal web 4.5.5. Análise do funcionamento do Centro de Serviços 5. Principais Dificuldades 6. Possíveis Melhoramentos 7. Conclusões / Notas Finais 8. Bibliografia / Referências 9. Anexos 9.1. Ficheiros de configuração do freeRADIUS pág 61 pág 69 pág 71 pág 73 pág 75 pág 76 pág 76 pág 76 pág 78 pág 78 pág 82 pág 85 pág 87 pág 89 pág 91 pág 93 pág 93 9.1.1. Radiusd.conf 9.1.2. Clients.conf pág 93 pág 107 9.2.1. SER.cfg pág 109 9.3.1. Index.php 9.3.2. Redirect.php 9.3.3. Redirect2.php pág 114 pág 114 pág 115 9.2. Ficheiros de configuração do SIP Express Router (SER) 9.3. Porções de código relevantes associadas ao portal web 2/115 pág 109 pág 114 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 1. ENQUADRAMENTO Uma das áreas que tem vindo progressivamente a adquirir cada vez mais importância é, sem dúvida, a das telecomunicações. Cada vez mais se verifica um aumento das ofertas de serviços por parte dos operadores que procuram dessa forma abranger todo o tipo de clientes, sejam eles residenciais ou outros. A disponibilização de novos serviços cria nos consumidores apetência a novas necessidades. Daí o esforço demonstrado por parte dos operadores de telecomunicações e ISP no desenvolvimento de soluções atractivas que possam satisfazer essas mesmas necessidades. Muito se tem falado sobre a convergência das redes de comunicações mas só recentemente começamos a ver na prática a utilização deste modelo. Esta nova estrutura de rede baseada na tecnologia IP, capaz de suportar para além dos serviços tradicionais de tráfego de dados, o transporte de áudio (ex: Voz, rádio, …) e imagem (ex: TV, vídeo conferência, vídeo vigilância, …) sobre o mesmo suporte está associada ao conceito de triple play muito em voga nos dias de hoje. No caso residencial, áreas como a domótica e a vídeo-vigilância começam a adquirir uma importância crescente. Aliados a este tipo de serviços temos vários aspectos para além da simples conectividade IP, tais como segurança, qualidade de serviço, interligação entre redes heterogéneas, entre outros, os quais não deverão ser descurados. Outros aspectos, como a pluralidade de tecnologias de rede de acesso existentes actualmente e a sua incidência no mercado alvo, devem também ser tomados em consideração aquando do lançamento de novas ofertas. Alguns temas como padrões de compressão, formas de codificação, entre outros ainda necessitam de ser analisados com vista a permitir interoperabilidade entre equipamentos de fabricantes ou tecnologias diferentes. No entanto, tudo não passará duma questão de tempo atendendo à própria pressão do mercado consumidor. 3/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 4/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 2. OBJECTIVOS Este projecto tem como objectivo o estudo, caracterização e posterior desenvolvimento de um cenário de teste relacionado com o aprovisionamento de serviços para clientes do tipo residêncial. Mais concretamente, pretendemos implementar um cenário simples de televigilância, não esquecendo de fazer um levantamento dos principais requisitos, dando especial importância à questão da segurança. Este projecto foi dividido em 2 partes, uma de pesquisa e outra de desenvolvimento, sendo que a segunda parte foi estruturada em 5 fases com vista a facilitar e melhorar a progressão do trabalho. Deste modo temos: 1ªPARTE Esta 1ª parte teve como objectivo a realização de uma pesquisa com vista à recolha de documentação relacionada com vários aspectos importantes para a realização do projecto. As principais áreas de trabalho foram: • Estudo dos principais protocolos a utilizar; • Identificação das várias tecnologias de rede de acesso existentes, quais as suas principais características e métodos de autenticação utilizados em cada uma delas; • Determinação do grau de implementação do conceito de triple play no mercado actual e identificação das principais empresas que o fornecem; • Análise das ofertas de serviços residenciais disponibilizadas actualmente e identificação dos operadores que as fornecem. • Apresentação de sugestões relacionadas com o cenário a desenvolver (quais as entidades de rede e da plataforma de serviços que deverão estar presentes e como se deverão relacionar entre si). 2ªPARTE 1ªfase Esta fase inicial de desenvolvimento teve como objectivo a introdução do registo de utilizadores freeRADIUS numa base de dados mySQL, com vista a facilitar a introdução de novos utilizadores e consulta/actualização dos dados lá existentes sempre que tal seja necessário. 2ªfase Nesta fase foi implementado um servidor de dynamic DNS com vista a manter actualizada a correspondência entre nomes e máquinas resolvendo possíveis problemas relacionados com a renovação dos endereços IP e a atribuição dinâmica dos mesmos. 3ªfase Esta fase teve como primeiro objectivo a instalação, configuração e teste do servidor SIP designado por SER (SIP Express Router) da iptel. Posteriormente tratamos de resolver os problemas relacionados com o NAT. Para tal instalamos o SIPALG (Application Layer Gateway). Nesta fase estabelecemos ainda um cenário simples de teste para a comunicação entre 2 terminais (um na rede privada e outro na rede pública). 5/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Numa fase mais avançada introduzimos instruções suplementares no ficheiro de configuração do SER com vista a restringir o acesso ao servidor e às diferentes câmaras por parte dos utilizadores e deste modo garantir a segurança deste serviço. 4ªfase Esta fase teve como objectivo a criação de um portal web seguro que funcionasse como alternativa à utilização do protocolo SIP. Associado a este portal web está o conceito de centro de serviços o qual os utilizadores poderão utilizar para acederem às suas câmaras. 5ªfase Esta última fase teve como objectivo a interligação dos vários blocos desenvolvidos anteriormente nas fases 1, 2, 3, e 4 e a demonstração do cenário criado. Implementamos um bloco BBRAS utilizando o servidor de autenticação freeRADIUS o qual utiliza a informação presente nas tabelas da base de dados mySQL que permitiu a criação dum túnel PPP para o acesso á rede por parte dos utilizadores. 6/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 3. INTRODUÇÃO E FUNDAMENTOS TEÓRICOS 3.1. Protocolos relacionados com o projecto 3.1.1. IP O IP (Internet Protocol) é um protocolo pertencente à camada 3 do modelo OSI (ver figura 1) que contém informação de endereçamento e alguma informação de controlo que permite o encaminhamento de pacotes. O IP tem duas responsabilidades primárias: fornecer conectividade (política de entrega de datagramas do tipo “best effort” através da rede) e permitir a fragmentação e reconstrução de datagramas para suportar ligações de dados com diferentes MTUs (maximum transmission units). Figura 1 – Modelo OSI 7/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Um pacote IP contém diversos tipos de informação. O conteúdo dum pacote IP encontrase representado na figura 2. Figura 2 – Conteúdo dum pacote IP • Version - Indica a versão do IP que está a ser usada. • IP Header Length (IHL) – Indica que o cabeçalho do datagrama tem um comprimento de 32bit words. • Type-of-Service – Especifica como um protocolo de camada superior quer que o datagrama seja utilizado e atribui aos datagramas diferentes níveis de importância. • Total Length – Especifica o comprimento em bytes de todo o pacote IP (cabeçalho e dados). • Identification – Contém um inteiro que identifica o datagrama. Este campo é usado para facilitar a juntar fragmentos dum mesmo datagrama. • Flags – Consiste num campo composto por 3 bits dos quais os 2 menos significativos controlam a fragmentação. O bit de mais baixa ordem especifica se o pacote pode ou não ser fragmentado. O bit do meio especifica se o pacote é o último fragmento duma série de pacotes fragmentados.O bit de maior ordem não é utilizado. • Fragment Offset – Indica a posição dos dados fragmentados relativamente ao início dos dados no datagrama original. Isto permite a correcta reconstrução do datagrama original. • Time-to-Live – Mantém um contador que vaí sendo decrementado até zero, ponto no qual o datagrama é descartado. • Protocol – Indica qual o protocolo de camada superior que recebe os pacotes após o processamento IP estar completo. • Header Checksum – Ajuda a garantir a integridade do cabeçalho IP. • Source Address – Especifica o endereço origem. • Destination Address – Especifica o endereço destino. • Options – Permite ao IP suportar opções de diversos tipos. • Data – Contém informação de camada superior. 8/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP O endereçamento IP está relacionado com o routing dos datagramas IP através da rede. Cada endereço IP possui componentes específicos e segue um formato base. Os endereços IP podem ser ainda sub-divididos e usados para criar subredes. Cada terminal numa rede TCP/IP possui um endereço único de 32 bits (figura 3) que está dividido em 2 partes: uma associada à rede e outra associada ao terminal. A primeira, identifica a rede e tem de ser atribuída pelo InterNIC (Internet Network information Center) se se pretender que a rede faça parte da Internet. Um ISP pode obter blocos de endereços de rede a partir do InterNIC e atribuir espaço de endereçamento caso seja necessário. A segunda parte do endereço IP identifica o terminal numa determinada rede e é atribuída pelo o administrador de rede local. Figura 3 – Formato dos endereços IP Existem 5 classes de endereços IP: A, B, C, D, e E. No entanto, apenas as classes A, B e C estão disponíveis para uso comercial. Na figura seguinte, encontram-se caracterizadas cada uma das 5 classes. IP Address Class HighOrder Bit(s) Format Purpose Address Range No. Bits Network/Host Max. Hosts A N.H.H.H1 Few large organizations 0 1.0.0.0 to 126.0.0.0 7/24 167772142 (224 - 2) B N.N.H.H Medium-size organizations 1, 0 128.1.0.0 to 191.254.0.0 14/16 65534 (216 - 2) C N.N.N.H Relatively small organizations 1, 1, 0 192.0.1.0 to 223.255.254.0 21/8 254 (28 - 2) D N/A Multicast groups 1, 1, 1, 0 224.0.0.0 to 239.255.255.255 N/A (not for commercial use) N/A E N/A Experimental 1, 1, 1, 1 240.0.0.0 to 254.255.255.255 N/A N/A Figura 4 – Classes de endereços IP Inicialmente os endereços IP tinham fronteiras fixas, sendo a fronteira definida a partir dos primeiros bits do campo de endereço; é o caso dos endereços de classe A, B e C. Depois passaram a ter fronteiras flexíveis, sendo estas definidas a partir de uma máscara. A máscara é utilizada para separar a parte de rede da parte de host dos endereços. 9/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Figura 5 – Endereços IP e máscaras Como foi referido anteriormente, as redes IP podem ser divididas em redes mais pequenas denominadas subredes. A utilização de máscaras, permite que uma rede seja dividida em subredes estendendo a parte de rede à parte de host do endereço IP. Esta técnica aumenta o número de redes mas reduz o número de hosts. Se considerarmos a rede 192.168.0.0 então 192.168.1.0 e 192.168.2.0 são exemplos de subredes pertencentes a 192.168.0.0. A divisão em subredes fornece alguns benefícios ao administrador da rede como por exemplo, flexibilidade extra, maior eficiência no uso dos endereços da rede e capacidade de conter o tráfego broadcast. As subredes estão sob uma administração local. Deste modo, quem vê a rede pelo lado de fora nada sabe acerca da organização interna da mesma. Outro aspecto importante é o default gateway. O default gateway é configurado pelo utilizador. Corresponde ao endereço IP da interface de um dos routers que pertence à rede do terminal em que o utilizador se encontra e faz com que seja possível enviar um pacote IP para uma rede IP que não a sua. Os pacotes para essas redes serão assim enviados para o default gateway. Convém ainda fazer uma breve referência aos protocolos ARP e ICMP. O ARP (Address Resolution Protocol) é utilizado para determinar qual o endereço MAC de um terminal. Para tal é feito um broadcast dum pacote do tipo ARP request. O terminal com o endereço IP igual ao especificado no pacote ARP request irá responder enviando um pacote ARP response com o seu endereço MAC. O ICMP (Internet Control Message Protocol) permite a troca de mensagens de controlo e diagnóstico. Os pacotes ICMP são encapsulados nos pacotes IP. Os diferentes tipos de mensagens associadas ao ICMP estão representadas na figura seguinte. 10/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Figura 6 – Tipos de mensagens ICMP Apesar da versão actual do protocolo IP ser a v4, cada vez mais se tem falado do IPv6. O IPv6 é a futura versão do protocolo IP que se encontra actualmente em fase de desenvolvimento. É também conhecido por Ipng (Internet Protocol next generation). O IPv6 está a ser projectado como um upgrade do IPv4 e irá de facto coexistir com a antiga versão durante algum tempo. O IPv6 está a ser construído para permitir um crescimento firme da Internet, quer em termos do número de estações ligadas quer em termos de quantidade de tráfego de dados transmitido. Alguns dos principais benefícios do IPv6 são: maior espaço de endereçamento, existência de QoS interna, melhor performance e serviços de encaminhamento. 3.1.2. PPP O protocolo PPP (Point-to-Point Protocol), surgiu inicialmente como um protocolo de encapsulamento para transportar tráfego IP sobre ligações ponto a ponto. O PPP estabeleceu também um standard para atribuição e controlo de endereços IP, encapsulamento assíncrono e síncrono orientado ao bit, multiplexing do protocolo de rede, configuração da ligação, teste da qualidade da ligação, detecção de erros e negociação de opções para o acréscimo de capacidades de rede. Em computação, o protocolo PPP, é utilizado para estabelecer uma ligação directa entre dois nós. A sua primeira utilização foi ligar computadores usando a linha telefónica, embora seja também ocasionalmente usado sobre ligações broadband (como PPPoE ou PPPoA). Muitos ISPs utilizam o PPP para fornecerem dial-up access aos clientes. O PPP é habitualmente usado para funcionar como um protocolo de 2ªcamada (camada “Data Link” do modelo OSI) para ligações sobre circuitos síncronos e assíncronos. O PPP foi concebido para funcionar com vários protocolos da camada de rede como IP, IPX e AppleTalk, e como um substituto para o protocolo de 2ªcamada não-standard SLIP. O PPP fornece um método para transmitir datagramas sobre ligações ponto a ponto em série, o qual inclui os seguintes três componentes: um método para encapsular datagramas sobre ligações em série; um LCP (Link Control Protocol) extensível para estabelecer, configurar e testar a ligação; uma família de NCPs (Network Control Protocol) para estabelecer e configurar diferentes protocolos da camada de rede. 11/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP O PPP LCP fornece um método para estabelecer, configurar, manter e terminar a ligação ponto a ponto. O LCP pode ser dividido em quatro fases: • Estabelecimento da ligação e negociação da configuração. Antes da troca de quaisquer datagramas, o LCP necessita de iniciar uma ligação e negociar os parâmetros de configuração. Esta fase será dada por completa quando uma frame configuration-acknowledgment tiver sido enviada e recebida. • Determinação da qualidade da ligação (opcional). Nesta fase, a ligação é testada para determinar se a sua qualidade é suficiente para permitir protocolos da camada de rede. • Negociação da configuração dos protocolos da camada de rede. Os protocolos da camada de rede são configurados separadamente pelo NCP. Se o LCP fechar a ligação, então ele informa os protocolos da camada de rede para que estes tomem a acção adequada. • Terminação da ligação. O LCP pode terminar a ligação em qualquer instante. Esta acção ocorre geralmente em seguimento de um pedido por parte de um utilizador. No entanto, pode ocorrer em consequência de um evento físico como por exemplo a perda da portadora. Existem três classes de frames LCP: • frames de estabelecimento da ligação - usadas para estabelecer e configurar uma ligação; • frames de terminação da ligação – usadas para terminar a ligação; • frames de manutenção da ligação – usadas para gerir a ligação. O PPP foi criado muito mais tarde que as especificações HDLC originais. Como resultado, os criadores do PPP incluíram muitas outras especificações que até aquela altura não tinham sido vistas em outros protocolos WAN Data Link. 3.1.2.1. PPPoA O protocolo PPPoA (Point-to-Point sobre ATM) é um protocolo para encapsulamento de frames PPP em ATM AAL5. É normalmente usado com um modem para cabo, e em serviços DSL e ADSL. Oferece funcionalidades PPP standard como autenticação, encriptação e compressão. Se for usado como método de encapsulamento da ligação em redes baseadas em ATM, pode reduzir ligeiramente o overhead (+/- 0.58%) em comparação com o PPPoE. Suporta ( tal como o PPPoE) os tipos de encapsulamento baseados em VC-MUX e LLC. 3.1.2.2. PPPoE O protocolo PPPoE (Point-to-Point sobre Ethernet) é um protocolo de rede para encapsular frames PPP em frames de Ethernet. É usado geralmente com um modem de cabo e serviços DSL. Oferece funcionalidades PPP standard como autenticação, encriptação e compressão. Permite usar software tradicional baseado em PPP para segurar uma ligação que não utiliza uma linha série mas sim uma rede orientada ao pacote, como a Ethernet, para fornecer uma ligação clássica com login e password para uma conta de ligação à Internet. 12/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Também o endereço IP no outro lado da ligação é apenas atribuído quando a ligação PPPoE está aberta, o que permite a reutilização dinâmica do endereço IP. 3.1.3. DNS O DNS (Domain Name System or Server) é um serviço de Internet que faz a tradução de nomes de domínios (alfabéticos e mais fácil de lembrar) em endereços IP. A Internet é, no entanto, baseada em endereços IP o que significa que sempre que utilizamos um nome dum domínio, o serviço DNS vai traduzir o nome para o correspondente endereço IP. O sistema DNS é de facto uma rede própria. Se um servidor DNS não souber como traduzir um determinado nome de domínio, ele pergunta a outro e assim sucessivamente, até o respectivo endereço IP ser devolvido. Utiliza uma base de dados distribuída que proporciona um serviço de tradução de nomes de estações (hostnames) em endereços IP. Permite também traduzir endereços IP em nomes de estações. Os nomes são organizados em domínios de acordo com uma estrutura hierárquica. Cada sistema DNS define uma ou mais zonas sobre as quais tem a autoridade de resolução. Podemos ter 2 tipos de resoluções: resolução recursiva e resolução iterativa. • Resolução recursiva: – Mais eficiente: minimiza o tempo entre o pedido DNS e a resposta ao pedido. – Penaliza o desempenho dos servidores DNS: cada servidor tem em média mais pedidos simultâneos em processamento. Figura 7 – DNS Resolução recursiva • Resolução iterativa: – Menos eficiente: aumenta o tempo médio entre o pedido DNS e a resposta ao pedido. – Optimiza o desempenho dos servidores DNS: cada servidor responde de imediato a cada pedido. Figura 8 – DNS Resolução iterativa O DNS dinâmico é um sistema que permite que a informação relacionada com o nome de um domínio seja actualizada em tempo real. É geralmente utilizado para permitir a atribuição dum nome de domínio a um PC com endereço IP variável. Isto faz com que outros terminais 13/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP consigam estabelecer ligações com esse PC sem necessitarem de, eles próprios, determinar qual o endereço IP da máquina em questão. O serviço de DNS dinâmico é fornecido em larga escala por vários DNS hosting services, os quais retêm o endereço corrente numa base de dados e fornecem um programa cliente que enviará um update sempre que se verificar uma alteração do endereço IP. Muitos routers e outros componentes de rede contêm uma funcionalidade destas no seu firmware. Para implementer o DNS dinâmico é necessário definir o tempo máximo de cache do domínio com um período curto. Isto impede que outros nós da Internet retenham endereços desactualizados na cache DNS, fazendo com que eles contactem o name server do domínio para cada nova ligação. 3.1.4. NAT O NAT (Network Address Translation) surgiu como uma alternativa real para o problema da falta de endereços IPv4 na Internet. Cada computador que pretende acesser à Internet deve ter o protocolo TCP/IP configurado. Para isso, cada computador da rede interna, precisa de um endereço IP válido na Internet. Não existem endereços IPv4 suficientes. A criação do NAT veio de certo modo solucionar esta questão (ou pelo menos fornecer uma alternativa até que o IPv6 esteja em uso na maioria dos sistemas da Internet). Com o uso do NAT, os computadores da rede Interna, utilizam os chamados endereços privados. Os endereços privados não são válidos na Internet, isto é, pacotes que tenham como origem ou como destino, um endereço privado, não serão encaminhados. O protocolo NAT é portanto um standard da Internet que permite que uma rede local (LAN) utilize um conjunto de endereços IP para tráfego interno e outro conjunto de endereços IP para tráfego externo. Uma “NAT box” localizada no ponto onde a LAN está em contacto com a Internet efectua todas as traduções necessárias. O protocolo NAT serve três propósitos principais: fornecer uma espécie de firewall através da ocultação dos endereços de IP externos; permitir a uma corporação utilizar mais endereços IP internos (desde que eles sejam utilizados apenas a nível interno, não existe possibilidade de conflito com outros endereços IP utilizados por outras companhias e organizações) e permitir a uma companhia combinar múltiplas ligações ISDN numa única ligação à Internet. Quando um cliente interno tenta aceder à Internet, o NAT substitui o endereço interno do cliente (endereço de origem), por um endereço válido na Internet. Para além das mudanças em termos de endereços é também associado um porto de comunicação ao terminal. O NAT mantém uma tabela interna onde fica registrado que, a comunicação através do porto “x” está relacionada com o cliente ”x”. Todos os endereços da rede interna são “traduzidos” para o mesmo endereço externo, porém com um número de porto diferente para cada cliente da rede interna. Quando a resposta retorna, o NAT consulta a sua tabela interna e, pela identificação do porto, ele sabe para qual computador da rede interna deve ser enviada a referida resposta, uma vez que cada porto está associado a um e só um endereço IP da rede interna. 14/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 3.1.5. AAA O protocolo AAA (Authentication Authorization and Accounting) é um protocolo de segurança que engloba autenticação, autorização e contabilidade. A autenticação está relacionada com a confirmação de que o utilizador que está a requerr um determinado serviço é um utilizador válido do serviço de rede que está a ser requisitado. A autenticação é realizada pela apresentação de uma identidade e credenciais (por exemplo password). A autorização refere-se aos tipos de serviço específicos que são concedidos a um utilizador tendo em consideração a sua autenticação, os serviços que foram requisitados e o estado do sistema actual. A contabilidade refere-se ao seguimento do consumo dos recursos da rede por parte dos utilizadores. Esta informação pode ser utilizada para controlo, planeamento, facturamento e outros propósitos. 3.1.6. RADIUS O RADIUS (Remote Authentication Dial-In User Service) é normalmente usado para fornecer autenticação centralizada, autorização e contabilidade para dial-in, virtual private network, e mais recentemente acesso a redes wireless. Um cliente RADIUS (tipicamente um servidor de acesso) envia as credenciais do utilizador e informação acerca de parâmetros da ligação na forma de uma mensagem RADIUS para um servidor RADIUS. O servidor RADIUS autentica e autoriza o pedido feito pelo cliente RADIUS e envia uma mensagem RADIUS de resposta. Os clientes RADIUS também enviam mensagens RADIUS de contabilidade para servidores RADIUS. Adicionalmente, o standard RADIUS suporta o uso de proxies RADIUS. Um proxy RADIUS é um PC que encaminha as mensagens RADIUS entre clientes RADIUS, servidores RADIUS e outros proxy RADIUS. As mensagens RADIUS nunca são enviadas entre o cliente de acesso e o servidor de acesso. As mensagens RADIUS são enviadas como mensagens UDP. O porto UDP 1812 é usado para as mensagens RADIUS de autenticação e o porto UDP 1813 é usado para mensagens RADIUS de contabilidade. Alguns servidores de acesso poderão usar o porto UDP 1645 para mensagens RADIUS de autenticação e o porto UDP 1646 para mensagens RADIUS de contabilidade. Apenas uma mensagem RADIUS é incluída na carga paga UDP de um pacote RADIUS. Como exemplo de tipos de mensagens RADIUS temos: - Access-Request: Enviada por um cliente RADIUS para pedir autenticação e autorização para uma tentativa de ligação à rede de acesso. - Access-Accept: Enviada por um servidor RADIUS em resposta a uma mensagem de Access-Request. Esta mensagem informa o cliente RADIUS que a tentativa de ligação é autenticada e autorizada. - Access-Reject: Enviada por um servidor RADIUS em resposta a uma mensagem de Access-Request. Esta mensagem informa o cliente RADIUS que a tentativa de ligação é rejeitada. Um servidor RADIUS envia esta mensagem caso as credenciais não estejam correctas ou caso a tentativa de ligação não seja autorizada. - Access-Challenge: Enviada por um servidor RADIUS em resposta a uma mensagem Access-Request. Esta mensagem é um desafio para o cliente RADIUS que requer uma resposta. 15/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP - Accounting-Request: Enviada por um cliente RADIUS para especificar informação de contabilidade para uma ligação que foi aceite. Accounting-Response: Enviada por um servidor RADIUS em resposta a uma mensagem de Accounting-Request. Uma mensagem RADIUS engloba um cabeçalho e vários atributos. Cada atributo RADIUS especifica um pedaço de informação acerca da tentativa de ligação. Para vários protocolos de autenticação, os resultados da negociação da autenticação entre o servidor de acesso e o cliente são encaminhados para o servidor RADIUS para verificação. Para fornecer segurança às mensagens RADIUS, tanto o cliente RADIUS como o servidor RADIUS são configurados com um segredo comum. Na figura seguinte encontra-se uma representação das mensagens trocadas entre um terminal e o AAA Server utilizando o protocolo RADIUS. Figura 9 – Mensagens trocadas com o protocolo RADIUS 3.1.7. HTTP O protocolo HTTP (HyperText Tranfer Protocol) define as interacções entre “Web browsers” e “Web servers” assim como os formatos das mensagens necessárias. Cada interacção engloba duas acções: – O envio de uma mensagem request por parte do cliente identificando o ficheiro que pretende receber. 16/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP – O envio de uma mensagem response por parte do servidor com uma resposta negativa ou positiva (neste caso, com o conteúdo do ficheiro pedido). De assinalar que é efectuado um pedido por cada ficheiro, mesmo em páginas Web com múltiplos ficheiros. O HTTP é um protocolo stateless de transferência de informação hypermedia baseado na linguagem Hiper-Text Mackup Language (HTML). Corre sobre TCP e o servidor responde a pedidos no porto 80 (por defeito, ou outro se configurado explicitamente). Figura 10 – Esquema HTTP As mensagens HTTP request são compostas em formato ASCII. Começam por uma linha de pedido (GET, POST, HEAD…). Incluem um número variável de linhas de cabeçalho. Os principais campos são: – Host: identifica o endereço do servidor. – Connection: indica se o servidor deve terminar a ligação (close) ou não (keep-alive). – User-agent: especifica o tipo de browser. As mensagens HTTP response começam por uma linha de resposta. Incluem um número variável de linhas de cabeçalho e termina com o conteúdo do ficheiro pedido. Os tipos de respostas são: • 200 OK – Pedido aceite e o conteúdo do ficheiro é incluído na resposta • 301 Moved Permanently – O ficheiro pedido foi transferido permanentemente – A resposta inclui uma linha de cabeçalho do tipo Location com a nova localização do ficheiro • 400 Bad Request – O pedido não foi compreendido pelo servidor • 404 Not Found – O ficheiro não existe no servidor • 505 HTTP Version Not Supported – A versão HTTP do pedido não é suportada pelo servidor 17/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP O HTTP inclui um processo de autenticação que permite limitar o acesso a ficheiros com base num username e password. Uma mensagem request enviada por um browser para um ficheiro protegido tem como resposta “401 Authorization Required”. Esta resposta inclui uma linha de cabeçalho do tipo “WWW-Autenticate” indicando o método de autenticação a usar. O novo pedido inclui uma linha de cabeçalho do tipo “Authorization” com a informação do username e password gerada pelo método pedido pelo servidor. Tipicamente, o browser guarda a informação de username e password em memória para ser usada em futuras mensagens de request. 3.1.8. FTP O protocolo FTP (File Transfer Protocol) é um serviço de transferência de ficheiros que corre sobre TCP. O servidor usa dois números de porto: – Porto 21: para ligação de controlo – Porto 20: para ligação de dados É mais sofisticado que o TFTP (Trivial File Transfer Protocol) em termos de segurança, uma vez que utiliza credenciais para autenticação: username e password Numa sessão FTP, o utilizador estabelece uma ligação de controlo com o servidor por onde são trocados os comandos FTP. Essa ligação de controlo mantém-se activa até terminar a sessão FTP. Sempre que seja necessário a transferência de dados, o servidor estabelece uma ligação de dados do seu número de porto 20 para um número de porto previamente anunciado pelo cliente pelo comando PORT. No fim da transferência de dados, o servidor termina a respectiva ligação. 3.1.9. SIP 3.1.9.1. Conceitos Gerais O SIP (Session Initiation Protocol) é um protocolo textual de controlo ao nível da aplicação baseado nos protocolos Hyper Text Transfer Protocol (HTTP) e Simple Mail Transfer Protocol (SMTP). O facto do SIP ser um protocolo textual dá-lhe a vantagem de ser facilmente implementável, extensível e legível. Este protocolo de sinalização para comunicação multimédia permite a criação, gestão e terminação de sessões e funciona em conjunto com outros 2 protocolos: RTP e SDP. O protocolo RTP (Real Time Protocol) é usado para transportar dados multimédia em tempo-real; este protocolo define um standard para o formato dos pacotes e torna possível a codificação e divisão dos dados em pacotes, de forma a possibilitar o seu transporte através da Internet. O SDP (Session Description Protocol) é usado para descrever e codificar as capacidades dos participantes na sessão. Esta descrição é depois usada para negociar as características da sessão (por exemplo, a negociação dos codecs), de forma a que todos os potenciais intervenientes possam participar. 18/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP O SIP usa um modelo de comunicação do tipo cliente-servidor. Os pedidos são gerados por um cliente e enviados para um servidor que os recebe e aos quais responde. O SIP pode usar TCP ou UDP nas suas comunicações. Há dois tipos de mensagens SIP: pedidos de um cliente para um servidor ou respostas de um servidor para um cliente (mensagens de estado). • • • • • Existem seis tipos diferentes de mensagens de pedidos: REGISTER: usado pelo utilizador para registar o seu endereço SIP num servidor SIP. Um utilizador pode registar-se em vários servidores SIP e pode também ter vários registos activos ao mesmo tempo no mesmo servidor, o que acontece quando está ligado em vários terminais. INVITE: usado para iniciar uma sessão; BYE: usado para terminar a sessão; pode ser enviado por qualquer um dos participantes na sessão. OPTIONS: usado para inquirir o servidor sobre as suas capacidades. CANCEL: termina um pedido pendente, isto é, um pedido à espera de uma resposta final. As mensagens de resposta são iniciadas por uma linha de estado a qual contém um código de três dígitos (códigos de estado) que indica o resultado do pedido e uma frase para uma descrição textual. Os códigos de resposta estão divididos em 6 classes. Cada classe refere-se a um grupo de códigos de estado relacionados. As classes são: • Classe 1XX: respostas provisórias que fornecem informação acerca do progresso do pedido. • Classe 2XX: respostas que indicam o sucesso do pedido (pedido entendido e realizado pelo servidor). • Classe 3XX: respostas que indicam redirecção, resultantes da não acessibilidade da parte chamada. Fornecem um endereço alternativo. • Classe 4XX: respostas que indicam insucesso do pedido, resultante dum erro no lado do cliente. • Classe 5XX: respostas que indicam insucesso do pedido, resultante dum erro no lado do servidor. • Classe 6XX: respostas que indicam insucesso global, o que significa que houveram problemas durante a execução do protocolo. Tal como acontece com um qualquer protocolo se sinalização, os pedidos e respostas são enviados para endereços particulares. No SIP, esses endereços (SIP:user_identifier@domain), cuja forma é idêntica aos endereços email (mas com um URL SIP e não mailto), são conhecidos por SIP URIs (Uniform Resource Identifiers). Numa rede SIP existem cinco tipos de entidades lógicas principais. Cada entidade tem funções específicas e participa numa comunicação SIP como cliente (inicia pedidos), como servidor (responde a pedidos) ou como ambos. Uma entidade física SIP pode conter as funcionalidades de mais do que uma entidade lógica. 19/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP As várias identidades são: • User Agent: parte integrante de qualquer terminal SIP. São constituídos por um cliente User Agent Client (UAC) - e um servidor - User Agent Server (UAS). O UAC é responsável pelo envio dos pedidos e pela recepção das respostas. O UAS é responsável pela recepção de pedidos e pelo envio de respostas a esses pedidos. • Servidor proxy: entidade intermediária que funciona simultâneamente como cliente e servidor com o propósito de efectuar pedidos em nome de outros clientes. Esta entidade reencaminha pedidos SIP para UASs e respostas SIP para UACs. • Servidor registrar: entidade que recebe registos de utilizadores, extrai informação acerca da localização actual do utilizador (endereço IP, porta e nome de utilizador) e guarda esta informação numa base de dados de localização. Tipicamente este servidor existe em conjunto com os servidores proxy e redirect. • Servidor redirect: entidade que responde a um pedido com um endereço alternativo para o qual o pedido deve ser direccionado, à excepção de pedidos não suportados, aos quais responde com mensagens de resposta do tipo 4XX, 5XX ou 6XX, e também para pedidos de CANCEL aos quais responde com uma mensagem de resposta 200. • Gateway SIP: entidade que serve de interface entre uma rede que implementa SIP e outra rede que utiliza outro protocolo de sinalização. O SIP é um protocolo transaccional uma vez que as suas mensagens são organizadas em transacções. Uma transacção é uma sequência de mensagens trocadas entre elementos SIP; consiste num pedido e todas as respostas a esse pedido, o que inclui as possíveis respostas provisórias e uma ou mais respostas finais. Os diálogos estabelecem as relações entre as várias transacções que relacionam. Os diálogos SIP representam uma relação ponto-a-ponto entre User Agents. Os diálogos facilitam a sequenciação e encaminhamento de mensagens SIP entre os terminais SIP e são identificados usando os cabeçalhos ”Call-ID”, ”From”e ”TO”. 3.1.9.2. O problema da Firewall O papel da firewall é proteger a rede contra acessos por parte de fontes não autorizadas. Ela bloqueia tráfego baseada em três parâmetros: a origem, o destino e o tipo de tráfego. As firewalls também tomam decisões baseadas na direcção do fluxo de tráfego. Tipicamente, tráfego que entra (proveniente do domínio público não confiável) apenas é permitido se a sessão tiver sido iniciada por um dispositivo no domínio confiável, ou seja, no domínio privado. 20/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Figura 11 – O problema da firewall As comunicações baseadas em SIP, assim como a telefonia tradicional, são baseadas na chegada de chamadas não autorizadas, provenientes de uma vasta gama de fontes desconhecidas e portanto não confiáveis. Isto entra em desacordo com as politicas de filtragem de pacotes da firewall descritas anteriormente. A maior parte dos gestores de comunicações estão relutantes em mudar essas políticas de modo a permitir uma comunicação sem restrições em ambos os sentidos devido aos sérios riscos em termos de segurança que daí derivam. Qualquer abordagem para resolver este problema tem de permitir uma comunicação segura em ambos os sentidos sem alterar significativamente as regras de filtragem da firewall. Por outras palavras, o actual nível de segurança fornecido pela firewall não deverá ser reduzido. 3.1.9.3. O problema do NAT Como foi visto anteriormente, o NAT efectua a tradução de endereços IP e números de porto privados em endereços públicos quando o tráfego flui da rede privada para a rede pública. Isto faz com que um número limitado de endereços IP públicos sirvam as necessidades de uma grande corporação resolvendo assim o problema da falta de endereços IPv4. Figura 12 – O problema do NAT Cada terminal na rede privada tem o seu próprio endereço IP privado. O tráfego enviado para um terminal na rede pública será dinamicamente associado a um número de porto específico na rede pública pelo NAT. O NAT mantém uma tabela com a correspondência entre endereços IP e números de porto privados e endereços IP e números de porto públicos. É importante salientar que estas associações apenas podem ser iniciadas pelo tráfego externo. O NAT funciona de maneira idêntica a um PABX. A iniciação de uma chamada no sentido “privado → público” é fácil. Os utilizadores dum PABX podem efectuar uma chamada 21/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP para fora utilizando uma das poucas linhas telefónicas (equivalentes aos endereços IP públicos) que estão disponíveis. A linha que está a ser usada (o número do porto) é seleccionada automaticamente e é invisível para o utilizador. A recepção de chamadas no sentido oposto é, no entanto, mais complicada uma vez que não é possível, a partir da rede pública, definir uma rota tendo em conta os números referentes às extensões da rede interna. Utilizadores que ligam para dentro têm de ser encaminhados para um assistente de modo a serem ligados à extensão correcta. No caso do NAT, não existe um equivalente a esse assistente. Deste modo, chamadas não solicitadas que cheguem não poderão ser suportadas. Figura 13 – NAT impede o fluxo de dados Para complicar ainda mais, as mensagens SIP end-to-end entre clientes, contêm detalhes relacionados com os endereços IP e portos privados que os clientes (User Agents) querem usar para os fluxos de dados. Quando os clientes tentam utilizar esses endereços privados para enviar/receber dados, a ligação falha porque eles não são válidos. Este problema não é apenas característico do SIP. Outros protocolos de sinalização como o H.323 e o MGCP apresentam o mesmo problema. Qualquer abordagem para resolver este problema tem de permitir uma comunicação segura em ambos os sentidos – incluindo a chegada de chamadas não solicitadas – e minimizar a dependência relativamente aos upgrades das NATs ou até à utilização de qualquer dispositivo NAT especifico de um determinado vendedor. 3.1.9.4. Métodos para resolver o problema do NAT • • • • • • As propostas correntes para a resolução do problema do NAT são: Universal Plug and Play (UPnP) Simple Traversal of UDP Through Network Address Translation Devices (STUN) Application Layer Gateway Manual Configuration Tunnel Techniques Automatic Channel Mapping (ACM) 3.1.9.4.1. Universal Plug and Play UPnP é uma tecnologia que está predominantemente direccionada para utilizadores home-office, instalações residenciais, etc… Uma das grandes forças impulsionadoras do UPnP é a Microsoft Corporation. A arquitectura UPnP está projectada tendo em conta um conjunto de problemas gerais – não apenas VoIP – e de forma a permitir a configuração de pequenas redes por parte de 22/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP utilizadores comuns. UpnP permite que aplicações cliente descubram e configurem componentes de rede incluindo NATs e Firewalls, as quais estão equipadas com software UPnP. A principal necessidade em aplicações VoIP é descobrir e usar o endereço IP e porto externos que o NAT selecciona para os fluxos de sinalização e dados. Uma vez conhecida esta informação, o cliente VoIP pode colocar esta informação na sinalização VoIP para estabelecer a chamada. Isto assegura que a chamada é estabelecida usando endereços e portos públicos (e portanto válidos) o que garante conectividade end-to-end. Para alcançar isto, tanto o NAT como os clientes VoIP têm que suportar UPnP. Existem actualmente poucos clientes VoIP UPnP disponíveis. No entanto, será apenas uma questão de tempo até estes dispositivos estarem disponíveis e muitas pequenas companhias (e subscritores residenciais) os considerarem úteis. A principal desvantagem desta aproximação está relacionada com a segurança. Ela não resolve satisfatoriamente o problema relacionado com a firewall. Existe actualmente apenas um pequeno número de vendedores NAT e Firewall que suportam UPnP. Resumindo, este método está provavelmente limitado a pequenas instalações. 3.1.9.4.2. Simple Traversal of UDP Through Network Address Translation Devices (STUN) O protocolo STUN permite que um cliente SIP descubra se está ou não atrás dum NAT e, no caso de estar, qual o tipo de NAT existente. O STUN recebeu muita atenção por parte do IETF, mas esta técnica apenas funciona com alguns tipos de NAT. De facto, o STUN não funciona com o tipo de NAT mais comum entre as redes de corporações – a NAT simétrica. O IETF Midcom Working Group efectuou uma investigação de dispositivos residenciais de NAT e concluiu que algumas NATs não funcionam com o STUN. O STUN não implica que os dispositivos SIP sejam baseados em TCP. Á medida que algumas entidades SIP se tornam mais complexas, a utilização do TCP vai aumentando. O protocolo STUN define um servidor especial (STUN server) no espaço dos endereços públicos para informar o cliente SIP (com STUN activado) no espaço de endereços privados do endereço IP e porto públicos usados para essa sessão em particular. A necessidade de utlização de clientes com o STUN activado e de efectuar o upgrade de clientes antigos para que estes suportem o STUN, torna este método impopular. De facto, muito poucos vendedores disponibilizam suporte em termos de STUN para os seus clientes. Figura 14 - STUN 23/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP O STUN identifica os detalhes do lado público da NAT, inspecionando mensagens STUN de exploração que chegam ao servidor STUN. Os clientes com STUN activado enviam uma mensagem de exploração para o servidor STUN externo para determinar quais os portos de recepção a usar. O servidor STUN examina a mensagem que chega e informa o cliente acerca de qual o endereço IP e portos públicos que são usados pelo NAT. Estes são depois usados nas mensagens de estabelecimento de chamadas. De realçar, que o servidor STUN não afecta os fluxos de dados ou de sinalização. Como mencionado anteriormente, existe um problema com esta técnica. A maior parte das NAT utilizadas são do tipo simétrico. Isto significa que elas criam um mapeamento baseado no endereço IP e porto origem e no endereço IP e porto destino. O endereço do cliente VoIP destino é diferente do endereço do servidor STUN. Isto significa que o NAT irá criar um novo mapeamento usando um porto diferente para o tráfego de saída que por sua vez significa que a informação contida nas mensagens de estabelecimento da chamada está incorrecta e que a tentativa de chamada pode falhar. O mesmo problema ocorre com o tráfego de entrada. Consequentemente, o STUN confia no facto de que, uma vez que o porto de saída é mapeado pelo tráfego do servidor STUN, qualquer tráfego que chegue de qualquer parte da rede com qualquer endereço IP de origem, poderá utilizar o mapeamento na direcção inversa e deste modo alcançar o porto de recepção no cliente. As NATs que funcionam desta maneira são susceptíveis a ataques que têm os portos como alvo, o que levanta preocupações em termos de segurança. Este método não resolve o problema relacionado com as firewalls uma vez que introduz riscos adicionais em termos de segurança que são incorportáveis para os gestores de comunicações. O IETF propôs um mecanismo adicional – TURN – que tem como objectivo resolver o problema relacionado com a passagem de dados no caso de termos NAT simérica. Figura 15 - TURN O TURN depende dum servidor que é inserido no percurso dos dados e da sinalização. Este servidor TURN está localizado no DMZ do cliente ou na rede do provedor de serviços. O cliente SIP com TURN activado envia um pacote de exploração para o servidor TURN, o qual responde com o endereço IP e porto públicos usados pelo NAT os quais deverão ser usados nesta sessão. Esta informação é usada nas mensagens SIP de estabelecimento de chamada e nos subsequentes streams de dados. 24/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP A vantagem desta alternativa é que não existe alteração do endereço IP destino visto pelo NAT e deste modo a NAT simétrica pode ser utilizada. O TURN foi recentemente extendido de forma a tentar resolver alguns problemas sérios de segurança. Muitos provedores de serviço esperam ser capazes de manipular informação relacionada com QoS e fornecer segurança suplementar no ponto de entrada para a rede. O TURN não suporta estes requisitos porque os detalhes da sessão SIP não são revelados ao servidor TURN através do protocolo TURN. Sendo assim a aceitação pela comunidade de provedores de serviços não é certa nesta fase. Ambos os métodos acrescentam uma complexidade significativa à instalação CPE. O TURN assim como o STUN, requer o upgrade dos clientes SIP. Existe uma relutância considerável por parte dos vendedores clientes em levar a cabo este trabalho, tornando o STUN e o TURN em soluções não ideais. 3.1.9.4.3. Application Layer Gateway Esta técnica consiste na instalação de uma nova e melhorada Firewall/NAT – com o nome de Application Layer Gateway – que entende as mensagens de sinalização e a sua relação com os fluxos de dados resultantes. Figura 16 – Application Layer Gateway O ALG processa os streams de sinalização e dados modificando a sinalização de modo a revelar os endereços IP e portos públicos que estão a ser usados pelo tráfego de dados e de sinalização. Como sugerido, esta técnica requer a substituição da NAT/Firewall existente por um ALG. Alternativamente, alguns vendedores fornecem upgrades de software para as suas NAT/Firewall para permitir que estas suportem a funcionalidade ALG. As ALGs requerem idênticos, se não mais avançados, conhecimentos quer em termos de configuração, quer em termos de gestão de NAT e Firewall. Isto significa que upgrades ou novas instalações não são fáceis de realizar. Estes problemas significam que o desenvolvimento do ALG será provavelmente lento e restricto a grandes redes de corporações detentoras dum significativo staff de suporte. 25/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 3.1.9.4.4. Manual Configuration Neste método, o cliente é configurado manualmente e é feita referência aos endereços IP e portos públicos que a NAT irá usar para sinalização e dados. Também a NAT é configurada manualmente com mapeamento estático para cada cliente. Este método requer que o cliente tenha um endereço IP e portos fixos para receber dados e sinalização. Figura 17 – Manual Configuration Devido ao processo de configuração ser manual, baseado em certos conhecimentos prévios e devido ao facto de termos uma configuração que é fixa, este método apenas é apropriado para redes muito pequenas e quando existe uma boa dose de experiência em termos de configuração e gestão de NAT/Firewall. manual. É muito provável que o UPnP, quando disponível, venha a substituir este método 3.1.9.4.5. Tunnel Techniques Este método permite obter resolver o problema relacionado com Firewall/NAT com a criação de túneis para dados e sinalização através das instalações Firewall/NAT existentes para um servidor no espaço dos endereços públicos. Este método requer um novo servidor dentro da rede privada e outro na rede pública. Estes dispositivos criam um túnel entre eles através do qual será transportado todo o tráfego SIP através de uma firewall reconfigurada. O servidor externo modifica a sinalização para revelar o seu porto de saída permitindo assim ao sistema fazer e receber chamadas. Geralmente o túnel criado através da infra-estrutura existente não é encriptado. 26/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Figura 18 - Tunneling Apesar das mudanças em termos de politicas de segurança devido a este método serem reduzidas, ele acaba por criar riscos adicionais. O próprio servidor externo é um ponto de vulnerabilidade. No caso de ruptura deste servidor, o invasor poderá fácilmente aceder à rede privada. Este método pode ainda criar um atraso adicional no percurso de dados o qual poderá reduzir a qualidade de voz. 3.1.9.4.6. Automatic Channel Mapping (ACM) O Newport Networks 1460 session border controller equipado com o ACM Application Pack, é especialmente projectado para solucionar os problemas relacionados com o NAT e Firewall sem necessitar de quaisquer mudanças, quer em termos de regras de segurança quer em termos de clientes. 3.2. Tecnologias de Acesso 3.2.1. Dial-up Neste tipo de acesso á Internet o cliente usa um modem ligado a um PC e a linha telefónica para se ligar a um nó de um ISP para estabelecer uma ligação com um outro modem o qual se encontra ligado a Internet. Apesar deste tipo de acesso ter sido usado durante muito tempo, está a ser progressivamente substituído pelo acesso de banda-larga à Internet que provisiona um acesso mais rápido que excede em muito a velocidade deste acesso ( 56Kbps vs <1Mbps). Este tipo de acesso não requer nenhuma infra-estrutura adicional na rede telefónica. Como por todo o mundo estão disponíveis pontos de acesso telefónico o acesso Dial-up é especialmente útil para viajantes. Nas zonas mais rurais, é o único acesso disponível devido á baixa população e procura, o que torna desta forma inviável a implementação de um acesso de banda-larga. Estamos perante um acesso lento em que são necessários tempos para estabelecer a ligação e todas as politicas necessárias antes que uma transferência de dados possa ocorrer. De igual forma, a velocidade de transmissão é reduzida, teoricamente de 56Kbps (usando o 27/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP protocolo V.92), embora na maioria dos casos apenas seja possível no máximo 53Kbps devido ao overhead e a regulamentação FCC. Estas velocidades são actualmente consideradas as máximas possíveis. Na maior parte dos casos são inferiores (33 a 43 Kbps). Factores como o ruído na linha telefónica assim como a qualidade do próprio modem determinam em grande parte a velocidades de ligação. As ligações deste tipo têm habitualmente uma latência que pode chegar aos 200ms ou até mais, o que torna as torna incapazes de suportar aplicações real-time (vídeo-conferência). Algumas das aplicações on-line não são de todo compatíveis com este acesso. O modo conhecido como “accelerated dial-up” não é mais que uma táctica para optimizar o acesso a Internet através do uso do novo protocolo de ligação V.92 que usa um processo de log-on mais curto. Depois de estabelecida a ligação o provedor do serviço de Internet irá selectivamente comprimir, filtrar e fazer cache dos dados enviados para os utilizadores aumentando desta forma a velocidade de acesso aos conteúdos mais requisitados. 3.2.2. RDIS (ISDN) A RDIS (Rede Digital com Integração de Serviços), em inglês ISDN (Integrated Service Digital Network), refere-se a um tipo de rede telefónica de comutação de circuitos desenhada para permitir a transmissão digital de voz e dados sobre as linhas telefónicas de cobre comuns. Isto permite obter uma melhor qualidade e maior velocidade do que era conseguido com as linhas analógicas. Na frase “Rede Digital com Integração de Serviços”: • Rede refere-se ao facto do RDIS não ser apenas uma simples solução ponto a ponto como uma linha alugada. A rede RDIS vai desde a central telefónica até ao utilizador remoto incluindo todo o equipamento de telecomunicações e de comutação intermédio. • Digital refere-se á transmissão digital pura em oposição a transmissão analógica do serviço telefónico usual. Se usarmos um modem para aceder à Internet o modem do ISP tem de converter o conteúdo digital para sinais analógicos antes de os enviar. No nosso modem esses sinais são convertidos novamente para conteúdos digitais. No RDIS não existe essa conversão resultando numa transmissão com uma qualidade quase transparente. Não existe por isso nenhuma estática ou ruído resultantes da transmissão analógica que diminuem a taxa de transmissão. • Integração de serviços refere-se á capacidade do RDIS oferecer duas conexões simultâneas de uma qualquer combinação de dados, voz e fax sobre a mesma linha. Múltiplos dispositivos podem estar ligados à mesma linha e serem usados como necessário. Isto significa que uma linha RDIS é capaz de satisfazer todas as necessidades de comunicações dos utilizadores sem que para tal seja necessário adquirir múltiplas linhas analógicas e possuir ainda uma maior largura de banda. No sistema RDIS existem dois tipos de canais, B(“Bearer”) e D(“Delta”). Os canais do tipo B são usados para a transmissão de dados (o que inclui voz), os canais do tipo D são usados para sinalização e controlo(mas também podem ser usados para a transmissão de dados em casos especiais). • Existem dois tipos de acesso RDIS: Basic rate interface (BRI) ou Basic rate access (BRA): Consiste em dois canais do tipo B, cada um com uma largura de banda de 64Kbps e um canal do tipo D com uma 28/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP • largura de banda de 16Kbps. Juntos, estes canais são designados como 2B+D permitido uma largura de banda máxima de 144Kbps. Primary rate interface (PRI) ou Primary rate access (PRA): Consiste num número maior de canais do tipo B e um canal do tipo D agora com uma largura de banda de 64Kbps. O número de canais do tipo B varia de acordo com a localização. Na América e no Japão são 23B+1D tendo como tal agregada uma largura de banda total de 1.544 Mbps (T1). Na Europa e na Austrália são 30B+1D com uma largura de banda total agregada de 2.048Mbps (E1). Uma linha RDIS pode ser usada numa configuração em que os canais do tipo B são agregados para permitir uma largura de banda de 128Kbps. No entanto, isto impede que a linha seja usada para chamadas de voz enquanto a ligação à Internet se encontrar activa. 3.2.3. BroadBand O acesso à Internet de banda larga mais vulgarmente denominado de Internet de bandalarga é uma ligação a Internet com uma elevada taxa de transmissão. DSL e cabo são dois tipos de acesso largamente difundidos no mercado que permitem uma largura de banda igual ou superior a 256 kbps, isto é igual ou superior a 4 vezes a velocidade permitida por um modem ligado a uma linha telefónica digital. Este tipo de acesso varias vezes superior aos acessos RDIS e Dial-up é mais económico que o acesso RDIS e muitas vezes tem um custo semelhante ao acesso Dial-up, embora tanto os custos como a performance variem de acordo com o pais. A definição do FCC de banda-larga é de pelo menos 200Kbps numa direcção e bandalarga avançada de pelo menos 200Kbps em ambas as direcções. O OECD definiu a banda-larga com 256Kbps pelo menos numa direcção. Esta taxa de transferência é a mais comum taxa base no mercado da banda-larga a nível mundial. Na prática a largura de banda anunciada nem sempre está disponível, os ISPs frequentemente agregam mais utilizadores do que aqueles teoricamente suportados pela sua ligação backbone tendo como pressuposto de que frequentemente a maior parte dos utilizadores não estará a usar a totalidade da largura de banda da sua ligação. Esta estratégia de agregamento de fluxos funciona quase sempre. Os acessos de banda-larga mais comuns são a DSL e cabo. 3.2.3.1. DSL (ADSL) Digital Subscriber Line ou DSL é uma família de tecnologias que permite a transmissão de dados digitais através da ligação de cobre da rede telefónica local. Tipicamente a velocidade de download desta ligação vai desde 128Kbps ate 24000Kbps dependendo da tecnologia e do nível de serviço implementado. A origem da tecnologia remonta a 1988 quando os engenheiros da então bellcore criaram uma maneira de transmitir sinais digitais sobre o espectro de frequência livre no par de linhas de cobre entre a central telefónica e os clientes. Esta implementação permitiria que uma linha telefónica comum disponibilizasse comunicações digitais sem que tal interferisse com os serviços de voz. No entanto, as companhias telefónicas não estavam assim tão entusiastas em relação à DSL uma vez que não era rentável a instalação de uma segunda linha telefónica para os clientes que quisessem uma ligação à Internet e serviços de voz em simultâneo. Ao mesmo tempo, ao introduzir o acesso de banda-larga tal iria reduzir em muito o mercado RDIS existente. 29/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Este ponto de vista foi alterado quando as companhias de televisão por cabo introduziram também o acesso de banda-larga a Internet. A implementação da tecnologia DSL que até então tinha sido atrasada, foi apressada pelas companhias telefónicas na tentativa de conquistarem parte do mercado do acesso de banda-larga à Internet oferecido pelos operadores de televisão por cabo. DSL é o principal concorrente do cabo no que respeita ao acesso de banda-larga a Internet dos consumidores domésticos na Europa e norte da América. O standard ADSL permite a velocidade de 8 Mbps num raio de 2km usando o comum par de linhas de cobre. O último standard ADSL2+ permite até 24Mbps dependendo da distância do DSLAM. No entanto, alguns clientes estão para além do raio de 2km o que reduz significativamente a largura de banda disponível. A central local telefónica foi inicialmente concebida para transportar os canais de voz e respectiva sinalização uma vez que o conceito de comunicações de dados como hoje o conhecemos não existia na altura. Por razões económicas o sinal de voz ocupa as frequências entre 300 e 3400Hz que é considerado o intervalo de frequências requerido para que a voz humana seja claramente inteligível. Na central telefónica local, a voz é digitalizada num stream de 64kbps na forma de um sinal de 8 bits por amostra com uma frequência de amostragem de 8000Hz. As ligações ás centrais locais da maioria dos utilizadores são capazes de suportar frequências muito superiores a 3400Hz . Dependendo da distância a da qualidade da ligação, o limite superior anda na ordem das dezenas de megahertz. O DSL tira partido desta largura de banda disponível da ligação, criando canais com uma largura de banda de 4312.5Hz, começando entre as frequências de 10 e 100kHz, dependendo da forma como o sistema se encontra configurado. A alocação dos canais continua até altas-frequências até que os novos canais deixem de ser utilizáveis. Cada um dos canais é testado para verificar se é fiável, da mesma forma que um modem analógico testava a sua ligação. Quantos mais canais utilizáveis existirem, maior será a largura de banda disponível, razão pela qual a distância e qualidade da ligação são um factor importante. O grupo de canais utilizáveis é dividido em dois grupos para downstream e upstream baseado numa relação pré configurada. Uma vez que estes grupos estejam formados os canais são juntos num par de circuitos virtuais um em cada direcção. Tal como os modems analógicos, os tansreceptores DSL monitorizam constantemente a qualidade de cada canal e irão adicionar ou remover canais do serviço dependendo se são utilizáveis ou não. Figura 19 – Tecnologia DSL 30/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Exemplos de tecnologias DSL • • • • • SDSL – Velocidade de upstream igual a velocidade de downstream. Velocidades desde 72 até 2320Kbps com um alcance máximo de 3km. ADSL – Velocidade de upstream inferior a velocidade de downstream. Velocidade máxima de downstream de 8Mbps e upstream de 1024Kbps ADSL2+ - Versão melhorada da ADSL com uma velocidade de downstream de 12Mbps num raio de 2.5km e de 24Mbps num raio de 1.5km. VDSL – Versão que permite os limites teóricos de 54Mbps para downstream e 12Mbps para upstream. PDSL – Versão que permite o acesso a Internet através das linhas de alta voltagem. 3.2.3.2. Cabo Um cable modem é um tipo único de modem desenhado para modular sinais de dados sobre a infra-estrutura da televisão digital. Estes modems são primariamente usados para permitir o acesso à Internet usando para tal a largura de banda livre na rede da televisão digital. A largura de banda para downstream vai tipicamente dos 3Mbps até aos 15Mbps ou mais. Para o upstream vai desde os 384Kbps até aos 2Mbps ou mais. Em comparação com o serviço DSL este serviço é mais independente da distância a que nos encontramos da central local. Existem no entanto, duas desvantagens tradicionais deste serviço: • • O cabo é um meio partilhado ao contrario do DSL em que o par de fios de cobre que liga o utilizador a central local é apenas usado por um utilizador (embora na central local os pacotes dos utilizadores ligados a essa central sejam introduzidos em células ATM, sendo esse um meio partilhado). Neste acesso, o cabo coaxial é partilhado normalmente por todos os utilizadores que se encontrem na vizinhança. Como tal a qualidade de serviço e velocidade de ligação podem variar dependendo do número que pessoas que estejam a usar o serviço ao mesmo tempo, embora na maioria das áreas isto seja eliminado devido a redundância e a redes de fibras ópticas. Como o cabo tende a cobrir uma área superior á da DSL, têm que ser aumentados os cuidados com a qualidade de serviço fornecida de forma a assegurar uma boa performance da rede. Um outro ponto é que muitos fornecedores deste serviço de Internet normalmente fazem-no agregado ao serviço de televisão por cabo aumentado por isso os custos. Para a modulação e transmissão de dados pelo cabo coaxial o modem usa a norma DOCSIS (Data Over Cable Service Interface Specification). O CMTS (cable modem termination system) é um equipamento do lado do provedor do serviço de Internet por cabo que está na outra extremidade do cabo e que é responsável por fazer o interface com a rede de dados. Para transmitir dados (upload) são usadas as frequências desde 5MHz até 65MHz com uma largura de banda de 2MHz. A modulação do sinal pode ser QPSK ou 16-QAM, dando uma taxa de transmissão no primeiro caso de 3Mbps. A modulação 16-QAM, apesar de fornecer uma taxa de transferência de dados superior é também mais frágil e mais sensível ao ruído. A transferência de dados é feita em bursts de dados em timeslots (TDM) definidos pelo CMTS. Para receber dados e os canais de TV são usadas as frequências desde 65MHz a 850MHz, divididas em canais de 8MHz. Estes canais são usados para transmitir o sinal de TV, sendo que os canais não usados para TV são os que vão ser usados como canais de 31/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP downstream. A modulação do sinal é 64-QAM ou 256-QAM, tendo uma taxa de recepção de dados de 41.4 Mbps no primeiro caso ou de 55.2 Mbps no segundo caso. A modulação 256QAM apesar de mais rápida é mais sensível ao ruído. 32/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP Figura 20 – Tecnologia Cabo 33/115 Serviços e Redes Residenciais Interfaces e Infra-estrutura de Suporte para Operadores e ISP 3.2.3.3. Wireless O wireless é um método de comunicação que usa radiofrequências de baixa potência para transmitir dados entre sistemas. Este termo refere-se a comunicação sem cabos ou fios, usando para tal radiofrequências ou infravermelhos. Algumas das aplicações típicas deste tipo de comunicação incluem as comunicações definidas pela IrDA e as redes sem fios de computadores. Desta forma é dado aos utilizadores mobilidade dentro do raio de cobertura permitido pela rede. Uma WLAN ou rede de acesso local sem fios é composta por vários elementos: • Figura 21- Arquitectura WLAN • • • • Estações: Todos os equipamentos capazes de se ligar a rede sem fios. Estas podem ser clientes wireless ou pontos de acesso. • Clientes Wireless: Estes podem ser dispositivos móveis como computadores portáteis, PDA’s, telefones IP ou então dispositivos fixos como os tradicionais PC’s ou Workstations equipados com uma interface wireless. • Pontos de Acesso (AP’s): São as estações base de uma rede wireless. Eles transmitem e recebem ondas de radiofrequência para comunicarem com os clientes wireless permitidos. • Basic Service Set (BSS): É o conjunto de todas as estações que podem comunicar entre si. Existem dois tipos de BSS: independent BSS e infrastructure BSS. Independent BSS: São redes ad-hoc que não contêm pontos de acesso. Uma vez que não usam pontos de acesso este tipo de redes não se pode ligar com outras redes BSS. Infrastructure BSS: Este tipo permite que as estações possam comunicar com estações que não estejam no mesmo BSS, através dos pontos de acesso. Extended Service Set (ESS): É um conjunto de BSS ligadas entre si. Um ponto de acesso é um ESS e estão ligados por um sistema de distribuição. Cada ESS tem um ID chamado de SSID que é um conjunto de caracteres com um tamanho máximo de 32bytes. Sistema de distribuição: Um sistema de distribuição liga os pontos de acesso num ESS. Usualmente é uma rede wired LAN mas pode ser também uma rede Wireless LAN. 34/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Tipos de WLAN • Ponto a ponto ou ad-hoc – Este tipo de redes permite que os dispositivos wireless comuniquem directamente entre si. Dispositivos wireless que se encontrem dentro do raio de cobertura um do outro podem-se detectar e comunicar entre si sem ser necessário recorrer a pontos de acesso centrais. Este é um método tipicamente usado por dois PCs para que se possam ligar e formar uma rede. • Ponto de acesso ou Infrastructure Wireless LAN – O tipo mais comum de WLAN quando um cliente wireless se liga a um ponto de acesso para se ligar a uma rede. O ponto de acesso é muitas vezes um hub ou um router que possui uma antena para transmitir e receber as ondas de radiofrequência e transmitir os dados para uma rede ethernet comum. Nesta configuração, as estações só podem comunicar com o ponto de acesso e caso pretendam comunicar entre si têm de o usar como intermediário da sua comunicação. Figura 22- Peer to Peer or Ad-Hoc LAN Figura 23- Access Point Infrastructure Sendo uma rede sem fios e possuindo um raio de cobertura ainda considerável são colocadas varias questões relacionadas com segurança e privacidade das comunicações. Estes problemas são contornados através do uso de algoritmos de encriptação como é o caso do WEP, WPA e WPA2. Nos dois últimos casos, temos ainda um protocolo adicional EAP que possui varias técnicas de autenticação. De forma a impedir o acesso de elementos não autorizados, é ainda aconselhado o uso de um SSID diferente dos que vêm por defeito e a filtragem dos endereços MAC aos quais é permitido o acesso á rede. 3.2.3.3.1. Wi - Fi Wi-Fi era uma marca originalmente licenciada pela Wi-Fi Alliance que descrevia uma tecnologia de WLAN baseada nas especificações do standard IEEE 802.11. Este termo tornouse tão genérico que a marca já não se encontra protegida. Inicialmente era destinado ao uso de dispositivos móveis de computação, como os PCs portáteis, em redes locais de acesso (LANs), sendo usado actualmente para mais aplicações como acesso a Internet, jogos, e para conectividade básica de aparelhos domésticos como televisões e leitores de DVD. Uma pessoa com um dispositivo Wi-Fi como um PC, um telefone ou um PDA pode ligar-se a Internet se estiver na proximidade de um ponto de acesso. A região 35/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP coberta por um ou mais pontos de acesso é denominada de hotspot. Os hotspots podem ir desde uma divisão até vários metros quadrados de hotspots consecutivos. O Wi-Fi também permite conectividade no modo ad-hoc sendo este método muito útil para jogos e aparelhos domésticos. 3.2.3.3.2. WiMax O WiMAX é definido como Worldwide Interoperability for Microwave Access. É baseado no standard IEEE 802.16 e é definido como uma tecnologia que permite o fornecimento de serviços de Internet de banda-larga a utilizadores que se encontrem em locais remotos ou que pela sua localização não seja possível, viável ou rentável a instalação de acessos wired, sendo visto este serviço como uma alternativa ao xDSL e cabo. Esta tecnologia tem um MAC diferente do Wi-Fi. No Wi-FI os terminais competem entre si pela atenção do ponto de acesso, isto faz com que os terminais mais distantes sejam constantemente interrompidos por terminais mais próximos ou menos sensíveis reduzindo desta forma a taxa de transferência destes. Já no WiMAX so têm de competir uma vez para o acesso a rede, depois o MAC atribuilhes slots temporais para este usar. Tem teoricamente, um raio de cobertura de cerca de 50km. No entanto, no mundo real fica-se pelos 5 a 8 km. Em termos de taxa de transferência, o valor máximo é cerca de 70Mbps. Mais uma vez, testes no mundo real demonstram uma taxa máxima entre os 500kbps e 2Mbps dependendo das condições do local. 3.2.3.3.3. FWA É um acesso fixo via rádio a uma rede de telecomunicações que permite chegar aos clientes sem ter de instalar infra-estrutura de rede fixa. Foi desenvolvida para permitir/facilitar o acesso a utilizadores que dificilmente podem ser alcançados pelo tradicional par de cobre. Os principais objectivo da tecnologia FWA são: • acesso sem fios na rede local; • suporte de serviços de diversos débitos, desde a telefonia à distribuição de TV; • funcionalidades idênticas ao acesso por par simétrico ou cabo; • novas instalações mais simples e baratas do que as baseadas em cobre; • possibilidade de oferta imediata de serviços por parte de novos operadores. Os sistemas actuais e planeados são: • P-MP: Point to Multipoint : diversas faixas de frequência, sujeitas a licenciamento • DECT: Digital Enhanced Cordless Telecommunication perfil para acesso na rede local numa faixa de frequência sem licenciamento prevista extensão para faixas de frequência de P-MP, sujeitas a licenciamento • UMTS: Universal Mobile Telecommunication System definido perfil para acesso na rede local Existem três diferentes cenários de aplicação (figura 24) desta tecnologia: • FWA-1: ligação directa do assinante ao nó de rede local 36/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP • • FWA-2: ligação do assinante até ao ponto de distribuição de área / edifício FWA-3: ligação do ponto de distribuição de área / edifício até ao nó de rede local Figura 24 – Cenários de aplicação O modelo de referência desta tecnologia pode ser encontrado na figura seguinte. Figura 25 – Modelo de referência 3.2.3.3.4. BWA É um conjunto de tecnologias que visa o acesso wireless a redes de dados com uma elevada taxa de débito. Segundo o standard 802.16 banda-larga significa ter uma largura de banda instantânea de pelo menos 1MHz e uma taxa de transferência de pelo menos 1.5Mbps. Do ponto de vista da conectividade uma rede de banda-larga wireless é equivalente ao xDSL ou cabo. É uma tecnologia de acesso com um uso crescente e tem um raio de cobertura estimado de 50km. Tecnologias como LMDS e MMDS são as mais difundidas mundialmente. 37/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 3.2.3.3.5. Tmax A tecnologia Tmax ® é uma tecnologia wireless, totalmente digital, constituindo a primeira plataforma de rádio BFWA a nível mundial com capacidade para oferecer serviços de TV Digital, Telefone e Dados. "O Tmax ® oferece voz sobre IP, banda larga simétrica e de baixa latência e vídeoconferência em televisão" (HTTP://tek.sapo.pt/4O0/595829.html). A implementação da tecnologia Tmax ® exige a construção de uma nova rede de telecomunicações edifício-a-edifício que a AR Telecom está a desenvolver e que irá crescer de forma faseada. 3.2.3.3.6. xMax Trata-se de uma tecnologia ainda em desenvolvimento que teoricamente permite uma taxa de débito elevada (pelo menos 10Mbps) com uma potência reduzida (50W) num raio de 20km. 3.3. Ofertas Serviços Residenciais PT Casa Segura PT CasaSegura é um serviço que permite aceder a eventos ocorridos no seu sistema de alarme, a partir de qualquer computador com acesso à Internet. Serviço de Segurança • • • Algumas das funcinalidades principais deste serviço são: Receber SMS e/ou Emails caso ocorra um evento específico (como uma falha de energia ou desactivação do sistema); Visualizar relatórios de eventos; Configurar outras funções do sistema de alarme. Através do portal, é possível configurar a lista de pessoas a quem se pretende que seja enviado um SMS e/ou Email em caso de necessidade. Os principais requisitos deste sistema são: uma linha telefónica analógica da PT Comunicações e um “Kit Telesegurança PowerMax”. Este “Kit Telesegurança PowerMax” é uma consola de segurança com sirene incorporada e dois detectores sem fios (detector de movimento e detector de fumos) que fornece ao cliente um conjunto de funcionalidades. Serviço de Vigilância • Este serviço permite: Visualizar, através de um acesso seguro, imagens em tempo real obtidas a partir da casa do cliente. 38/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP • • Gravar pequenos vídeos. Em cooperação com o serviço de Segurança existe a possibilidade de configurar o sistema de forma a que a gravação seja iniciada quando ocorre um alarme. Definir utilizadores com permissões de acesso a diferentes câmaras. Através do portal, é possivel configurar a lista de pessoas a quem se pretende dar acesso a cada uma das câmaras configuradas no sistema. Os principais requisitos deste sistema são: uma linha telefónica analógica da PT Comunicações, um “Kit de TeleVigilância PTComunicações” e uma ligação permanente à Internet via ADSL. Nortel NetWorks Os serviços residenciais fornecidos resultam de combinação de caracteristicas da voz tradicional fornecida sobre IP com um conjunto de serviços multimédia. Serviços Fornecidos: • Personal call management services • Simultaneous/sequential ringing of multiple devices • Call Screening based on Time of Day and Caller ID • Incoming Call Options including answer, ignore, and redirect • One-click calling from network-based address books • Voice mail graphical interface • Picture caller ID • Multidados communications services • Instant desktop video calling • Integrated instant messaging • Incoming/outgoing call log • Web-push and co-browse • File sharing/conferencing • Top traditional voice services, including • Call Forward (answer, no answer, busy) • Caller ID Name and Number • Call Waiting ID Name and Number • Conference Calling • Call Transfer Ar Telecom Responsável pelo desenvolvimento da primeira tecnologia mundial de redes fixas digitais sem fios – Tmax® . Oferece serviços de telefone, TV e Internet completamente baseados em IP. Pacote TEV.NET.TEL : Solução integrada de Televisão, Internet e Telefone assente na rede digital Tmax ® da AR Telecom. 39/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Triple play (Sonaecom) A Sonaecom pretende disponibilizar triple play a 45% da população até ao fim do presente ano. No arranque a plataforma vai disponibilizar quatro serviços. Além da TV, Internet e telefonia fixa estará disponível o Clube de Vídeo, o qual permitirá alugar filmes por períodos de tempo variáveis, comodamente a partir de casa. Numa fase posterior, estão previstos serviços como o Live Tv Recording (possibilidade do utilizador escolher a que horas quer ver determinado programa), Time Shift (permite fazer uma pausa na emissão televisiva), Real Time Video Calls (basta ter uma web cam associada) ou Gamming on Demand. Triple play (NEC) A NEC Portugal acaba de lançar no mercado nacional a solução Triple Play que se caracteriza pela facilidade de implementação e utilização, assim como pela sua capacidade de evolução futura com a integração de outras tecnologias na mesma plataforma. Esta solução vem permitir aos Operadores alargar a sua oferta de serviços de banda larga, rentabilizando a infra-estrutura instalada através da exploração de novos modelos de negócios e da criação de novas fontes de receita. Transmissão digital de TV, near-video-on-demand (NoVD), vídeo-on-demand (VoD), serviços Internet e Intranet, transmissão de dados empresariais, virtual LAN, VPN, comunicação de voz sobre linha digital (VoDSL) e comunicação de voz sobre linha analógica, são alguns dos serviços que os Operadores de rede fixa vão poder oferecer aos seus clientes através da solução NEC Triple Play, diferenciando-se da oferta actualmente disponível nas redes móveis e permitindo assim uma maior fidelização dos seus clientes. Kanguru (Optimus) O Kanguru é um serviço inovador de Banda Larga Portátil. As principais características deste novo serviço que o diferenciam das ofertas até então existentes são o acesso simples em qualquer lugar, o custo competitivo e controlado e a substituição da ligação fixa à Internet por uma ligação banda larga sem fios. O Kanguru destina-se a todos os utilizadores de computadores portáteis e permite o acesso em Banda Larga à Internet em todas as zonas de cobertura da rede 3G da Optimus. O Kanguru constitui uma alternativa ao acesso sem fios através de Wi-Fi público, o qual apenas está disponível num conjunto limitado de locais e obriga o utilizador a realizar configurações específicas no seu PC. O novo serviço Kanguru Xpress é cerca de 5x mais rápido, oferecendo velocidades de download até 1.8 Mbps. Para tal apenas é necessário estar numa zona de cobertura da rede 3G ou 3.5G da Optimus. Vodafone Mobile Connect Card O Vodafone Mobile Connect Card utiliza a rede móvel da 3ª Geração, o que permite velocidades de banda larga (até 384 Kbps). 40/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Agora com a nova placa 3G Banda Larga é possível aceder à Internet navegando em banda larga com velocidades até 1,8Mbps, que excedem em cerca de 4/5 vezes a velocidade actualmente disponibilizada com a versão 3G/GPRS. Acesso Giga (TMN) Á semelhança das ofertas anteriores, a banda larga TMN permite navegar na Internet, usufruindo de total mobilidade, através de um pc portátil e de uma placa de dados, com velocidades até 1.8Mbps. 41/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 42/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4. TRABALHO DESENVOLVIDO Com todo o trabalho de pesquisa realizado ao longo do 1ºsemestre, adquirimos uma base de conhecimentos importante para a realização das actividades necessárias no âmbito deste projecto. A primeira tarefa foi configurar o nosso PC de trabalho. Após várias tentativas, optamos por instalar o sistema operativo Linux Mandriva 2006. Em termos do projecto propriamente dito, foi-nos proposto um cenário de vídeo vigilância no qual a questão relacionada com a segurança seria o aspecto mais importante a ter em conta. Quando falamos de segurança, referimo-nos ao facto de que apenas os utilizadores autorizados podem aceder ao serviço. Para além disso, cada um desses utilizadores terá apenas acesso aos conteúdos a ele destinados. 4.1. Apresentação do cenário a implementar Após uma análise mais aprofundada, definiu-se o cenário da figura seguinte, onde se podem encontrar os seguintes componentes com as seguintes funcionalidades: Figura 26 - Topologia de rede do cenário Pretendemos implementar um cenário semelhante ao existente numa rede tradicional ADSL ( PPPoE, autenticação da RGw e não do utilizador, Radius para as funções de AAA, …). Numa primeira fase, é feita a verificação do utilizador que pretende aceder ao serviço. Desta forma, é enviado um pedido ao servidor freeRADIUS que concederá ou não acesso à rede dependendo das credenciais introduzidas pela residential gateway. A verificação desses dados é feita consultando a base de dados mySQL. Caso seja concedido o acesso, é criado um túnel PPP. Num cenário deste tipo, as renovações dos endereços IP comuns nas redes de acesso dos ISP, poderão trazer algumas complicações no acesso a terminais com endereço dinâmico (endereço sujeito a alterações). Para resolver este problema, será necessário implementar um servidor Dynamic DNS. Este servidor dinâmico de DNS, que funcionará como um serviço público 43/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP algures na Internet (o qual já existe actualmente), será capaz de manter a correspondência entre o nome do terminal e o próprio terminal mesmo quando o endereço IP do terminal em questão é alterado. Para isso é necessário a presença de uma aplicação cliente nesse mesmo terminal. As imagens são obtidas através da utilização de uma webcam. O utilizador poderá visualizar os seus vídeos (gerados a partir das imagens retiradas com a webcam) estabelecendo uma “transmissão em directo” ou utilizando o modo de “gravação pré programada”. O modo de “transmissão em directo” baseia-se no estabelecimento de uma sessão SIP. Para tal, será necessário configurar um servidor SIP de modo a definir quais os utilizadores que nele se podem registar e quais as câmaras que cada um deles tem permissão para aceder. O modo de “gravação pré programada” consiste na gravação de vídeo dum modo contínuo e na sua disponibilização aos utilizadores através de um portal web. Deste modo, serão periodicamente criados ficheiros de vídeo que estarão idadostamente disponíveis para serem visualizados e descarregados pelo utilizador através do portal web. Também neste caso será necessário algum mecanismo de autenticação para controlar o acesso aos vídeos por parte dos utilizadores de modo a que um determinado utilizador só tenha acesso aos seus próprios vídeos. 44/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.2. FreeRADIUS e base de dados mySQL Para fazer a autenticação dos utilizadores, resolvemos utilizar o servidor freeRADIUS (HTTP://www.freeradius.org), o qual, como o próprio nome deixa transparecer, é um servidor RADIUS open source que possui uma vasta gama de funcionalidades. Este servidor encontra-se entre os 5 servidores RADIUS mais usados actualmente para funções AAA (HTTP://www.freeradius.org). É rápido, flexível, configurável e suporta mais protocolos de autenticação que muitos servidores comerciais. O servidor FreeRADIUS não é apenas um simples servidor RADIUS. Possui módulos de autenticação PAM (HTTP://www.freeradius.org/related/) e Apache (HTTP://www.freeradius.org/related/). Suporta também várias bases de dados, como por exemplo MySQL, PostgreSQL e Oracle, entre outras. O servidor contém ainda uma ferramenta de administração de utilizadores via web baseada em php chamada dialupamin. 4.2.1. Instalação do freeRADIUS Acedemos ao site do freeRADIUS (HTTP://www.freeradius.org) e descarregámos a versão 1.1.0. Após o donwload começamos por instalar o freeRADIUS, fazendo: tar -xvzf freeradius-1.1.0.tar.gz cd freeradius-1.1.0/ ./configure make make install Desta forma, os arquivos foram instalados nos seguintes directórios: • • • • /urs/local/etc -> arquivos de configuração; /usr/local/sbin -> comandos do administrador; /usr/local/share -> arquivos de dicionário de radius e outros arquivos compartilhados; /usr/local/var -> arquivos de pid e logs; 4.2.2. Configuração do freeRADIUS para utilizar a base de dados mySQL • • Para configurarmos o freeRADIUS tivemos que utilizar dois ficheiros de configuração: radiusd.conf (arquivo de configuração principal responsável pelo daemon do RADIUS e onde é feita a inclusão dos demais ficheiros de configuração); clients.conf (responsável pela lista de clientes NAS que desfrutam do serviço RADIUS). O conteúdo destes ficheiros encontra-se no Anexo 9.1. Começámos por verificar se o ficheiro radius.conf possuía a linha: $INCLUDE ${confdir}/sql.conf 45/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP linhas: De seguida, editámos o arquivo /usr/local/etc/raddb/sql.conf e alterámos as seguintes Sql{ driver = "rlm_sql_mysql" # informa ao freeradius qual modulo de banco # de dados usar, neste caso, mysql server = "localhost" # diz ao freeradius em qual # host está o servidor mysql login = "root" # define o nome de utilizador registrado no mysql password = "senhadologinaqui" # senha do utilizador definido no parâmetro "login" radius_db = "radius" # nome do banco de dados que contem # as tabelas } # abaixo deste texto (arquivo truncado aqui) se encontram definições de SQL para # pesquisa de dados, não altere, ao menos # que tenha um propósito # ...... # .... Criamos o banco de dados e as tabelas acedendo ao directório: /usr/local/src/freeradius-1.1.0/src/modules/rlm_sql/drivers/rlm_sql_mysql. Dentro deste directório existe um ficheiro chamado db_mysql.sql que contém todos os comandos para criar as tabelas. Criamos a base de dados radius no mySQL: # mysqladmin -psenharoot create radius E as tabelas: # mysql -psenharoot radius < db_mysql.sql De seguida, editamos o radiusd.conf, para autenticar os dados no mySQL. Procuramos no final do ficheiro a secção “authorise” e adicionamos “sql”: authorise { sql } 46/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Isto fará com que os utilizadores sejam procurados na tabela radcheck, base de dados mySQL do RADIUS. De seguida registamos a contabilidade dos acessos. Fomos até à secção “accounting” e adicionamos “sql”: accounting { sql } Isto faz com que os dados das ligações sejam armazenados na tabela radacct. Introduzimos ainda o controlo de conexão simultânea. Isso impede que as mesmas credenciais (login e password) sejam usadas mais que uma vez. Na secção “session” colocamos “sql”: session { sql } Para finalizarmos o controlo de sessão, editamos o ficheiro sql.conf e descomentamos as linhas que definem as variáveis: simul_count_query simul_verify_query 4.2.3. Colocação dos utilizadores em base de dados mySQL Começamos por nos ligar à base de dados mySQL: mysql -psenharoot radius Para criarmos um utilizador chamado JoeUser tivemos que fazer: mysql> INSERT INTO radcheck (username, attribute, op, value) mysql> VALUES ('JoeUser', 'Password', '==', 'senhasecreta'); Para criarmos um grupo com direito a uma única conexão chamado ‘sessaounica’: mysql> INSERT INTO radgrouPCheck (groupname, attribute, op, value) mysql> VALUES ('sessaounica', 'Simultaneous-Use', ':=', 1); Neste caso, o número de utilizadores em simultâneo é 1 (“'Simultaneous-Use', ': =', 1”). No entanto, este parâmetro pode ser modificado, utilizando o campo “value”. Para inserirmos o utilizador JoeUser nesse grupo fizemos: mysql> INSERT INTO usergroup (username, groupname) VALUES ('JoeUser', mysql> 'sessaounica'); 47/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Poderá, por vezes, dar-se o caso do utilizador ser desligado do RAS ou NAS, sem o RADIUS dar baixa na sessão. O motivo para que tal aconteça pode ser a perda de pacotes no caminho até ao RADIUS. Da próxima vez que o utilizador se tentar ligar, o acesso será negado, uma vez que o servidor RADIUS pensa que se trata de uma sessão simultânea (não permitida neste caso uma vez que definimos anteriormente que o número máximo de sessões simultâneas seria 1). Para resolver este problema, sempre que um utilizador for desligado sem ser dada a baixa da sessão teremos que fazer a actualização manualmente. Uma forma de o fazer é: mysql> DELETE FROM radacct WHERE username = 'JoeUser' AND mysql> acctsessiontime = 0 ORDER BY radacctid DESC LIMIT 1; Quando criamos a base de dados mySQL do RADIUS a partir da DDL fornecida, as tabelas seguintes são criadas: • • radacct - contém informações de contabilidade dos utilizadores; radcheck - contém a lista de atributos que serão usados para autenticar um utilizador específico. O atributo mais necessário para que o utilizador tenha acesso seguro é a "Password”. mysql> SELECT UserName, Attribute, op, Value FROM radcheck WHERE UserName = mysql> 'JoeUser'; UserName | Attribute | op | Value ----------------------------------------------------------------------------------JoeUser | Password | == | senhasecreta JoeUser | NASIPAddress | == | 192.168.0.1 ----------------------------------------------------------------------------------Quando o utilizador JoeUser se tentar autenticar, os parâmetros “Password” e “NASIPAddress” (definidos na tabela radcheck) serão verificados. Só é enviado um AccessAccept se a senha estiver certa e se a pergunta vier do NAS 192.168.0.1. A definição do atributo “NASIPAddress” deve ser feita caso se pretenda limitar a fonte de acesso. Muitos outros parâmetros podem ser adicionados. • radreply - contém uma lista de atributos devolvidos ao utilizador. Estes atributos só serão enviados caso a resposta seja diferente de Access-Reject. mysql> SELECT UserName, Attribute, op, Value FROM radreply WHERE UserName = mysql> 'JoeUser'; UserName | Attribute | op | Value ----------------------------------------------------------------------------------JoeUser | Reply-Message | == | Bem Vindo ! JoeUser | Framed-IP-Address | == | 10.0.0.121 JoeUser | Framed-IP-Netmask | == | 255.255.255.0 ----------------------------------------------------------------------------------- 48/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Com os registros acima, o utilizador JoeUser receberá uma mensagem de boas vindas e o endereço IP 10.0.0.121/24. Caso não se pretenda atribuir um endereço IP específico, os campos “Framed-IP-Address” e “Framed-IP-Netmask” deverão ser omitidos. Nesse caso a atribuição do endereço IP será feita pelo DHCP. Seria muito complicado administrar centenas de utilizadors inserindo os atributos individualmente. Existe a possibilidade de criar grupos e de inserir utilizadors nesses grupos. • usergroup – serve para inserir utilizadors em grupos. É possível adicionar grupos de verificação e de retorno nas tabelas radgrouPCheck e radgroupreply respectivamente. Ao criar um relacionamento entre o grupo e a utilizador nessa tabela, os parâmetros do grupo são usados nas operações com o utilizador. mysql> SELECT UserName, GroupName FROM usergroup; UserName | GroupName -------------------------------------------JoeUser | Directoria User1 | Admin User2 | Dialup User3 | Dialup -------------------------------------------• radgrouPCheck - contém informações dos grupos referenciados em usergroup para verificação de parâmetros. mysql> SELECT GroupName, Attribute, op, Value FROM radgrouPCheck ORDER BY mysql> GroupName; GroupName | Attribute | op | Value ----------------------------------------------------------------------------------Admin | NAS-IP-Address | == | 192.168.0.1 Dialup | NASPortType | == | Async Directoria | NAS-IP-Address | == | 192.168.0.1 ----------------------------------------------------------------------------------Acima, podemos ver que: • quem é do grupo Admin e Directoria só se pode autenticar se a conexão for interdadosda pelo NAS 192.168.0.1. • quem é do grupo Dialup só se pode autenticar se o tipo de porta (NASPortType) for assíncrono. • radgroupreply - contém informações dos grupos referenciados em usergroup para retorno de parâmetros. mysql> SELECT GroupName, Attribute, op, Value FROM radgroupreply ORDER BY mysql> GroupName; GroupName | Attribute | op | Value 49/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP ------------------------------------------------------------------------------------------------------Admin | Reply-Message | == | Bem vindo Chefe! Dialup | Reply-Message | == | Um site de cada vez por favor. Diretoria | Reply-Message | == | Acesso bloqueado as 19:00. ------------------------------------------------------------------------------------------------------• radpostauth - salva informações de respostas enviadas para os utilizadors. Utilizado para obter, por exemplo, um relatório das tentativas de acesso. mysql> SELECT user, pass, reply, date FROM radpostauth WHERE user = 'JoeUser'; user | pas | reply | date ---------------------------------------------------------------------------------------------------------------JoeUser | senhasecreta | Access-Accept | xxxxxxxxxxxxxx JoeUser | senhasecreta | Access-Accept | xxxxxxxxxxxxxx ---------------------------------------------------------------------------------------------------------------Consultando a tabela anterior podemos verificar que o utilizador JoeUser se autenticou com sucesso nas duas tentativas. O campo date é timestamp: ano, mês, dia, hora, minuto e segundo. 4.2.4. Criação do túnel PPP A residential gateway e o router CISCO 7200 estão ligados através dum túnel PPP. Configuração servidor PPP (CISCO 7200) aaa authentication ppp default group radius radius-server host 10.10.1.93 auth-port 1812 acct-port 1813 radius-server key cisco #radius-server authorization permit missing Service-Type #radius-server attribute 8 include-in-access-req interface Virtual-Template1 mtu 1492 ip unnumbered Port-channel1.2 peer default ip address dhcp ppp authentication chap callin vpdn-group 1 accept-dialin protocol pppoe virtual-template 1 interface Port-channel1.10 description Troco ethernet para establecmento do tunel PPPoE encapsulation dot1Q 10 50/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP pppoe enable no cdp enable Configuração da residential gateway /etc/ppp/peers/7200 user "bela" noauth 172.16.100.1:193.136.93.229 noipdefault defaultroute #nodefaultroute usepeerdns lcp-echo-interval 20 lcp-echo-failure 3 persist mtu 1492 lock show-password #+chap plugin rp-pppoe.so eth0 /etc/ppp/chap-secrets "teste" * "cisco" * "bela" * "cisco" * 51/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.3. Dynamic DNS (DDNS) Completada a questão relacionada com o freeRADIUS, começámos então a pensar em como implementar um servidor DDNS. Este servidor será capaz de superar o problema causado pela atribuição dinâmica de endereços IP, mantendo constante a correspondência biunívoca entre o nome atribuído a um terminal e o próprio terminal através do seu endereço IP. Começamos por efectuar uma pesquisa na Internet, com o propósito de ficarmos a conhecer os servidores DDNS existentes que cumprem os nossos requisitos (freeware, funcionamento em linux, segurança). Tivemos problemas para encontrar um programa que servisse para realizar o que pretendíamos. A maior parte funcionava apenas como cliente DDNS e apenas permitia certos servidores pré definidos. Acabamos por encontrar um programa chamado mhDNS (HTTP://www.htoc.com/mhdns), com versões para linux e windows, o qual cumpria todos os requisitos por nós impostos. Contudo, este servidor DDNS apresenta um problema. Na realidade, o servidor mhDNS não funciona como um servidor DDNS habitual. Apenas mantém uma correspondência entre domínios e endereços IP em bases de dados (uma por cada domínio ou utilizador). Com vista a resolvermos este problema resolvemos instalar o Bind (servidor DNS open source) (HTTP://www.isc.org/index.pl?/sw/bind/) o qual, trabalhando em parceria com o mhDNS, seria capaz de contornar o problema anterior. Verificamos que tínhamos 2 hipóteses em termos de implementação: utilizar o Bind na sua versão dynamic dns ou colocar o Bind a funcionar em parceria com o mhDNS acedendo às bases de dados por ele criadas. Optamos por utilizar a 2ªsolução, uma vez que o mhDNS apresenta maiores facilidades em termos de instalação e funcionamento; além do mais apresenta alguma segurança (password encriptada). Verificamos que as alterações nas tabelas do mhDNS só eram detectadas pelo Bind caso este fosse reiniciado. Para solucionarmos esse problema tivemos que alterar o código do mhDNS, adicionando uma linha que faz o refresh do Bind sempre que o endereço IP da base de dados do mhDNS é alterado. Desta forma é possível actualizar o Bind sem ser necessário reinicia-lo. 4.3.1. Instalação e configuração mhDNS Para instalarmos o servidor mhDNS, apenas precisamos de descompactar o ficheiro mhdns-1.5.tar.gz: tar -xzvf mhdns-1.5.tar.gz Uma vez instalado, tivemos de configurar devidamente o servidor. Para tal necessitamos de actuar sobre os ficheiros: mhdns.conf : # U:<path/file to user file> localização users file # L:<path/file to log file> localização log file # P:<port to bind to> porto a utilizar # <N{1-3}>:<nameservers (atleast 2 are required!)> 52/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP nameservers mhnsclient.conf : # U:<username>:<uncrypted password> usarname : password desencriptada # P:<mhdns server>:<port> servidor : porto mhdns.users : # <name>[tab]<crypt'd password>[tab]<domain>[tab]<db file> registo dos utilizadores (username, password encriptada, domínio, database) Para encriptarmos a password utilizamos um executável que vem com o servidor mhDNS: ./mkpasswd Após termos configurado todo o sistema, passamos à fase de teste do servidor mhDNS. Antes de mais, tivemos de definir o nosso PC como servidor mhDNS. Para tal, alteramos o ficheiro /etc/resolv.conf: search av.it.pt nameserver endereço_IP_nosso_PC nameserver ..... nameserver ..... nameserver ..... Para iniciarmos o servidor fizemos: ./mhdns. Como cliente DDNS em linux temos duas hipóteses. Podemos, utilizar: mhnsclient: aplicação cliente mhDNS básica; (./mhnsclient -c localização_ficheiro_mhnsclient.conf) ou mhnsclientd: aplicação daemon cliente mhDNS que escuta permanentemente uma interface e regista as suas mudanças de IP. (./mhnsclient -c localização_ficheiro_mhnsclient.conf -d interface_a_monitorar) Para o caso do utilizador não utilizar linux mas sim windows, teremos de utilizar a aplicação cliente mhDNS: MHDns-1.0.3-win32.zip. 4.3.2. Instalação e configuração BIND Começamos por fazer o download do ficheiro bind-9.3.2.tar. De seguida, executamos as linhas de comando: cd /home/naotenho/Desktop tar xzvf /root/bind-9.3.2.tar cd bind-9.3.2 ./make 53/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP ./make install Devido ao facto do Bind ser muito utilizado, este está inevitavelmente sujeito a falhas. Por isso mesmo, foi criada uma forma de se limitar o acesso a um determinado serviço dentro do servidor que tem o nome de chroot. Este sistema tem o objectivo de criar um mini ambiente contendo apenas o necessário para que seja possível a execução do ficheiro executável, com o propósito de minimizar o risco de acesso não autorizado. Este conceito tem o nome de "JAIL". Para implementarmos este conceito fizemos o seguinte: Criação do utilizador e do grupo groupadd named useradd -g named -d /chroot/named -s /bin/true named passwd -l named Remoção de configuração bind pré existente rm -rf /chroot/named Criação da "JAIL" mkdir -p /chroot/named cd /chroot/named Criação dos sub directórios mkdir dev mkdir etc mkdir logs mkdir -p var/run mkdir - p conf/secondaries Criação dos devices mknod dev/null c 1 3 mknod dev/zero c 1 5 mknod dev/random c 1 8 Copia do arquivo localtime cp /etc/localtime etc Após esta implementação, tivemos de construir os ficheiros de configuração. O ficheiro named.conf é o principal ficheiro de configuração do Bind. O ficheiro named.conf deve estar dentro do directório etc, que por sua vez deverá estar na directoria chroot. Deste modo, criamos o ficheiro no directório /chroot/named/etc/. 54/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Editamos o ficheiro named.conf e escrevemos as seguintes linhas: options { directory "/conf"; pid-file "/var/run/named.pid"; statistics-file "/var/run/named.stats"; dump-file "/var/run/named.db"; }; # hide our "real" version number version "[secured]"; # The root nameservers zone "." { type hint; file "db.rootcache"; }; # localhost - forward zone zone "localhost" { type master; file "db.localhost"; notify no; }; # localhost - inverse zone zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; notify no; }; O arquivo de configuração faz referência a três ficheiros adicionais: • db.rootcache • db.localhost • db.127.0.0 Todos eles necessitam de ser criados em /chroot/named/conf. O ficheiro db.rootcache, refere-se à lista de servidores DNS que compõem a rede "root server", ou seja, que conseguem chegar a qualquer endereço IP. Para o criarmos basta que o PC esteja associado a algum servidor DNS válido na Internet (para tal consultar o ficheiro /etc/resolv.conf). Caso isso se verifique, o arquivo é criado facilmente com o comando: dig @a.root-servers.net . ns > /chroot/named/conf/db.rootcache Os ficheiros db.localhost e db.127.0.0 terão de ser criados manualmente. Para tal temos de escrever em cada um deles os respectivos códigos que se encontram a seguir: ; 55/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP ; db.localhost ; $TTL 86400 @ IN SOA @ root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS @ IN A 127.0.0.1 ; ; db.127.0.0 ; $TTL 86400 @ IN SOA localhost. root.localhost. ( 1 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 1 IN PTR localhost. Estes arquivos só precisam de ser criados uma única vez. Precisamos agora de garantir que as permissões de acesso e que o registo com os donos dos ficheiros estão correctos. O procedimento habitual e mais cómodo, consiste em criar um ficheiro que contém as regras de permissões. Desta forma, evitamos erros e facilitamos a alteração dos dados relativos às permissões. Esse ficheiro tem o nome de named.perms, e pode ser encontrado na directoria /chroot. Os comandos que necessitamos de colocar nesse ficheiro foram: # # named.perms # # Configura os donos e as devidas permissões dentro do diretório named # cd /chroot/named # Por padrão, root é o dono de tudo e apenas ele pode gravar, mas os diretórios # tem execução para todos. Note que algumas plataformas usam como # marcador/separador um ponto entre utilizador/grupo nos parâmetros do chown} 56/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP chown -R root.named . find . -type f -print | xargs chmod u=rw,og=r # regular files find . -type d -print | xargs chmod u=rwx,og=rx # directories # os arquivos named.conf e rndc.conf precisam ter suas chaves protegidas chmod o= etc/*.conf # o diretório secondaries cria arquivos dinamicamente a partir dos # servidores de DNS Master e o daemon named precisa de poderes para gravar ali # afim de criar os arquivos das zonas. touch conf/secondaries/.empty # placeholder find conf/secondaries/ -type f -print | xargs chown named.named find conf/secondaries/ -type f -print | xargs chmod ug=r,o= chown root.named conf/secondaries/ chmod ug=rwx,o= conf/secondaries/ # Garante que a criação do arquivo de PID em var/run seja efetivado chown root.root var/ chmod u=rwx,og=x var/ chown root.named var/run/ chmod ug=rwx,o=rx var/run/ # Permite que o daemon named crie sossegado seus arquivos de log. chown root.named logs/ chmod ug=rwx,o=rx logs/ Após gravarmos o ficheiro, tivemos que o executar utilizando a linha de comando: sh -x /chroot/named.perms Para automatizarmos o processo de inicialização do servidor NAMED, utilizamos o script: # # named.start # # ATENÇÃO - O Path possui o parâmetro -c relacionado # com a raiz da gaiola e não com a raiz do sistema. # # Adicione "-n2" se você tiver múltiplos processadores # # uso: named [-c conffile] [-d debuglevel] [-f|-g] [-n number_of_cpus] # [-p port] [-s] [-t chrootdir] [-u username] cd /chroot/named 57/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP touch named.run chown named.named named.run chmod ug=rw,o=r named.run PATH=/usr/local/sbin:$PATH named \ -t /chroot/named \ -u named \ -c /etc/named.conf Para transformarmos este arquivo em executável fizemos: chmod a+x /chroot/named.start Para iniciarmos o servidor fizemos: sh /chroot/named.start Desta forma configuramos o servidor BIND. Utilizando o comando ps -fCnamed podemos verificar o funcionamento do servidor. Outro comando útil para o teste de funcionamento é o comando dig. Convém não esquecer que é necessário alterar o ficheiro /etc/resolv.conf para utilizar o nosso servidor. Para o NAMED ser iniciado automaticamente após o arranque do PC criamos um ficheiro rc.named cujo código é: #!/bin/sh # # rc.named # export PATH=/usr/local/sbin:$PATH # needed for rndc case "$1" in start) # Start daemons. echo -n "Starting named: " sh /chroot/named.start echo ;; stop) # Stop daemons. echo -n "Shutting down named: " rndc stop echo "done" ;; esac exit 0 58/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP De seguida tornamos o ficheiro executável fazendo: chmod a+x rc.named 4.3.3. Análise do funcionamento do servidor DDNS Antes de começarmos a estudar o funcionamento do servidor DDNS, é importante mostrar o conteúdo do ficheiro “status.h” o qual nos permitirá compreender os códigos numéricos que aparecem nas várias capturas. O conteúdo do ficheiro necessário para a compreensão dos valores numéricos é: #define M_NONE #define M_PASS #define M_NOUSER #define M_SUCCESS #define M_UPDATE #define M_IPADDR #define M_OTHER 0 1 2 4 8 16 32 Os vários números acima indicam qual a situação que ocorreu. São muito úteis principalmente para a interpretação das capturas obtidas. Para analisarmos o funcionamento do servidor DDNS, estudamos 3 situações distintas. Começamos por efectuar o registo do terminal que funciona como residential gateway no servidor DDNS. De seguida, efectuamos a partir do PC que se encontra por detrás da residential gateway, um pedido de resolução do nome hemera.home.mydomain.com o qual corresponde à residential gateway. Esta situação encontra-se retratada nas figuras 27 e 28. Figura 27 - Registo no servidor DDNS Verificamos que o registo foi feito com sucesso, uma vez que obtivemos o código “10” (assinalado na captura pelo quadrado verde) que corresponde a 16 em notação decimal – “#define M_IPADDR 16”. 59/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Figura 28 – Resposta ao pedido de resolução do nome do terminal registado Quanto ao pedido de resolução do nome feito pelo PC por detrás do NAT, verificamos que o nome hemera.home.mydomain.com corresponde de facto ao terminal com endereço 172.16.100.1, ou seja ao terminal que funciona como residential gateway tal como era esperado. A situação seguinte (figura 29) corresponde a uma falha de registo no servidor DDNS. A falha resultou do facto da password enviada no registo não ser válida. Figura 29 – Falha de registo no servidor DDNS devido erro na password Verificamos que o código obtido (assinalado na captura com um quadrado verde) foi agora “01”. De acordo com o ficheiro status.h, isto significa que houve algum problema relacionado com a password (#define M_PASS 1). A última situação retrata a actualização do registo quando ocorre uma mudança do endereço IP do terminal registado no servidor. A figura 30 ilustra essa situação. Figura 30 – Actualização do registo devido à alteração do endereço IP Na captura obtida voltamos a verificar uma mudança do código numérico. Desta vez, o valor é “04” (#define M_SUCCESS 4) o que significa que a actualização do registo devido à alteração do endereço IP foi feita com sucesso. 60/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.4. SIP Express Router (SER) Uma vez resolvida a questão do Dynamic DNS, entramos na fase relacionada com a transmissão multimédia entre terminais. Optamos por utilizar o protocolo SIP para essa comunicação. Como servidor decidimos utilizar o SIP Express Router (SER) da iptel (HTTP://www.iptel.org). Como cliente SIP utilizamos numa primeira fase o kphone (HTTP://sourceforge.net/projects/kphone) para testes entre plataformas com o sistema operativo linux e mais tarde o Eyebeam (HTTP://www.counterpath.com/) da CounterPath para a transmissão de vídeo, uma vez que o kphone não utiliza o SIP neste caso. 4.4.1. Instalação do SER Acedemos ao site da Iptel (HTTP://www.iptel.org) e de entre as várias versões, descarregamos o ficheiro: ser-0.9.6_linux_i386.tar.gz. Consultamos os ficheiros de ajuda à instalação que vinham com o SER e verificamos que seria necessário instalar dois programas: bison e flex. Após a instalação destes ficheiros instalamos o SER utilizando os comandos seguintes: make prefix=/usr/local make prefix=/usr/local modules make prefix=/usr/local install export SIP_DOMAIN="myserver.mydomain.com" # necessário para utilizarmos a ferramenta de monitorização O ficheiro de configuração do SER, ser.cfg (que está em anexo), encontra-se na directoria /etc/ser. Neste ficheiro são carregados todos os módulos que consideramos necessários e é definido o comportamento do servidor para as diversas situações (REGISTER, INVITE, ...). No que diz respeito à informação relacionada com os utilizadores, tentamos inicialmente colocar o SER em associação com o freeRADIUS, mas acabamos por pôr de parte essa solução uma vez que o freeRADIUS apenas funcionaria como um intermediário para o acesso à base de dados mySQL. Dessa forma, estaríamos a complicar todo o procedimento desnecessariamente, uma vez que estaríamos a misturar a informação de acesso do freeRADIUS com a do SER. Isto poderia ainda conduzir a que um utilizador se registasse no SER utilizando as credenciais para autenticação no freeRADIUS. Resolvemos então, colocar toda a informação dos utilizadores numa base de dados mySQL separada do freeRADIUS. Tivemos também que fazer o load dos módulos auth.so e auth_db.so: # Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.so" .... 61/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # Uncomment this if you want to use SQL database # for persistent storage and comment the previous line modparam("usrloc", "db_mode", 2) # -- auth params -# Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameyserver.mydomter) # modparam("auth_db", "password_column", "password") Para permitirmos o registo apenas aos utilizadores presentes na base de dados mySQL, introduzimos no ficheiro de configuração do SER, as seguintes linhas: if (method=="REGISTER") { # Uncomment this if you want to use digest authentication if (!www_authorize("mydomain.com", "subscriber")) { www_challenge("mydomain.com", "0"); break; }; if (!check_to()) { sl_send_reply("401", "Forbidden"); break; }; save("location"); break; }; Para iniciarmos o SER utilizamos o comando: ser Para monitorarmos o sistema, utilizamos o comando: serctl monitor Para verificarmos quais os utilizadores que estão registados utilizamos o comando: serctl alias show Utilizamos o kphone para o teste do registo dos utilizadores no SER e verificamos que tudo estava a funcionar correctamente. 62/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.4.2. Introdução do SIPALG Um dos problemas relacionados com a comunicação SIP está associado com o NAT. O protocolo NAT apenas altera os cabeçalhos IP dos pacotes, não actualizando a informação contida nos pacotes SIP. Deste modo, no caso de termos redes privadas, os endereços privados contidos nos pacotes SIP, ao contrário dos endereços contidos no cabeçalho IP, não são alterados para endereços públicos com a passagem pela gateway e vice-versa. Isto faz com que nestes casos as entidades não sejam capazes de comunicar entre si. Com vista a resolver este problema resolvemos implementar o SIP Application Layer Gateway (SIP ALG). Este módulo é instalado no kernel e actua em cooperação com as iptables. Para instalarmos este módulo, necessitamos em primeiro lugar, de actualizar o kernel existente na residential gateway. A versão mínima requerida é a 2.6.11. No entanto, verificamos após algumas tentativas, que versões superiores à 2.6.13 originam kernel panic, pelo que a versão que acabamos por utilizar foi a 2.6.11.12. Para além da questão relacionada com o kernel, necessitamos ainda de instalar nessa mesma máquina as seguintes aplicações: • Iptables • patch-o-matic Para configurarmos as iptables na residential gateway fizemos o seguinte: #load the modules modprobe ip_conntrack_SIP modprobe ip_nat_SIP lsmod | grep ip_nat_SIP #Set iptables rules to allow UDP packets on port 5060: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp -j ACCEPT # POSTROUTING statements for Many:1 NAT # (Connections originating from the entire home network) iptables -t nat -A POSTROUTING -s "rede_privada" -j SNAT -o "interface_para_rede_publica" --to-source "endereço_publico_gateway" ou iptables -t nat -A POSTROUTING -s "rede_privada" -o ppp0 -j MASQUERADE # Prior to masquerading, the packets are routed via the filter table's FORWARD chain. # Allowed outbound: New, established and related connections # Allowed inbound : Established and related connections iptables -A FORWARD -t filter -o "interface_para_rede_publica" -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -t filter -i "interface_para_rede_publica" -m state --state ESTABLISHED,RELATED -j ACCEPT 63/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP echo 1 > /proc/sys/net/ipv4/ip_forward Após instalarmos com sucesso o SIP ALG, passamos à fase de testes. Começamos por tentar estabelecer uma sessão áudio entre 2 terminais, um na rede pública e outro na rede privada, usando o kphone. No entanto, os problemas relacionados com a configuração da placa de som de um dos PCs, acabaram por condicionar a realização desses testes. Tentamos então encontrar um cliente SIP freeware que suportasse vídeo, funcionasse com o SER e que de preferência tivesse uma versão para linux. Tentamos vários clientes como por exemplo: Ekiga, Yate, Wengophone, SIP Communicator (SIP User Agent em Java), Genico, Damaka, entre outros. O Eyebeam foi a melhor hipótese encontrada apesar de só possuir versão para windows. Optamos então, por instalar o windows XP nos dois terminais para podermos utilizar o cliente SIP Eyebeam. Instalamos uma câmara e todos os drivers necessários e após configurarmos os clientes SIP conseguimos finalmente estabelecer uma sessão multimédia entre dois PCs e verificar com o Ethereal a troca de endereços dos pacotes SIP com a passagem pelo residential gateway. 4.4.3. Permissões para segurança e restrição do acesso às câmaras Para concluirmos a questão relacionada com o estabelecimento de sessões SIP restanos assegurar a segurança do sistema. De momento, nada garante que um utilizador se registe no SER com o seu username e depois de registado utilize um username de outro utilizador, por outras palavras, não existe uma ligação pré estabelecida entre o username de registo no servidor e o username pelo qual o utilizador é conhecido. Outro problema é a ausência de restrições, o que faz com que qualquer utilizador consiga estabelecer uma sessão com qualquer um dos outros utilizadores registados. Se pensarmos em termos de vídeo vigilância isto é incomportável. Para solucionarmos este problema começamos por utilizar o módulo avpops.so do SER, com vista a estabelecermos salas de conferência com entradas restritas a certos utilizadores. No entanto, acabamos por colocar esta solução de parte, uma vez que nada garantia que um utilizador acedesse a uma câmara directamente sem passar pela sala de conferência. Além disso a utilização deste módulo apresentava algumas dificuldades em termos de implementação derivadas sobretudo da falta de documentação. Resolvemos então utilizar um outro módulo chamado permissions.so. A utilização deste módulo tem por base dois ficheiros: • permissions.allow; • permissions.deny. A sessão será permitida quando um par (FROM, Request URI) corresponder a uma entrada do ficheiro permissions.allow. Caso isso não se verifique, o estabelecimento da sessão será negado quando um par (FROM, Request URI) corresponder a uma entrada do ficheiro permissions.deny. Neste caso, será enviada a mensagem "401 NOT ALLOWED!!!" indicando que a ligação não foi estabelecida 64/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP pelo facto de não ser permitida. Caso isso também não se verifique, o estabelecimento da sessão será permitido. A sintaxe de ambos os ficheiros é idêntica e encontra-se a seguir: # SIP Express Router permissions module config file # # Syntax: # from_list [EXCEPT from_list] : req_uri_list [EXCEPT # req_uri_list] # # from_list and req_uri_list are comma separated expressions # Expressions are treated as case insensitive POSIX Extended # Regular Expressions. # Keyword ALL matches any expression. # # Examples: # ALL : "^SIP:361[0-9]*@abc\.com$" EXCEPT "^SIP:361[0# 9]*3@abc\.com$", "^SIP:361[0-9]*4@abc\.com$" # É importante referir que a não existência de um ficheiro de controlo das permissões será tratada como se o ficheiro existisse e estivesse vazio. Deste modo, o controlo de permissões pode ser desactivado, desprovendo o servidor dos ficheiros de controlo de permissões. As alterações que foram necessárias fazer no ficheiro ser.cfg para este utilizar o módulo permissions.so foram: loadmodule "/usr/lib/ser/modules/permissions.so" # Parametros do modulo de permissoes !! modparam("permissions", "default_allow_file", "/etc/ser/permissions.allow") modparam("permissions", "default_deny_file", "/etc/ser/permissions.deny") A imposição destas restrições no estabelecimento das sessões só faz sentido se conseguirmos de alguma forma estabelecer uma correspondência entre o username de registo no SER e o URI escolhido pelo utilizador para se identificar perante os outros utilizadores. Após alguma pesquisa conseguimos estabelecer essa correspondência, garantindo que um utilizador só se conseguirá registar caso o URI por ele escolhido para se identificar coincida com o username utilizado na autenticação no servidor SIP. Caso os dois usernames não correspondam, o servidor responde ao pedido do utilizador com um "401 Forbidden" negandolhe o registo. A solução encontrada assenta na tabela da base de dados mySQL chamada uri, a qual contém toda a informação necessária à verificação do username e URI utilizados pelo utilizador. Relativamente ao ficheiro ser.cfg a única alteração a registar foi a introdução de uma instrução para fazer o load do módulo respectivo: 65/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP loadmodule "/usr/lib/ser/modules/uri_db.so" if (method=="REGISTER") { # Uncomment this if you want to use digest authentication if (!www_authorize("mydomain.com", "subscriber")) { www_challenge("mydomain.com", "0"); break; }; if (!check_to()) { sl_send_reply("401", "Forbidden"); break; }; }; save("location"); break; if (method=="INVITE") { if (!proxy_authorize("mydomain.com", "subscriber")) { proxy_challenge("mydomain.com", "0"); break; }; if (!check_from()) { sl_send_reply("401", "Forbidden"); break; }; if (!allow_routing()) { sl_send_reply("401", "NOT ALLOWED!!!"); break; }; } Para finalizar esta fase do trabalho e para resolver definitivamente todos os problemas de segurança, introduzimos no ficheiro de configuração ser.cfg as seguintes linhas de código: if (method=="INVITE") { if (!proxy_authorize("mydomain.com", "subscriber")) { proxy_challenge("mydomain.com", "0"); 66/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP break; } }; if (!check_from()) { sl_send_reply("401", "Forbidden "); break; }; if (!allow_routing()) {b sl_send_reply("401", "NOT ALLOWED!!!"); break; }; Estas linhas suplementares, fazem com que um utilizador não autorizado no nosso servidor seja incapaz de enviar “INVITEs” para os utilizadores registados que estejam activos no servidor. Desta forma asseguramos a segurança mínima necessária a este cenário de comunicação SIP. Na figura seguinte encontra-se um fluxograma no qual está resumido o comportamento do servidor SER em termos de controlo de acesso para cada um dos tipos de mensagens SIP. 67/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Tipo de Mensagem? REGISTER INVITE Outras Processamento do pedido. Login e Password Válidos? Não 401 Unauthorized Não Login e Password Válidos? Sim URI Válido? Sim Não 401 Forbidden Não URI Válido? Sim Sim 200 OK 401 NOT ALLOWED!!! Não 100 RINGING Figura 31 – Fluxograma comportamento SER 68/115 Ligação entre o par de URIs permitida? Sim Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.4.4. Análise dos pacotes trocados numa sessão SIP Para analisarmos as sessões SIP efectuamos algumas capturas de forma a verificar qual o comportamento do cenário para diferentes situações. Os casos estudados foram os seguintes: • Demonstração do funcionamento do SIP ALG • “REGISTER” cenários possíveis 1. Credenciais válidas a. URI certo b. URI errado 2. Credenciais inválidas • “INVITE” cenários possíveis 1. Utilizador que inicia a sessão não está registado no servidor a. Credenciais válidas i. URI certo ii. URI errado b. Credenciais inválidas • Demonstração do funcionamento do módulo permissions.so 4.4.4.1. Demonstração do funcionamento do SIP ALG Para demonstrarmos o funcionamento do SIP ALG, estabelecemos uma sessão SIP entre dois terminais (um na rede privada e outro na rede pública). Capturamos os pacotes trocados em três pontos: no terminal privado (figura 32), no servidor SIP (figura 33) e no terminal público (figura 34). Nas capturas efectuadas nos terminais, fizemos referência não só aos pacotes SIP como também aos pacotes de dados trocados entre eles. No servidor SIP, optamos por capturar apenas os pacotes SIP trocados. De realçar, a mudança verificada no endereço IP dos pacotes SIP do terminal privado com a passagem pela residential gateway. 69/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Figura 32 – Demonstração do funcionamento do SIP ALG (terminal privado) Figura 33 – Demonstração do funcionamento do SIP ALG (servidor SIP) Figura 34 – Demonstração do funcionamento do SIP ALG (terminal público) 70/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Através da captura retirada no terminal privado, verificamos que os pacotes SIP provenientes deste terminal possuem o endereço IP privado (192.168.0.5). Na captura obtida no servidor SIP isto já não é assim. Uma vez que a captura é feita na rede pública, o terminal por detrás do NAT envia e recebe pacotes SIP, os quais saem e chegam respectivamente à residential gateway com o endereço IP da interface pública da própria residential gateway (172.16.100.1). Fica assim demonstrado o correcto funcionamento do SIP ALG. 4.4.4.2. “REGISTER” cenários possíveis Começamos por analisar a situação em que as credenciais introduzidas pelo utilizador são válidas assim como o URI por ele utilizado (figuras 35 e 36). Consideramos um URI válido, caso este coincida com o username utilizado pelo utilizador para se registar. No caso do utilizador com username JoeUser, o URI válido será JoeUser@domínio. É dada especial atenção à noção de URI válido devido à sua importância para a segurança do cenário, tal como referido na secção anterior. Figura 35 – Primeiro pacote (Credenciais válidas e URI válido) 71/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Figura 36 - Terceiro pacote (Credenciais válidas e URI válido) Analisando as capturas anteriores, podemos verificar que no primeiro pacote enviado pelo terminal para se registar, apenas é feita referência ao username do utilizador que se pretende registar. Em resposta, o servidor envia um “401 Unauthorized” indicando que para o username enviado, é necessária password. Desta forma, é enviado um novo pacote no qual se encontra a password codificada (campo “Digest Authentication Response”). Após a recepção deste último pacote e consequente validação dos dados, o registo é completado e é enviado um pacote “200 OK” por parte do servidor. Na figura 37 está representada a situação em que as credenciais introduzidas são válidas mas o URI utilizado (JoeUser2@domínio) não é válido. Figura 37 – Terceiro Pacote (Credenciais válidas e URI não válido) 72/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Verificamos que o facto do URI não ser válido, origina o envio de uma mensagem de erro por parte do servidor (“401 Forbidden”). Se consultarmos o ficheiro de configuração do SER (ser.cfg), verificamos que essa mensagem corresponde, de facto, à situação verificada. Por último, analisamos o caso em que as credenciais introduzidas não eram válidas (figura 38). Figura 38 – Pacotes capturados quando as credenciais não são válidas Verificamos que após o envio da password (contida no 3ºpacote) o servidor responde com um “401 Unauthorized” indicando que a autenticação não foi bem sucedida (esta mensagem está implícita na secção do ficheiro ser.cfg correspondente à verificação dos dados para autenticação). 4.4.4.3. “INVITE” cenários possíveis A primeira situação analisada (figura 39) consiste em efectuar um INVITE com um utilizador não registado no servidor que possui, no entanto, credenciais e URI válidos. Figura 39 – Pacotes capturados quando as credenciais são válidas assim como o URI Verificamos que à semelhança do que se passa com as mensagens REGISTER, primeiro é enviado um pacote com o username, ao qual o servidor responde com um “401 Unauthorized”. Neste caso, o utilizador responde com um pacote de ACK ao pacote de erro enviado pelo servidor. De seguida, o utilizador envia um novo pacote de INVITE no qual segue a password (no campo “Digest Authentication Response”). Uma vez que tanto as credenciais como o URI são válidos a sessão SIP é estabelecida sem problemas (“200 OK”). 73/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Na figura 40, temos a situação em que o utilizador, não registado no servidor (tal como no caso anterior) tenta estabelecer uma sessão SIP utilizando credenciais válidas mas um URI inválido. Figura 40 – Pacotes capturados quando as credenciais são válidas mas o URI não Verificamos que tal como acontece no caso equivalente do modo REGISTER, a utilização dum URI inválido origina o envio de uma mensagem de erro “401 Forbidden” (ver ser.cfg) por parte do servidor que impede o estabelecimento da sessão. No caso das credenciais serem inválidas (figura 41), o servidor envia um pacote “401 Unauthorized” que impede o estabelecimento da sessão tal como acontece no modo REGISTER. Figura 41 – Pacotes capturados quando as credenciais não são válidas 74/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.4.4.4. Demonstração do funcionamento do módulo permissions.so Resta-nos analisar o módulo permissions.so. Para tal efectuamos uma captura (figura 42) na qual está representada a tentativa de estabelecimento de uma chamada no sentido Hemera → JoeUser o qual não tem uma entrada no ficheiro permissions.allow. Figura 42 – Pacotes capturados quando a ligação é recusada devido ao módulo permissions.so Verificamos que a tentativa de estabelecimento de uma sessão não autorizada em termos do módulo permissions.so, conduz ao envio por parte do servidor de um pacote “401 NOT ALLOWED!!!” (definida no ficheiro ser.cfg) que faz com que a tentativa de estabelecimento da sessão não tenha sucesso. 75/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.5. Criação do “Centro de Serviços” Após termos concluído com sucesso a introdução e configuração do SER no nosso sistema, pretendemos agora criar uma alternativa para acedermos aos conteúdos multimédia. Optamos por introduzir o conceito de “centro de serviços” através da criação de um portal web, o qual funcionará como um interface para o acesso aos vídeos por parte dos utilizadores. Para a implementação deste centro de serviços, precisamos de considerar vários elementos. Teremos de extrair vídeo a partir de um terminal e de o disponibilizar de uma forma segura e ao mesmo tempo simples para que os utilizadores o possam visualizar. 4.5.1. Captura das imagens e criação dos vídeos Para retirarmos as imagens utilizamos uma webcam da creative (QuickCam messenger). Encontramos um programa bastante completo chamado Active WebCam (HTTP://www.pysoft.com/ActiveWebCamMainpage.htm), o qual permite a captura de imagens, geração de vídeos (a partir dessas imagens), restrição de acessos através de utilização de credenciais (username e password), disponibilização desses conteúdos por HTTP, FTP, entre outras funcionalidades. Começamos por instalar e configurar devidamente o programa. De seguida, fizemos um teste o qual consistia em capturar e disponibilizar algumas imagens por HTTP utilizando uma das funcionalidades do programa que permite a criação duma página web. No entanto, verificamos desde logo que esta opção não era a mais adequada uma vez que a página criada tinha como endereço o endereço IP do PC onde o programa está instalado o que não é aconselhável uma vez que o próprio conceito de centro de serviços implica que esta página esteja numa entidade aparte e não no PC onde está a câmara. Resolvemos por de parte esta solução e consideramos que a melhor alternativa seria utilizar um servidor FTP para armazenarmos os conteúdos capturados e criar um portal web com autenticação que permitisse o acesso a esses conteúdos dependendo do utilizador que se havia autenticado. 4.5.2. Implementação dos servidores HTTP e FTP Como servidor FTP e HTTP começamos por utilizar a versão para Windows XP do Fastream Netfile. No entanto, tivemos que trocar este servidor por outro quando procedemos à montagem da rede final porque a máquina que na montagem final vai conter o servidor terá o sistema operativo linux instalado o qual não é suportado por este servidor. Utilizamos o dreamweaver para criar uma página web (com autenticação no servidor FTP) para efeitos de teste, bastante simples, que permite o acesso aos ficheiros multimédia alojados no servidor FTP. Configuramos novamente o Active WebCam para desta vez gerar ficheiros de vídeo MPEG de aproximadamente 2 minutos a partir das imagens capturadas. Esses vídeos logo que estejam completos serão idadostamente enviados para o servidor FTP. Optamos por vídeos de curta duração para minimizar o atraso entre a captura do vídeo e a sua disponibilização ao utilizador. Após termos configurado devidamente os servidores FTP e HTTP, realizamos alguns testes. Verificamos que tudo estava a funcionar correctamente, ou seja, as imagens estavam a ser capturadas, os vídeos criados de acordo com a duração estabelecida e enviados logo de seguida para o servidor FTP. Acedendo através do portal web, podemos após autenticação, 76/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP visualizar e descarregar os ficheiros de vídeo armazenados no servidor FTP respeitantes à nossa câmara. Como foi dito anteriormente, apesar do servidor FTP e HTTP estar a funcionar sem problemas, tivemos de utilizar um outro servidor capaz de funcionar em linux tendo em vista a interligação com os outros elementos do cenário. Como servidor HTTP optamos por instalar o Apache. Como servidor FTP instalarmos a aplicação pure FTPd. Em termos de configuração tivemos de executar os seguintes passos: 1. Criar um ficheiro de configuração (/etc/pureFTPd-mysql.conf) com o seguinte texto: #MYSQLServer localhost #MYSQLPort 3306 MYSQLSocket mysql.sock* MYSQLUser root MYSQLPassword rootpw** MYSQLDatabase pure-FTPd MYSQLCrypt cleartext MYSQLGetPW SELECT Password FROM users WHERE User="\L" MYSQLGetUID SELECT Uid FROM users WHERE User="\L" MYSQLGetGID SELECT Gid FROM users WHERE User="\L" MYSQLGetDir SELECT Dir FROM users WHERE User="\L" *O caminho para este ficheiro pode ser encontrado no ficheiro /etc/my.cnf . **Password de acesso ao mysql. 2. Criar uma base de dados no mysql com o nome pure-FTPd como especificado no ficheiro de configuração anteriormente referido. 3. Dentro da base de dados pure-FTPd criar a tabela users com o seguinte comando: CREATE TABLE users ( User VARCHAR(16) BINARY NOT NULL, Password VARCHAR(64) BINARY NOT NULL, Uid INT(11) NOT NULL default '80*', Gid INT(11) NOT NULL default '422*', Dir VARCHAR(128) BINARY NOT NULL, PRIMARY KEY (User) ); *Os valores que devem ser colocados neste campo devem estarde acordo com os especificados no ficheiro /etc/passwd na entrada correspondente ao pure-FTPd. criada. 4. Criar as contas para os utilizadores inserindo para tal os dados apropriados na tabela 5. Iniciar o servidor FTP com o seguinte comando: “pure-FTPd -B -E –A –l mysql:/etc/pureFTPd-mysql.conf &” Desta forma impedimos a entrada de utilizadores não registados (-E), efectuamos o chroot a todos os utilizadores (-A) impossibilitando que estes acedam a directórios acima 77/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP daquele que foi definido como directório base para a sua conta. Definimos ainda, que para efeitos de accounting (login) (-l) se utiliza a base de dados mysql com o ficheiro de configuração criado no ponto 1. Optamos também por activar o modo de operação em background (-B). 4.5.3. Instalação e descrição do phpMyAdmin Optamos por instalar o phpMyAdmin que é uma aplicação web utilizada para operar sobre as tabelas da base de dados MySQL. A instalação desta ferramenta tem como objectivo principal facilitar a gestão dos dados contidos nessas tabelas. Para instalarmos o phpMyAdmin necessitamos do servidor HTTP Apache e da sua extensão php. Podemos aceder ao phpMyAdmin através do endereço: HTTP://193.136.93.220/MyAdmin No entanto, o acesso é restrito. Os dados de acesso são iguais aos utilizados para aceder à base de dados MySQL no modo consola. A página principal do phpMyAdmin está apresentada a seguir: Figura 43 - phpMyAdmin 4.5.4. Criação do portal web Para facilitarmos o acesso aos vídeos alojados no servidor FTP, criamos uma página web utilizando o programa dreamweaver. A partir desta página é possível aceder a um servidor FTP, desde que tenhamos as credenciais necessárias (username e password) para autenticação. 78/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Inicialmente tinhamos 2 páginas: index.php e redirect.php. Os dados eram introduzidos na página index.php e recolhidos pela página redirect.php que os utilizava para aceder ao directório pessoal do utilizador que se autenticou. O portal web inicialmente criado está representado na figura 44: Figura 44 - Portal Web (Página índex.php) Optamos por introduzir uma nova funcionalidade no portal web. Alteramos a página principal de modo a permitir ao utilizador visualizar os N primeiros vídeos em simultâneo. Deste modo o utilizador ficará a saber mais rapidamente o que se passa, uma vez que não necessitará de aceder ao servidor FTP para assistir a cada um dos vídeos individualmente. O novo portal web e uma amostra da nova funcionalidade introduzida encontram-se nas figuras 45 e 46 respectivamente. 79/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Figura 45 - Portal Web Melhorado (Página índex.php) 80/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Figura 46 – Visualização de 3 vídeos em simultâneo (por razões relacionadas com a qualidade dos vídeos optamos por mostrar 3 vídeos não consecutivos) O código associado à introdução dos campos para a autenticação dos utilizadores, acesso ao servidor FTP e disponibilização dos conteúdos vídeo, referentes às páginas index.php, redirect.php e redirect2.php está presente no anexo 9.3. 81/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 4.5.5. Análise do funcionamento do Centro de Serviços Na figura 47, encontra-se o conteúdo de um ficheiro gerado pelo Active Webcam que regista a actividade do programa. Figura 47 – Registo da actividade do Active WebCam Os ficheiros de vídeo são criados em formato .mpeg com uma duração de aproximadamente 1min cada. Podemos verificar que após a criação dum ficheiro, é feito o respectivo upload, sendo o ficheiro imediatamente enviado para o servidor FTP. Com vista a verificarmos o modo de acesso ao servidor FTP, utilizamos o ethereal para realizar algumas capturas. Na figura 48, estão apresentados os principais pacotes capturados quando um utilizador válido no terminal (193.136.93.207) tenta aceder ao servidor FTP (193.136.93.220). Podemos verificar que após a iniciação da ligação TCP por parte do utilizador, este envia os seus dados para efeitos de autenticação (primeiro username e depois password) aos quais o servidor responde com um ACK indicando que os dados enviados estão correctos e que portanto está na presença de um utilizador válido. De seguida, é dada permissão ao utilizador para aceder aos conteúdos presentes no seu directório pessoal. 82/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Figura 48 - Principais pacotes capturados Na figura 49 é feita referência ao conteúdo do pacote POST. Este pacote contém a informação de autenticação: username (“JoeUser”) e password (“qwerty”) que foi introduzida na página principal (índex.php) pelo utilizador para acesso ao servidor FTP. Verificamos que esta informação não se encontra codificada, e portanto não confere a segurança desejada ao nosso sistema. No entanto, este problema é facilmente resolvido através da utilização de um servidor secure FTP ou através da introdução de um mecanismo de codificação de dados. Figura 49 - Conteúdo do POST Na figura 50 está representado o conteúdo do pacote associado à página redirect.php. Podemos ver qual o tratamento dado pela página redirect.php aos dados que acabou de receber. Verificamos que é feito um reencaminhamento para o link: ftp://username:password@endereçodoservidor ou seja ftp://JoeUser:[email protected] (neste caso). 83/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Figura 50 - Conteúdo do pacote associado à página redirect.php Verificamos ainda qual o comportamento do servidor quando um utilizador se tenta autenticar utilizando outros dados que não os correctos. A figura 51 retrata essa situação. Verificamos que apesar de tanto o username como a password estarem errados, só após o envio da password é que o servidor impede definitivamente a ligação através do envio de um “530 Login authentication failed”. Figura 51 - Principais pacotes capturados quando as credenciais não são válidas 84/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 5. PRINCIPAIS DIFICULDADES Foram algumas as dificuldades com que nos deparamos ao longo da realização de todo este projecto. Alguns problemas apareceram logo no decorrer do 1ºsemestre com a realização do trabalho de pesquisa. Apesar de termos alguns conhecimentos teóricos a nível de protocolos de rede, sentimos alguma dificuldade em seleccionar a informação que era, de facto, relevante e a compreender os modos de funcionamento de algumas tecnologias e técnicas de autenticação. Também constatamos alguma falta de informação na Internet sobre determinados assuntos, como por exemplo, aspectos relacionados com a actual oferta de serviços residenciais. Apesar de todo esse trabalho ser necessário para a aquisição de algumas bases para o desenvolvimento do projecto, sentimos que a falta de experiência em termos práticos foi a principal causa de todos os problemas que tivemos relacionados com a selecção de informação. Com o início da realização do projecto propriamente dito deparamo-nos com outro tipo de dificuldades de carácter sobretudo prático. Para essas dificuldades muito contribuiu a nossa falta de experiência em Linux. Também o facto de nunca termos trabalhado directamente com servidores e respectivos ficheiros de configuração não ajudou à transposição desses problemas. No que diz respeito ao freeRADIUS, as poucas dificuldades que tivemos, estiveram relacionadas com a compreensão do seu funcionamento, nomeadamente com a manipulação dos seus ficheiros de configuração. Relativamente ao servidor Dynamic DNS, a principal dificuldade esteve relacionada com a procura de um servidor Dynamic DNS que cumprisse todos os requisitos por nós impostos. Acabamos mesmo por ter que utilizar dois servidores a funcionar em conjunto para que o comportamento obtido fosse o pretendido. Tivemos ainda algumas dificuldades com a instalação do BIND que, no entanto, acabaram por ser superadas. A fase relacionada com o SIP Express Router foi uma das que deu mais trabalho. Apesar da instalação e configuração básica do SER ter decorrido sem grandes problemas, o estabelecimento de sessões já não foi assim. O maior desses problemas esteve relacionado com a configuração da placa de som de um dos PCs. Estivemos muito tempo de volta dessa questão e acabamos mesmo por não a conseguir resolver. Foram muitas as soluções tentadas mas infelizmente sem grandes resultados. Outra questão que levantou muitos problemas esteve relacionada com o SIP ALG. A sua introdução no cenário originava um “Kernel Panic” na residential gateway sempre que os clientes SIP (público e privado) tentavam comunicar entre si. Após recompilarmos várias vezes o kernel e consultarmos fóruns e outras fontes de informações, descobrimos que apenas um restrito conjunto de versões do kernel funcionavam correctamente com o módulo SIP ALG. Só assim conseguimos resolver o problema. Ainda no âmbito do SER, tivemos algumas dificuldades no estabelecimento da correspondência entre o username de registo e o URI utilizado no estabelecimento de sessões. O módulo avpops.so acabou por se revelar um pouco complicado de manusear e sem grande utilidade em termos práticos uma vez que a noção de sala de conferência não servia para o que pretendíamos tal como foi explicado na secção anterior. Também não chegamos a conseguir instalar a ferramenta serweb que permite interagir graficamente com o ser o que seria útil pois facilitaria possíveis alterações em termos de configuração. As últimas dificuldades estiveram relacionadas com a criação de um centro de serviços e de um portal web que funcionasse como alternativa ao cenário desenvolvido em torno do SER. Mais concretamente, tentamos encontrar um cliente SIP baseado em web mas o único existente que permitia a utilização do SER (SIP communicator construído em Java e ainda em fase de desenvolvimento) acabou por não corresponder às nossas expectativas, revelando-se complicado para o utilizador comum. Também a falta de tempo não nos permitiu criar um portal 85/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP com um maior número de funcionalidades à semelhança do que acontece com um centro de serviços habitual. 86/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 6. POSSÍVEIS MELHORAMENTOS Após a realização de todo o trabalho, considerámos útil analisar quais os pontos que necessitam de ser melhorados, assim como a aplicabilidade do nosso projecto e possíveis interacções com outros trabalhos. Ao analisarmos todo o trabalho verificamos que apesar do “centro de serviços” funcionar correctamente e fornecer a segurança necessária ao serviço disponibilizado, seria interessante efectuar algumas modificações. Tudo o resto ficou a funcionar de acordo com as expectativas iniciais o que não significa que não possa ainda vir a ser melhorado. No entanto, acreditamos que o funcionamento desses elementos apresenta desde já um grau de complexidade adequado ao tipo de projecto e seus objectivos. No que diz respeito ao “centro de serviços”, acreditamos que nomeadamente o portal web pode ser melhorado através da introdução de novas funcionalidades que o tornem mais completo e “user friendly”. Seria interessante efectuar um levantamento de possíveis interacções com outros projectos já desenvolvidos. Por exemplo, poderia ser proveitoso efectuar uma análise em termos da qualidade de serviço existente em função do número de utilizadores de forma a avaliar a capacidade da plataforma. Um outro aspecto que poderia ser explorado era o da encriptação de informação, uma vez que num cenário de vídeo vigilância é essencial que os dados sejam transmitidos de uma forma segura de forma a não poderem ser acedidos por terceiros. Um estudo relacionado com as técnicas de segurança passíveis de serem aplicadas, assim como principais vantagens e inconvenientes dessas mesmas técnicas poderia também ser útil. Seria ainda interessante analisarmos em termos práticos outros métodos para a resolução dos problemas causados pelo NAT para além do SIP ALG. A implementação de soluções práticas que funcionassem como alternativa à solução por nós adoptada facilitaria a obtenção de conclusões importantes em termos de requisitos mínimos, robustez, flexibilidade e desempenho. 87/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 88/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 7. CONCLUSÕES / NOTAS FINAIS Um dos maiores benefícios proveniente da realização de um projecto é sem dúvida a aquisição de conhecimentos e as conclusões que dele se podem retirar. Deste modo, é importante enumerar o que de mais importante podemos concluir com todo este trabalho. Em primeiro lugar convém referir que de uma maneira geral, os objectivos associados à realização deste projecto foram atingidos. Conseguimos desta forma projectar, desenvolver e testar com sucesso um cenário de vídeo-vigilância sem ignorarmos alguns problemas habituais para a maioria dos utilizadores, como a existência de redes privadas, a necessidade de segurança, a facilidade de acesso ao serviço, entre outros. Em termos de autenticação, verificamos que definitivamente, tal como pensávamos de início, o freeRADIUS é uma boa solução. Este servidor freeware e open source possui tudo aquilo que é necessário a um servidor de autenticação e ainda um conjunto de funcionalidades extra que nem todos os servidores, mesmo comerciais, possuem. A utilização de uma base de dados para armazenamento da informação associada aos utilizadores freeRADIUS é definitivamente mais cómoda que a utilização dos ficheiros de configuração que o freeRADIUS disponibiliza. Dentro das diversas bases de dados suportadas, verificamos que o mySQL acaba por ser bastante acessível para quem tem pouca experiência, pelo menos no que diz respeito às operações básicas de criação de tabelas, inserção e remoção de utilizadores, alteração de atributos, entre outros. Relativamente ao servidor Dynamic DNS, verificamos que este é sem dúvida uma mais valia. A sua introdução no cenário criado permite-nos utilizar nomes em alternativa a endereços IP mesmo quando estes não são estáticos. Desta forma, temos um sistema adaptado à atribuição dinâmica de endereços IP e ao mesmo tempo cómodo para o utilizador que não precisa de se preocupar com esses mesmos endereços. A solução adoptada (mhDNS e Bind a funcionarem em parceria) foi, no nosso entender, a melhor de entre as soluções existentes. Com a implementação desta solução para a resolução da questão do Dynamic DNS, o sistema passou a ser capaz de responder com eficácia e rapidez às alterações dinâmicas dos endereços IP. Para além disso asseguramos ainda a segurança necessária através da utilização de um mecanismo baseado em passwords encriptadas. No que diz respeito ao servidor SER, verificamos que este funciona à base de módulos que são adicionados ao ficheiro de configuração, que disponibilizam funções as quais devemos aplicar de acordo com a utilização que queremos fazer do servidor. Ficamos a saber que este tem a capacidade de utilizar a base de dados MySQL para efeitos de gestão de logins, passwords e URIs. Vimos que é possível reservar certos URIs para determinados utilizadores, sendo mesmo possível fixar um URI a um utilizador. Para além disso é possível impedir que utilizadores não autorizados no nosso servidor efectuem INVITEs para utilizadores nele registados. No que diz respeito ao SIP ALG, podemos concluir que este se comporta como um módulo que opera ao nível do kernel e que em cooperação com as iptables faz na residential gateway a verificação e ajuste dos endereços IP dos pacotes SIP de acordo com os endereços IP do cabeçalho IP. Verificamos que de facto, a utilização do SIP ALG permite resolver os problemas relacionados com os endereços IP dos pacotes SIP utilizados na comunicação com clientes que se encontram em redes privadas. Analisando as várias alternativas para a resolução do problema do NAT, verificamos que a utilização do SIP ALG acabou por não ser uma má escolha. Apesar deste método se encontrar ainda numa fase de desenvolvimento, não apresenta grandes desvantagens em relação aos restantes métodos, antes pelo contrário. A principal dificuldade relacionada com a introdução do SIP ALG está associada à instalação de novos módulos do kernel, o que se pode revelar um pouco complicado para utilizadores que não se sintam confortáveis em ambiente Linux. 89/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP Ainda acerca do SIP, concluímos que é complicado encontrar clientes SIP freeware que suportem vídeo e que utilizem o servidor SER. Relativamente à implementação do centro de serviços, verificamos que os clientes SIP “web-based” não facilitam o estabelecimento de sessões por parte do utilizador comum, acabando mesmo por ser mais complicados. A utilização dum servidor FTP para armazenamento dos conteúdos pareceu-nos uma boa solução, apesar de em muitos casos a segurança não ser a desejável (uma vez que as credenciais são enviadas sem qualquer tipo de encriptação) a não ser que se utilize um servidor secure FTP ou algum tipo de encriptação suplementar. Verificamos que o programa Active WebCam foi uma escolha acertada uma vez que não nos impôs qualquer tipo de limitação, antes pelo contrário. Comparando as duas hipóteses de acesso aos conteúdos multimédia (SIP SER e portal web), verificamos que ambas acabam por ter um grau de complexidade em termos de utilização semelhante. Enquanto que a solução baseada no SER permite a visualização em directo do vídeo, o acesso via web apesar de não o suportar, fornece um outro tipo de funcionalidades, que fazem com que seja possível assistir aos conteúdos em qualquer instante e em qualquer lugar sem ser necessário um cliente SIP. 90/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 8. BIBLIOGRAFIA / REFERÊNCIAS A principal fonte de informação utilizada no decorrer da realização do projecto foi a Internet. Alguns sites considerados mais importantes podem ser encontrados a seguir: Documentação da CISCO HTTP://www.cisco.com/univercd/cc/td/doc/cisintwk/index.htm Tecnologia FWA HTTP://www.multitel.co.ao/wireless2.htm www.fe.up.pt/~mleitao/ST2/Teoricas/ST2_FWA.pdf Ofertas serviços residenciais HTTP://www.artelecom.pt/residencial.php HTTPs://www.ptcasasegura.pt/PortalDomotica/default.aspx?op=desc_servico&s=632883 167964531250 HTTP://www.optimus.pt/Site+Optimus/Empresas/Optimus/Press+Releases/Press200509 20.htm HTTP://www.vodafone.pt/empresaseprofissionais/commoveis/MobileConnectedOffice/def ault.htm HTTP://tek.sapo.pt/4O0/571750.html HTTP://www.necportugal.pt/index.php?object=2216&article=5048§ion=467 Linux HTTP://www.vivaolinux.com.br HTTP://wwwnew.mandriva.com FreeRADIUS HTTP://www.freeradius.org MySQL – The world’s most popular open source database HTTP://www.mysql.com/ mhDNS HTTP://www.htoc.com/mhdns SIP Express Router HTTP://www.iptel.org/ser Módulo avpops.so HTTP://www.voice-system.ro/docs/avpops/ Módulo permissions.so HTTP://www.voip-info.org/wiki/view/SER+module+permissions HTTP://openser.org/docs/modules/devel/permissions.html Outros módulos relevantes HTTP://openser.org/docs/modules/devel/uri_db.html HTTP://openser.org/docs/modules/devel/auth_db.html TCP/IP - NAT HTTP://www.imasters.com.br/artigo/3202 91/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP SIP Firewall and NAT Traversal HTTP://www.SIPCenter.com/SIP.nsf/html/SIP+Firewall+and+NAT+Traversal Iptables HTTP://www.siliconvalleyccie.com/linux-hn/iptables-intro.htm#_Toc92808862 Active WebCam Deluxe HTTP://www.pysoft.com/ Fastream NETFile FTP/Web Server 8.2.7 HTTP://www.freedownloadmanager.org/downloads/secure_FTP_server_software/ Smart FTP client HTTP://www.smartFTP.com Pure FTPd HTTP://www.pureFTPd.org/project/pure-FTPd Web Based SIP phone SIP Communicator - the Java VoIP and Instant Messaging client HTTPs://SIP-communicator.dev.java.net/ Microappliances SIP Phone (ActiveX) HTTP://www.microappliances.com/site/html/index.php?section=Products&page= SIPphone.php Web Integration of SIP Services (Click-to-Dial) HTTP://www.informatik.uni-bremen.de/~prelle/terena/cookbook/main/ch06s02.html 92/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 9. ANEXOS 9.1. Ficheiros de configuração do freeRADIUS 9.1.1. Radiusd.conf # inicio radiusd.conf prefix = /usr/local/src exec_prefix = ${prefix} sysconfdir = ${prefix}/etc localstatedir = ${prefix}/var sbindir = ${exec_prefix}/sbin logdir = ${localstatedir}/log/radius raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd # variáveis definidas na instalação, essas opções # foram disponibilizadas para que você não precise # recompilar para mudar os arquivos de lugar # você pode usar essas variáveis quando definir o # valor de algum parâmetro ao longo desse arquivo. log_file = ${logdir}/radius.log # arquivo de log principal, nesse arquivo ficarão # todas as mensagem de erro, tentativas de # conexão, etc... libdir = ${exec_prefix}/lib # pasta de bibliotecas, se elas # se encontrarem em varias pastas, # separe as localizações # por : , tipo: libdir = /usr/lib:/usr/local/lib pidfile = ${run_dir}/radiusd.pid # arquivo onde será armazenado o id # do processo principal do freeradius user = nobody group = nobody # definição do utilizador e grupo dos processos filhos do radiusd # se você não especificar, o utilizador que deu partida # será usado (root), se # você usar o arquivo /etc/shadow para autenticação, # defina o grupo como shadow, vale lembrar # que o utilizador que executa o radiusd deve ter permissão # de escrita no diretório de log 93/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP max_request_time = 30 # define o tempo que o processo filho segura o pedido, # caso o tempo limite seja atingido, o servidor retorna # acesso negado. Por exemplo: se você define 2 segundos # e usa um banco de dados mysql sobrecarregado que demora # 5 segundos para concluir uma pesquisa, seu servidor nunca # vai dar acesso a ninguém! delete_blocked_requests = no # se no parâmetro max_request_time você # definiu o valor 30 segundos, e o cliente # perdeu a paciência e enviou outra solicitação sem # ter concluído a primeira, # o freeradius não ficara fazendo trabalho # repetitivo simultaneamente. Se você definir # esse parâmetro como yes, ao chegar a segunda # requisição do mesmo cliente com a mesma # "pergunta", ele desistirá da primeira para # atender a nova solicitação. cleanup_delay = 5 # esse valor funciona da seguinte maneira: # se o NAS ou RAS enviou uma pergunta e # a resposta foi perdida na rede, o NAS tornará # fazer a pergunta, todo o processo de autenticação # será realizado novamente. Para evitar isso o freeradius # manter a resposta no cache pelo tempo definido aqui # (em segundos), assim, se o pacote resposta for perdido # e a pergunta for repetida, a resposta será idadosta, # usando assim o mínimo de processamento. max_requests = 1024 # define o número máximo de # requisições que o freeradius pode atender # simultaneamente, somando todas as requisições # atendidas pelos processos filhos, assim, # se você tem 4 processo filhos, cada um # poderá atender 256 perguntas simultaneamente # ATENÇÃO: as respostas cacheadas pela opção # cleanup_delay são contabilizadas. Se você colocou # cleanup_delay com um valor alto, seu radius # ficará exposto a um DOS bind_address = * # isso fará o freeradius escutar em # um endereço especifico, * inclui todos # os endereços ip do host, você pode # usar um FQDN, mas antes tenha certeza # de que a resolução de dns estará disponível 94/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # no momento em que o servidor radius inicia port = 0 # porta de escuta. Equipamentos antigos tem a porta # 1645 como padrão de autenticação e 1646 como # contabilidade. A RFC 2138 mudou essa porta para # 1812 autenticação e 1813 contabilidade. Equipamentos # novos provavelmente terá essa porta como padrão. # 0 (zero) fará com que a porta seja pesquisada # em /etc/services, esse parâmetro pode ser # sobreposto pela opção -p do comando radiusd #listen { # ipaddr = * # endereço ip ou FQDN, mesmos critérios # usados em bind_address # port = 0 # porta de escuta, mesmos critérios # usados em port # Type of packets to listen for. # Allowed values are: # auth listen for authentication packets # acct listen for accounting packets # # type = auth # tipo de escuta: # auth -> autenticação # acct -> contabilidade #} # Se você quiser que o freeradius escute # a porta de autenticação em um ip, e # a porta de contabilidade em outro, ou # em postas distantes no mesmo ip, o # modelo acima de listagem será útil # Esse recurso apareceu a partir da versão # 1.0 e resolve o problema se você # tem equipamentos novos e antigos # servidos pelo mesmo radius hostname_lookups = no # define se o nome DNS dos clientes # será pesquisado a partir do ip. Se definir como yes, # toda vez que uma requisição chegar de # um endereço ip, o freeradius irá consultar # o dns para usar o nome no log de atividades. # o valor no é a melhor opção, não sobrecarrega # o servidor DNS allow_core_dumps = no 95/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # ative essa opção para depurar erros no # servidor, caso contrario deixe como está regular_expressions = yes extended_expressions = yes # ativa ou desativa expressões regulares # nos parâmetros dos pacotes, desativar # é uma boa idéia embora o padrão seja # yes log_stripped_names = no # registra nos logs os dados completos do # campo User-Name do pacote de autenticação, # se definido como yes, do jeito que chegar, # será usado. log_auth = no # deseja logar atividades de autenticação? # se você tem milhares de clientes logando # simultaneamente, significa # que seu log vai crescer muito com essa # opção ativa. Eu sempre coloco yes pois # fica fácil e rápido descobrir por que # certo cliente (leigo) não consegue autenticar log_auth_badpass = no # Logar senhas quando a autenticação falhar? # embora seja útil para dar suporte - utilizador # digitando senha incorretamente (branco, maiúsculas, etc...), # a privacidade do utilizador fica reduzida e uma brecha de segurança, # todas as senhas serão registradas no log log_auth_goodpass = no # idêntica a opção acima, porém se # aplica para autenticações bem sucedidas. usercollide = no lower_user = no lower_pass = no # essas duas opções são muito importantes: # se o utilizador deixar o CapsLock ligado, # significa que não conseguirá se autenticar # e isso significa uma insatisfação ou uma # chamada desnecessária no suporte. # Temos 3 opções: after, before e no # suponhamos que eu informe meu login: PatrickBrandao # "after" fará com que a autenticação # seja primeiro testada com o valor # informado, se falhar, aplica um lowercase 96/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # nos valores e tenta novamente. Sendo a primeira # tentativa com "PatrickBrandao" e a segunda com "patrickbrandao" # "before" fará com que um lowercase seja # aplicado antes de pesquisar a base de # dados, que receberá "patrickbrandao" # "no" desativa esse efeito passando para # a base de dados o mesmo valor recebido: "PatrickBrandao" nospace_user = no nospace_pass = no # as duas opções acima # servem para retirar espaços de nome # de utilizador e senha. Os seus clientes # podem, sem perceber, colocar # um espaço no final ou no começo # das credenciais, o que gera uma # chamada desnecessária no suporte técnico # três valores poderão ser escolhidos: # after, before e no checkrad = ${sbindir}/checkrad # comando ao usar para checar conexões simultâneas # sessão de segurança ---------------------------security { max_attributes = 200 # define o número máximo de atributos # num pacote enviado para o servidor. # um número muito baixo faria o servidor # negar pacotes, número muito alto deixará # o servidor vulnerável. O atacante pode emitir # um pedido com um número exagerado # de parâmetros e esgotar os recursos de memória reject_delay = 1 # define o tempo de espera antes de enviar # uma resposta de acesso negado. # essa opção proteje seu servidor # contra ataques de força bruta # Escolha de 0 a 5, 0 (zero) fará com que # a resposta seja enviada idadostamente } status_server = no # permite ou nega o envio de pacotes # de status do utilizador. Não é muito importante # mas alguns NAS's com keep-alive podem # precisar desse recurso para checar o # status de uma sessão. 97/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # sessão de proxy -----------------------------proxy_requests = yes $INCLUDE ${confdir}/proxy.conf # configuração de clientes NAS --------------$INCLUDE ${confdir}/clients.conf # quando falo de clientes NAS não # estou me referindo a seus clientes de # conexão discada, mas sim aos dispositivos # em contato com eles que se encarregam de # procurar o radius para validar o utilizador, # esses equipamentos podem ser RAS como # cyclades, cisco, etc... ou mesmo serviços # em qualquer servidor que se baseia numa # autenticação com radius # sessão de snmp ---------------------------snmp = no $INCLUDE ${confdir}/snmp.conf # ativa o suporte a monitoramento por snmp # no freeradius # configuração de processos filhos -----------------------thread pool { start_servers = 5 # número de processos filhos a serem criados quando # o serviço for iniciado max_servers = 32 # número máximo de processos filhos # atendendo solicitações min_spare_servers = 3 max_spare_servers = 10 # regula o número de processos para manter # um bom desempenho } max_requests_per_server = 0 # número máximo de solicitações feitas # a um processo filho antes de ser destruído # 0 (zero) para infinito, mas não recomendável # pois um processo filho pode consumir recursos # que nunca irá liberar, 250 é um bom valor. 98/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # sessão de definição de módulos ----------------------modules { # formato: # name [ instance ] { # config_item = value # ... # } # name -> se refere ao nome do # modulo rlm_?????, muitos módulos # são fornecidos com o freeradius, esse # recurso permite que você crie seus próprios # módulos. pap { encryption_scheme = crypt } # define o tipo de # criptografia usada na autenticação PAP # valores disponíveis: # clear: sem criptografia, texto plano # crypt: criptografia do unix # md5: criptografia MD5 # sha1: criptografia SHA1 # padrão: crypt chap { authtype = CHAP } # adiciona suporte a autenticações # usando CHAP pam { pam_auth = radiusd } # suporte PAM dos sistemas unix, configura # o pamd em /etc/pam.d/ para usar esse tipo # de autenticação # autenticação baseada nas credenciais do sistema # /etc/passwd e /etc/shadow unix { cache = no # criar caches de dados de login? # habilitar essa opção pode melhorar 99/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # o desempenho se você tem muitos # utilizadors de sistema cache_reload = 600 # tempo em segundos para recarregar # o cache de logins do sistema # define a localização dos seus # arquivos de autenticação de sistema # encontra-se comentado, usando o # valor padrão # # passwd = /etc/passwd # shadow = /etc/shadow # group = /etc/group radwtmp = ${logdir}/radwtmp } # Extensible Authentication Protocol $INCLUDE ${confdir}/eap.conf # Micro$oft CHAP authentication # esses módulos suportam MS-CHAP e MS-CHAPv2 mschap { authtype = MS-CHAP # protocolo M$ usado #use_mppe = no #require_encryption = yes #require_strong = yes #with_ntdomain_hack = no #ntlm_auth = "/path/to/ntlm_auth --request-nt-key --username=%{Stripped-User-Name:%{User-Name:-None}} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NTResponse:-00}" } # Lightweight Directory Access Protocol (LDAP) # permite usa autenticação LDAP (Auth-Type := LDAP) ldap { server = "ldap.your.domain" # identity = "cn=admin,o=My Org,c=UA" # password = senhadnaqui basedn = "o=My Org,c=UA" filter = "(uid=%{Stripped-User-Name:-%{User-Name}})" # base_filter = "(objectclass=radiusprofile)" start_tls = no # coloque yes se deseja usar tls para criptografar # os dados nas conexões com o LDAP e # configure e descomente os valores abaixo 100/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # tls_cacertfile = /path/to/cacert.pem # tls_cacertdir = /path/to/ca/dir/ # tls_certfile = /path/to/radius.crt # tls_keyfile = /path/to/radius.key # tls_randfile = /path/to/rnd # tls_require_cert = "demand" # default_profile = "cn=radprofile,ou=dialup,o=My Org,c=UA" # profile_attribute = "radiusProfileDn" access_attr = "dialupAccess" dictionary_mapping = ${raddbdir}/ldap.attrmap # define o arquivo de mapas de atributos # do seu diretorio ldap_connections_number = 5 # password_header = "{clear}" # password_attribute = userPassword # groupname_attribute = cn # groupmembership_filter = "(|(&(objectClass=GroupOfNames) (member=%{Ldap-UserDn})) (&(objectClass=GroupOfUniqueNames) (uniquemember=%{Ldap-UserDn})))" # groupmembership_attribute = radiusGroupName timeout = 4 timelimit = 3 net_timeout = 1 # compare_check_items = yes # do_xlat = yes # access_attr_used_for_allow = yes } # ---------------------------------------# modulo Realm, para proxy # 'realm/username' realm IPASS { format = prefix delimiter = "/" ignore_default = no ignore_null = no } # 'username@realm' realm suffix { format = suffix delimiter = "@" ignore_default = no ignore_null = no } # 'username%realm' realm realmpercent { format = suffix 101/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP delimiter = "%" ignore_default = no ignore_null = no } # 'domain\user' realm ntdomain { format = prefix delimiter = "\\" ignore_default = no ignore_null = no } checkval { item-name = Calling-Station-Id check-name = Calling-Station-Id data-type = string #notfound-reject = no } # reescrita de pacotes. Usado para autorização e contabilidade #attr_rewrite sanecallerid { # attribute = Called-Station-Id # may be "packet", "reply", "proxy", "proxy_reply" or "config" # searchin = packet # searchfor = "[+ ]" # replacewith = "" # ignore_case = no # new_attribute = no # max_matches = 10 # ## If set to yes then the replace string will be appended to the original string # append = no #} preprocess { huntgroups = ${confdir}/huntgroups hints = ${confdir}/hints with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = no with_specialix_jetstream_hack = no with_cisco_vsa_hack = no } files { usersfile = ${confdir}/users acctusersfile = ${confdir}/acct_users compat = no } 102/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP detail { detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d detailperm = 0600 } # detail auth_log { # detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d # detailperm = 0600 #} # detail reply_log { # detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d # detailperm = 0600 #} # detail pre_proxy_log { # detailfile = ${radacctdir}/%{Client-IP-Address}/pre-proxy-detail-%Y%m%d # detailperm = 0600 #} # detail post_proxy_log { # detailfile = ${radacctdir}/%{Client-IP-Address}/post-proxy-detail-%Y%m%d # detailperm = 0600 #} acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } # Para Postgresql, use: ${confdir}/postgresql.conf # Para MS-SQL, use: ${confdir}/mssql.conf # For Oracle, use: ${confdir}/oraclesql.conf # $INCLUDE ${confdir}/sql.conf # inclusão de arquivo de configuração contendo # módulos de autenticação, sessão e contabilidade # controlados em banco de dados SQL # módulos responsáveis por controlar utilizadors ligados # para evitar conexão simultânea quanto esta é # usada radutmp { filename = ${logdir}/radutmp username = %{User-Name} case_sensitive = yes check_with_nas = yes perm = 0600 callerid = "yes" } radutmp sradutmp { filename = ${logdir}/sradutmp perm = 0644 callerid = "no" } 103/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP attr_filter { attrsfile = ${confdir}/attrs } counter daily { filename = ${raddbdir}/db.daily key = User-Name count-attribute = Acct-Session-Time reset = daily counter-name = Daily-Session-Time check-name = Max-Daily-Session allowed-servicetype = Framed-User cache-size = 5000 } always fail { rcode = fail } always reject { rcode = reject } always ok { rcode = ok simulcount = 0 mpp = no } expr { } digest { } exec { wait = yes input_pairs = request } exec echo { wait = yes program = "/bin/echo %{User-Name}" input_pairs = request output_pairs = reply #packet_type = Access-Accept } ippool main_pool { range-start = 192.168.1.1 range-stop = 192.168.3.254 netmask = 255.255.255.0 cache-size = 800 session-db = ${raddbdir}/db.ippool ip-index = ${raddbdir}/db.ipindex override = no maximum-timeout = 0 } 104/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP } # controle de acesso, sessão e contabilidade ----------# sessão instantiate - inicia módulos, se não for usar, não inicie. instantiate { exec expr # daily } # sessão authorization - controla os módulos # responsáveis por autorizar o acesso das # requisições authorize { preprocess # auth_log # attr_filter chap mschap # digest # IPASS # suffix # ntdomain # eap # files sql # etc_smbpasswd # ldap # daily # checkval } # Sessão authentication # responsável por conferir o tipo de autenticação usado authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } # digest 105/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # # # # # # } pam unix Auth-Type LDAP { ldap } eap # Sessão Pre-accounting. Decide qual tipo de contabilidade usar preacct { # preprocess # acct_unique # home server as authentication requests. # IPASS # suffix # ntdomain # # Read the 'acct_users' file # files } # Sessao Accounting. Registra dados de contabilidade accounting { # detail # daily # unix # radutmp # sradutmp # main_pool sql # pgsql-voip } # Controle de sessão # quando se faz o controle de sessão para # evitar conexões simultâneas (impede o # nome de utilizador de se ligar varias vezes de # locais diferentes ao mesmo tempo com o mesmo login) session { # radutmp # sql } post-auth { # main_pool # reply_log 106/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # sql # Post-Auth-Type REJECT { # insert-module-name-here # } } pre-proxy { # attr_rewrite # pre_proxy_log } post-proxy { # post_proxy_log # attr_rewrite # attr_filter eap } # fim radiusd.conf 9.1.2. Clients.conf # inicio clients.conf client 127.0.0.1 { secret = raioceleste # segredo do servidor. Somente # os NAS's que conhecem esse # segredo poderão fazer pedidos # de autenticação. OBRIGATÓRIO shortname = localhost # nome do cliente. Normalmente # você pode colocar uma parte do FQDN # esse nome é usado no arquivo de log # e referencias de contabilidade # OBRIGATÓRIO } nastype = other # define o tipo de NAS ó cliente. # Muito importante pois um # NAS especifico pode ter campos # definidos nos arquivos de dicionários # de parâmetros. OPCIONAL. Padrão: other # o exemplo acima trata um cliente # em especifico, mas você pode # abrir uma rede inteira no freeradius 107/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP client 192.168.10.0/24 { secret = raioceleste10 shortname = intranet-10 } # Importante: se seu NAS não estiver cadastrado # aqui, possivelmente você vai ver no arquivo # de log: # Thu Aug 12 17:06:16 2004 : Error: Ignoring request from unknown client 192.168.10.24:41747 # # sempre que adicionar um novo cliente, você terá que reiniciar o freeradius # fim clients.conf 108/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 9.2. Ficheiros de configuração do SIP Express Router (SER) 9.2.1. SER.cfg # # $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei Exp $ # # simple quick-start config script # # ----------- global configuration parameters -----------------------#debug=3 # debug level (cmd line: -dddddddddd) #fork=yes #log_stderror=no # (cmd line: -E) /* Uncomment these lines to enter debugging mode fork=no log_stderror=yes */ check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) port=5060 #children=4 fifo="/tmp/ser_fifo" # ------------------ module loading ---------------------------------# Uncomment this if you want to use SQL database loadmodule "/usr/lib/ser/modules/mysql.so" loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so" loadmodule "/usr/lib/ser/modules/textops.so" # Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.so" loadmodule "/usr/lib/ser/modules/permissions.so" loadmodule "/usr/lib/ser/modules/uri_db.so" 109/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # ----------------- setting module-specific parameters --------------# -- usrloc params -#modparam("usrloc", "db_mode", 0) # Uncomment this if you want to use SQL database # for persistent storage and comment the previous line modparam("usrloc", "db_mode", 2) # -- auth params -# Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameyserver.mydomter) # modparam("auth_db", "password_column", "password") # -- rr params -# add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1) # Parametros do modulo de permissoes !! modparam("permissions", "default_allow_file", "/etc/ser/permissions.allow") modparam("permissions", "default_deny_file", "/etc/ser/permissions.deny") # ------------------------- request routing logic ------------------# main routing logic route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); break; }; if (msg:len >= 2048 ) { sl_send_reply("513", "Message too big"); break; }; # we record-route all messages -- to make sure that 110/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route(); # subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); break; }; if (!(uri==myself)) { # mark routing logic in request append_hf("P-hint: outbound\r\n"); route(1); break; }; # if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) { if (method=="REGISTER") { # Uncomment this if you want to use digest authentication if (!www_authorize("mydomain.com", "subscriber")) { www_challenge("mydomain.com", "0"); break; }; if (!check_to()) { sl_send_reply("401", "Forbidden"); break; }; save("location"); break; }; if (method=="INVITE") 111/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP { if (!proxy_authorize("mydomain.com", "subscriber")) { proxy_challenge("mydomain.com", "0"); break; }; if (!check_from()) { sl_send_reply("401", "Forbidden "); break; }; if (!allow_routing()) { sl_send_reply("401", "NOT ALLOWED!!!"); break; }; } lookup("aliases"); if (!(uri==myself)) { append_hf("P-hint: outbound alias\r\n"); route(1); break; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; append_hf("P-hint: usrloc applied\r\n"); route(1); } 112/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP route[1] { } # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; 113/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 9.3. Porções de código relevantes associadas ao portal web 9.3.1. Index.php <form id="form2" name="form2" method="post" action="redirect2.php"> <blockquote> <p><span class="style24">Login:</span> <input type="text" name="login2" /> <span class="style24">Password:</span> <input type="password" name="password2" /> <span class="style23">Número de vídeos:</span> <input type="text" name="numero_videos" /> <input type="submit" name="Submit2" value="Submit" /> </p> </blockquote> </form> <form id="form1" name="form1" method="post" action="redirect.php"> <blockquote> <p> <span class="style24">Login:</span> <input type="text" name="login" /> <span class="style24">Password:</span> <input type="password" name="password" /> <input type="submit" name="Submit" value="Submit" /> </p> </blockquote> </form> 9.3.2. Redirect.php <head> <? $link= "FTP://" . $_POST['login'] . ":" . $_POST['password'] . "@193.136.93.220/"; ?> <meta HTTP-EQUIV="Refresh" CONTENT="0; url=<? echo $link; ?>" 114/115 Serviços e Redes Residenciais Interfaces e infra-estrutura de Suporte para Operadores e ISP 9.3.3. Redirect2.php <? for ($i=1; $i<=( $_POST['numero_videos'] ); $i++) { $location = "ftp://" . $_POST['login2'] . ":" . $_POST['password2'] . "@193.136.93.245/Record No 00" . $i . ".mpeg";// TYPE=\"video/mpeg"; ?> <OBJECT DATA="<? echo $location; ?>" TYPE="video/mpeg" TITLE="Title" WIDTH=100 HEIGHT=75> <PARAM NAME=pluginspage VALUE="http://quicktime.apple.com/"> <PARAM NAME=autoplay VALUE=true> </OBJECT> <? } ?> 115/115