Escolar Documentos
Profissional Documentos
Cultura Documentos
Itatiba
2010
ii
Itatiba
2010
iii
AGRADECIMENTOS
Agradeço a realização deste trabalho a minha família, que sempre me apoiou em todos
Agradeço também ao meu orientador, Marcelo Augusto Gonçalves Bardi, pela sua
RESUMO
Com o crescimento da Internet aliado ao aumento das velocidades de acesso com banda larga,
a mesma se transformou em um meio conveniente para transmissão de dados em nível
coorporativo, como por exemplo, a transmissão de streaming de vídeo baseada no modelo
cliente-servidor. Todavia, quando se quer transmitir dados de maneira segura e confiável, a
Internet em si não é a melhor escolha, visto que as informações que nela trafegam podem
estar susceptíveis a serem capturadas e/ou visualizadas indevidamente. Por isso, a VPN
(Virtual Private Network) surge como uma alternativa barata e viável para este tipo de
transmissão, visto que tal estrutura é construída sobre a rede pública de comunicação e
garante uma transmissão segura através de técnicas de tunelamentos e métodos de segurança,
tendo como destaque a criptografia. Este trabalho pretende desenvolver uma alternativa para a
transmissão de streaming de vídeo em estrutura de tunelamento criada pela VPN, previamente
configurada, utilizando softwares livres que se baseiam no sistema operacional Unix-like. Para
a configuração da VPN, foi utilizado o software OpenVPN, trabalhando com chave estática de
criptografia e criando IPs virtuais para a máquina servidora e para a máquina cliente. Em
relação ao streaming de vídeo, foi utilizado o software VLC Media Player, no qual o usuário
do lado servidor seleciona um vídeo de interesse, e este será transmitido via streaming em
direção ao cliente, por meio do tunelamento criado pelo OpenVPN. Assim, evidencia-se que é
possível transmitir vídeo de maneira segura e eficiente, em razão da integração entre VPN e
streaming de vídeo.
ABSTRACT
The growth of the Internet linked to the increasing speeds of a broadband, it became a
convenient way for data transmission in corporative level, such as the transmission of
streaming video-based client-server model. However, when one wants to transmit data
securely and reliably, the Internet is not the best choice, because the information travels in it
may be susceptible to being captured and / or displayed improperly. Therefore, the VPN
(Virtual Private Network) appears as an alternative cheap and feasible for this type of
transmission, since such a structure is built on the public network of communication and
ensures a secure transmission through techniques of tunneling and security methods, with
emphasis encryption. This project intends to develop an alternative to the transmission of
streaming video on the structure created by the VPN tunneling, preconfigured, using free
software that are based on Unix-like operating system. For the configuration of the VPN, it
was used OpenVPN software, working with static key encryption and creating virtual IPs to
the server machine and the client machine. Regarding the streaming video, it was used VLC
Media Player software, in which the user server-side selects a video of interest, and this will
be transmitted via streaming towards the client, through the tunneling created by OpenVPN.
Thus, it becomes evident that you can transmit video safely and efficiently, due to the
integration of VPN and video streaming.
SUMÁRIO
1. INTRODUÇÃO ..................................................................................................................... 1
1.1 Objetivos ................................................................................................................................ 2
1.2 Organização do Trabalho ....................................................................................................... 2
2. ASPECTOS TEÓRICOS ...................................................................................................... 3
2.1 SEGURANÇA ....................................................................................................................... 3
2.1.1 Firewall ............................................................................................................................... 4
2.1.2 Criptografia ......................................................................................................................... 4
2.1.2.1 Criptografia Simétrica ..................................................................................................... 5
2.1.2.2 Criptografia Assimétrica ................................................................................................. 7
2.1.3 Função de Hash .................................................................................................................. 9
2.1.4 Assinatura Digital ............................................................................................................... 9
2.1.5 Certificado Digital .............................................................................................................. 10
2.2. VIRTUAL PRIVATE NETWORK (VPN) ............................................................................... 11
2.2.1 Principais tipos de VPN ...................................................................................................... 11
2.2.2 Vantagens e Desvantagens da VPN .................................................................................... 13
2.2.3 Principais Características e Requisitos ............................................................................... 13
2.2.4 Tunelamento ....................................................................................................................... 14
2.2.5 Protocolos de Tunelamento ................................................................................................ 16
2.2.5.1 PPTP ................................................................................................................................ 16
2.2.5.2 L2F .................................................................................................................................. 16
2.2.5.3 L2TP ................................................................................................................................ 17
2.2. 5.4 IPSEC ............................................................................................................................. 17
2.2.5.5 SSL/TLS ........................................................................................................................... 18
2.3. STREAMING DE VÍDEO ..................................................................................................... 20
2.3.1 Aplicações Multimídia ....................................................................................................... 21
2.3.1.1 Streaming de Vídeo Armazenado .................................................................................... 21
2.3.1.2 Streaming de Vídeo ao Vivo ........................................................................................... 22
2.3.1.3 Vídeo Interativo em Tempo Real .................................................................................... 22
2.3.2 Streaming Unicast e Multicast ........................................................................................... 23
2.3.3 Protocolos Multimídia ........................................................................................................ 24
2.3.3.1 HTTP ............................................................................................................................... 24
2.3.3.2 RTP .................................................................................................................................. 25
ix
LISTA DE SIGLAS
LISTA DE FIGURAS
LISTA DE TABELAS
1. INTRODUÇÃO
constantemente reproduzida à medida que chega ao usuário se a sua banda for suficiente para
reproduzir a mídia em tempo real.
Em suma, neste trabalho, fazeremos uso de softwares livres, tanto para configurar a
VPN como para configurar um servidor de streaming de vídeo em cima de plataforma Unix-
like, sendo utilizado o sistema operacional Ubuntu. Desta forma, poderemos estudar os
conceitos do projeto sem maiores problemas de restrinções, possuindo total liberdade de
configuração e desenvolvimento, para depois realizarmos integração e testes.
1.1 Objetivos
A elaboração deste projeto tem como objetivo estudar os principais conceitos de Rede
Virtual Privada, que é utilizada amplamente em diversos lugares para transmissão segura de
dados entre redes distintas, propondo a aplicação destes conceitos na transmissão de
streaming de vídeo de maneira segura e eficiente, em ambiente livre.
2. ASPECTOS TEÓRICOS
Este capítulo tem como principal objetivo realizar uma revisão bibliográfica dos
principais aspectos teóricos que serão fundamentais para o desenvolvimento do projeto. Em
virtude disto, será descrito e analisado os principais conceitos de segurança, VPN (Virtual
Private Network) e streaming de vídeo. Além disso, será feito uma análise e seleção das
principais ferramentas para configuração de VPN e streaming de vídeo.
2.1 SEGURANÇA
2.1.1 Firewall
2.1.2 Criptografia
De acordo com TANENBAUM (2003), a palavra criptografia vem das palavras gregas
(Kryptos = escondido, oculto e Grafia = escrita) que significam “escrita secreta”. As
mensagens a serem criptografadas, conhecidas como texto simples (plain text) são
5
transformadas por uma função que é parametrizada por uma chave. Em seguida, a saída do
processo de criptografia, conhecida como texto cifrado (cipher text), é transmitida,
normalmente através de um mensageiro. Presume-se que o inimigo, ou intruso, “ouça” e copie
cuidadosamente o texto cifrado completo. No entanto, ao contrário do destinatário pretendido,
ele não conhece a chave pra descriptografar o texto e, portanto, não pode fazê-lo com muita
facilidade.
Em sistemas de criptografia, deve-se observar que a chave é o elemento mais
importante. A chave é formada por uma combinação de bits, e quanto maior for esta
combinação, maior será a segurança adquirida, entretanto ocorrendo uma maior sobrecarga de
processamento. Então, dependendo do tipo de chave utilizada, tem-se criptografia simétrica
ou criptografia assimétrica.
No entanto, se o emissor faz o uso da chave privada para cifrar a mensagem, qualquer
pessoa na rede poderá decifrá-la, já que a chave pública é conhecida por todos. Então, apenas
garante-se a autenticidade da mensagem (Figura 4).
Uma função de Hash tem como principal função produzir um número, através da
mensagem que um determinado emissor quer transmitir. Este número também é conhecido
como resumo, que irá representar unicamente a mensagem a ser enviada. Então, quando um
determinado receptor receber a mensagem, este deverá recalcular a função de hash para
verificar se o resumo teve alguma alteração. Se este resumo for diferente significa que a
mensagem foi alterada, violando o princípio da integridade.
Deve-se destacar que, a partir de um dado resumo, é de extrema importância não ser
possível descobrir a mensagem original, além de ser improvável que duas mensagens
produzam o mesmo resumo.
Segundo ASSIS (2003), dentre os principais algoritmos para realização de função
hash, destacam-se
• Message Digest 5 (MD5) que retorna um resumo de 128 bits;
• Secure Hash Algorithm 1 (SHA-1) que retorna um resumo de 160 bits;
• Secure Hash Algorithm 2 (SHA-2), que retorna um resumo que pode ter 256, 384 e
512 bits.
emissor original da mensagem que a enviou, não sendo alterada durante a transmissão.
(Figura 5)
Emissor Receptor
Canal Inseguro
Chave Chave
Secreta Pública
Emissor Emissor
Cifrar Decifrar
Canal Inseguro
• Chave pública;
• Nome e assinatura da entidade que assinou o certificado;
• Número de série.
A sigla VPN significa Virtual Private Network, ou seja, Redes Privadas Virtuais, onde:
• Rede corresponde às redes de computadores;
• Privada corresponde à forma como os dados trafegam neste caso os dados
podem ser criptografados o que garante a privacidade das informações;
• Virtual por não fazerem, necessariamente, parte do mesmo meio físico
(FAGUNDES, 2007).
Então, uma VPN é uma rede privada construída sobre a infra-estrutura de uma rede
pública já existente, normalmente a Internet, onde o acesso e a troca de dados só são
permitidos a pessoas que estejam autorizadas. Desta forma, tem-se a construção de um túnel
entre duas ou mais redes, pelo qual pode ser configurado para garantir autenticidade de dados,
sigilo de informação, controle de acesso através de criptografia do tráfego de informação
entre uma rede e outra.
• Rede – Rede: Neste tipo de configuração de VPN, tem-se como principal finalidade
estabelecer a comunicação entre duas redes distintas. Um exemplo deste tipo de VPN é
quando se deseja interligar a rede matriz de uma empresa com a rede filial desta
mesma empresa, para que ambas se comuniquem de maneira segura, tal como
representado na Figura 8.
13
Segundo CHIN (2010), uma das grandes vantagens decorrentes do uso das VPNs é a
redução de custos com comunicações corporativas, pois elimina a necessidade de links
dedicados de longa distância que podem ser substituídos pela Internet. As LANs podem, por
exemplo, através de links dedicados ou discados, conectarem-se a algum provedor de acesso
local e interligar-se a outras LANs, possibilitando o fluxo de dados através da Internet.
No entanto, uma VPN depende da rede pública (Internet) para realização de suas
conexões. Logo, esta rede pública deve estar quase que sempre disponível, porém isto é
praticamente impossível, pois podem ocorrer falhas nas mesmas, falhas de seguranças,
ataques externos, etc.
De acordo com CHIN (2010), quando se desenvolve um VPN, deve-se ter em mente
algumas características e requisitos que podem fazer parte do projeto a ser implementado.
Dentre as principais características, destacam-se:
• Autenticação de usuário: Verificação da identidade do usuário, restringindo o acesso
às pessoas autorizadas. Na maioria de vezes, temos recursos de usuário e senha para
garantir a autenticação;
14
2.2.4 Tunelamento
De acordo com MARLETA (2007), o tunelamento é uma técnica utilizada pela VPN
para encapsular um protocolo dentro de outro. Assim, pode-se utilizar esta técnica para que
seja possível que um pacote dentro de uma rede que não usa o protocolo IP, possa trafegar
pela Internet.
No entanto, quando se utiliza o tunelamento por meio de VPN, existem estratégias de
criptografia a serem adicionadas ao processo, antes de encapsular um pacote que irá ser
transportado pela rede. Logo, o processo de tunelamento em uma VPN é composto pelas
seguintes fases (ASSIS, 2003):
• Criptografia dos dados: Criptografar o pacote a ser transportado, de forma que o
torne ilegível em caso de interceptação da transmissão;
• Encapsulamento: Um dado protocolo de tunelamento encapsula os pacotes com um
cabeçalho que contém informações de roteamento, com identificação do destino do
pacote;
15
2.2.5.1 PPTP
2.2.5.2 L2F
2.2.5.3 L2TP
Este protocolo foi criado pela IETF (Internet Engennering Task Force) para resolver as
falhas do PPTP e do L2F. Na verdade, utiliza os mesmo conceitos do L2F e assim como este,
foi desenvolvido para transportar pacotes por diferentes meios, como X.25, frame-relay e
ATM e também é capaz de lidar com outros pacotes diferentes, como o IPX e o NetBEUI
(CATRAMBY, 2010).
No entanto, o protocolo L2TP faz uso de um tunelamento compulsório, pelo qual temos
a criação do mesmo por um provedor de acesso, que não permite a um determinado usuário
realizar participação na criação do túnel. Assim, antes do túnel ser instalado, o usuário é
autenticado pelo provedor de acesso e depois autenticado quando a conexão é estabelecida
entre as duas pontas da comunicação VPN.
2.2.5.4 IPSEC
Além disso, o protocolo IPSEC é constituído de vários outros protocolos que garantem
a segurança durante a transmissão de informações pela rede pública. Os dois principais
protocolos são (FAGUNDES, 2007):
• AH (Autentication Header): Este protocolo garante autenticidade e a integridade do
pacote, ou seja, que este não foi modificado durante a sua transmissão;
• ESP (Encapsulating Security Payload): Este protocolo fornece autenticação,
confidencialidade e integridade dos dados trafegados durante a comunicação.
2.2.5.5 SSL/TLS
O protocolo SSL (Secure Sockets Layer) foi originalmente desenvolvido pela empresa
Netscape e ao ser padronizado recebeu o nome de TLS (Transport Layer Security), sendo que
a versão TLS 1.0 é equivalente ao SSL 3.0.
O SSL foi projetado para fornecer criptografia dos dados e autenticação entre um
cliente e um servidor Web. O protocolo começa com uma fase de apresentação mútua que
negocia um algoritmo de criptografia e chaves, e depois autentica o servidor para o cliente,
também podendo o cliente ser autenticado para o servidor. Uma vez concluída a apresentação
mútua e iniciada a transmissão de dados da aplicação, todos os dados são criptografados
usando chaves de sessão negociadas durante a fase de apresentação mútua (KUROSE, 2004).
19
Segundo KUROSE E ROSS (2004), neste tipo de aplicação, tem-se uma semelhança
em relação à transmissão tradicional de rádio e televisão, no entanto a transferência da
informação é feita pela Internet, permitindo que o usuário receba uma transmissão de rádio ou
televisão ao vivo de qualquer parte do mundo.
Nesta aplicação, um cliente não pode interagir com o vídeo que está recebendo, visto
que o fluxo contínuo de vídeo não é armazenado. Entretanto, com o armazenamento local de
dados recebidos, outras operações interativas, como pausa e retrocesso, são possíveis em
alguns casos.
Essa aplicação permite às pessoas utilizar áudio e vídeo para comunicar-se em tempo
real. Dentre as aplicações interativas em tempo real temos softwares de telefonia e
videoconferência na Internet, onde dois ou mais usuários podem se comunicar oral e
visualmente.
Para uma conversação com interação entre vários usuários, o atraso entre o momento
em que o usuário fala ou se move e o momento em que a ação se manifesta nos hospedeiros
receptores deve ser menor que algumas centenas de milissegundo. Portanto, este tipo de
aplicação torna-se mais exigente nos requisitos de atraso de informações (KUROSE e ROSS,
2004).
23
• Multicast: Ocorre quando o conteúdo é transmitido sobre uma rede com suporte à
multicast, onde todos os clientes na rede compartilham o mesmo stream. Desta forma,
temos a vantagem de que apenas uma cópia do stream seja enviada na rede para um
grupo de clientes, reduzindo o tráfego na conexão. A grande desvantagem deste
método é que os clientes não possuem controle em cima dos streams recebidos, ou
seja, não podem avançar, pausar, retroceder, continuar o conteúdo recebido, apenas o
recebe (Figura 14).
24
Existem vários protocolos que podem ser utilizados para realizar a transmissão de
streaming de vídeo na Internet, sendo que os principais são: HTTP, RTP, RTCP e RTSP.
2.3.3.1 HTTP
cabeçalho keep-alive, onde uma conexão permanece aberta até ser finalizada pelo cliente ou
pelo servidor.
O protocolo HTTP, normalmente não realiza streaming em tempo real, para fazer este
procedimento, necessita-se de uma largura de banda da rede maior que a taxa de dados do
vídeo. Logo, como tal protocolo roda em cima do protocolo TCP, a sensibilidade de perdas de
pacotes é alta, transformando esse protocolo inadequado para streaming ao vivo, sendo mais
utilizada para streaming de vídeo armazenado.
2.3.3.2 RTP
De acordo com ALMEIDA (2010), o protocolo RTP pode ser usado não somente em
uma comunicação ponto a ponto, mas também pode ser usada em uma comunicação
multicast. Este protocolo não reserva recursos nem garante qualidade de serviço (QoS),
todavia ele é na maioria da vezes utilizado em paralelo com o protocolo RTCP (Real Time
Control Protocol) permitindo que haja certa monitoração da comunicação.
26
Além disso, o RTP permite atribuir a cada fonte (por exemplo, uma câmera ou um
microfone) o seu próprio fluxo de pacotes RTP independente. Por exemplo, para uma
videoconferência entre dois participantes, quatro fluxos RTP poderiam ser abertos: dois fluxos
para transmitir o áudio (um em cada direção) e dois fluxos para o vídeo (novamente, um em
cada direção). Contudo, algumas técnicas de codificação populares, incluindo MPEG1 e
MPEG2, reúnem o áudio e o vídeo num único fluxo durante o processo de codificação.
Quando o áudio e o vídeo são reunidos pelo codificador, então apenas um fluxo RTP é gerado
em cada direção (KUROSE e ROSS, 2004).
Enfim, segundo KUROSE e ROSS (2004), o protocolo RTP possui diversos campos
específicos localizados dentro de seu cabeçalho, que oferecem funções importantes ao suporte
de streaming de vídeo. Os principais são:
• Tipo de carga: Usado para indicar o tipo de codificação que está sendo usado no
momento, ou seja, o formato dos dados transportados (Ex: Vídeo MPEG1, Vídeo
MPEG2, Motion JPEG, Áudio MPEG, etc);
• Número de Seqüência: Um número de seqüência é incrementado de um a cada
pacote RTP enviado, podendo ser usado para detectar perdas de pacotes e para
recuperar a seqüência de pacotes;
• Marca de Tempo: É um número que permite sincronizar a aplicação servidora e
cliente e eliminar a variação de atraso de pacotes através da indicação temporal do
momento em que foi gerado o sinal de streaming;
• Identificador de sincronização da fonte (SSRC – Synchronization source
identifier): Identifica a fonte do fluxo RTP, pelo qual cada fluxo numa sessão RTP
deve ter um SSRC distinto.
2.3.3.3 RTCP
chegadas, etc. Estas informações podem ser utilizadas para controle do desempenho de
transmissão e para fins de diagnóstico.
Então, de acordo com ALMEIDA (2010), o uso das informações geradas pelos
relatórios é importante, quando todos os participantes da comunicação poderão estar enviando
pacotes RTCP a todo o momento. Nesta situação é necessário restringir a taxa de transmissões
dos participantes para não sobrecarregar a rede, havendo um controle de banda.
2.3.3.4 RTSP
Para a criação de uma VPN, existem várias ferramentas para o seu desenvolvimento.
Dentre as mais importantes, destacam-se: FreeS/Wan e OpenVPN.
2.4.1 FreeS/Wan
2.4.2 OpenVPN
junto com certificados e algoritmos assimétricos (Ex: RSA), pelo qual as chaves serão
trocadas periodicamente.
O OpenVPN utiliza a biblioteca OpenSSL para prover criptografia entre ambos os
canais de controle de dados. Assim, o OpenSSL realiza o funcionamento de toda a criptografia
e autenticação, permitindo ao OpenVPN utilizar todas as cifras disponíveis no pacote do
OpenSSL.
Além, disso o OpenVPN pode ser configurado para transportar os dados sobre TCP ou
UDP e tem a grande vantagem de conseguir estabelecer conexões diretas entre computadores
que estejam atrás de Firewalls, tendo um ótimo desempenho e suportando o trabalho junto
com Proxy Servers e NAT (Network Address Translation).
Não se pode esquecer que o OpenVPN faz uso de uma interface genérica (TUN/TAP)
para a criação da interface de rede virtual, permitindo que ele funcione corretamente, e desta
forma cada VPN aparece na tabela de roteamento como se fosse uma placa adicional da rede.
O sistema operacional, na qual o OpenVPN está rodando deve ter suporte a este tipo de
interface. No caso do Linux, que será utilizado para a configuração da VPN, as versões de
kernel anteriores a 2.2, é necessário realizar a instalação deste driver e recompilar o kernel.
Para usuários do kernel 2.4.7 ou superior o suporte a esse driver já está incluído
(FAGUNDES, 2007).
Para finalizar, existe outra característica opcional que pode ser utilizada durante a
configuração da VPN: utilizar uma biblioteca de compressão chamada LZO, que tem a função
de compactar os dados que irão ser transmitidos pela rede.
O VLC Media Player é um player multimídia de código aberto, que foi desenvolvido
por estudantes da Ecole Centrale Paris além de colaboradores de vários lugares do mundo.
Por ser um programa e um projeto de código aberto, o mesmo pode ser instalado e
configurado em vários sistemas operacionais (Windows, Linux, MacOS, etc), suportando
vários formatos e Codecs de áudio e vídeo. Para vídeo destacam-se MPEG-1, MPEG-2,
MPEG-4, DVD, OGM, VCDs, DivX, dentre outros. Já para áudio tem-se FLAC, MP3, WAV,
OGG, etc.
Além de todas essas características do VLC, não se pode esquecer-se de uma de suas
principais funções, que é a capacidade de realizar streaming de vídeo e áudio por uma rede,
fazendo o uso de vários protocolos de streaming, como RTP, RTSP, HTTP, UDP, etc. Desta
forma, tal ferramenta pode ser utilizada como um servidor de streaming de vídeo, tendo
suporte a uma transmissão Unicast ou Multicast.
O VLC faz parte de uma das soluções do projeto chamado VideoLAN, que além do
VLC, tem o VLS como outra opção. O VLC derivado do nome VideoLAN Client é basicamente
usado como servidor e como cliente para realizar streaming de vídeo e receber streaming de
vídeo. Por outro lado, o VLS derivado do nome VideoLAN Server é utilizado apenas como
servidor de streaming de vídeo. Nas primeiras versões do projeto, o VLS era mais
aconselhável para criação do servidor de streaming de vídeo, tendo que usar o VLC como
cliente. Entretanto, nas ultimas versões do VLC, o mesmo possui praticamente as mesmas
funcionalidades do VLS, podendo ser utilizado como servidor e cliente ao mesmo tempo,
sendo seu uso mais aconselhável, segundo o próprio site da VideoLAN
(http://www.videolan.org/vlc/streaming.html)
versão mais avançada, utilizada para uso comercial, tem mais funções e recursos, podendo
trabalhar e dar suporte para formatos de áudio e vídeo proprietários (Ex.: MPEG).
Esta ferramenta tem a capacidade de realizar streaming de vídeo apenas por meio do
protocolo HTTP, necessitando do protocolo de transporte TCP para isto. Desta forma, não
possui protocolos específicos de streaming, como RTSP e RTP, para trabalhar com esta
ferramenta, tornado o processo de configuração um pouco mais restrito. Além disso, opera
apenas sobre Linux, não possuindo versões para outros tipos de sistemas operacionais.
Enfim, esta ferramenta não será usada para ser feita a configuração de streaming de
vídeo, uma vez que possui apenas suporte para protocolo HTTP, o que deixaria o estudo do
projeto um pouco mais limitado.
34
3. METODOLOGIA DE DESENVOLVIMENTO
Este capítulo tem como finalidade descrever como foi feita a configuração da VPN
bem como a configuração do servidor de streaming de vídeo, explicando passo a passo os
detalhes das configurações, para depois serem realizados testes de integração.
Teve-se que fazer a instalação do OpenVPN nas duas máquinas (servidor e cliente).
Desta forma, foi utilizado o comando apt-get, principal instalador de pacotes do Ubuntu, tal
como segue:
modprobe tun
Também se acrescentou o módulo tun dentro do arquivo /etc/modules para que ele
seja carregado no kernel a cada boot. O módulo tun é responsável pelas interfaces virtuais que
36
o OpenVPN cria. Então, foi digitado no terminal do servidor e do cliente, o seguinte comando
(MORIMOTO, 2010):
Depois de ter instalado o OpenVPN nas duas máquinas e ter carregado o módulo tun
no kernel, será gerado a chave estática de criptografia no servidor.
Primeiramente deve-se acessar o diretório padrão onde estarão os arquivos de
configuração, através do comando abaixo:
cd /etc/openvpn
Desta forma, gerou-se uma chave estática de criptografia, com o nome de chave.key,
com o conteúdo da Figura 17.
Depois de ter gerado a chave estática de criptografia no servidor, terá que ser feita a
cópia da chave para o cliente de uma maneira segura. Então foi necessário instalar o
OpenSSH, no servidor e no cliente. O OpenSSH é uma coleção de programas de computador
que provem a criptografia em sessões de comunicações em uma rede de computadores usando
o protocolo SSH.
Então, no servidor foi instalado o OpenSSH Server, através do seguinte comando no
terminal:
Primeiramente deve-se acessar o diretório para onde será copiada a chave estática (cd
/etc/openvpn do servidor:
touch servidor.conf
39
#Nível de log 3. Existem níveis 0,1,3 e 9. Quanto maior o nível, maior será o detalhamento do
log.
verb 3
mkdir /var/log/openvpn
touch /var/log/openvpn/servidor-status.log
touch /var/log/openvpn/servidor.log
/etc/openvpn do cliente:
touch cliente.conf
#Endereço IP virtual da VPN no cliente e no servidor, ou seja, direção do túnel cliente para o
servidor
ifconfig 10.0.0.2 10.0.0.1
#Chave estática
secret /etc/openvpn/chave.key
comp-lzo
#Nível de log 3. Existem níveis 0,1,3 e 9. Quanto maior o nível, maior será o detalhamento do
log.
verb 3
mkdir /var/log/openvpn
touch /var/log/openvpn/cliente-status.log
touch /var/log/openvpn/cliente.log
/etc/init.d/openvpn start
42
/etc/init.d/openvpn stop
/etc/init.d/openvpn restart
/etc/init.d/openvpn start
/etc/init.d/openvpn stop
/etc/init.d/openvpn restart
Depois de ter iniciado a VPN no servidor e no cliente, foi testada a conexão utilizando
o comando ping no IP criado pela interface virtual no cliente (10.0.0.2), a partir do servidor
(Figura 25):
46
Mas também, foi testada a conexão pingando o IP criado pela interface virtual do
servidor (10.0.0.1), a partir do cliente (Figura 26):
Para fazer acesso ao servidor, utilizou-se do protocolo SSH. Na Figura 27, têm-se os
comandos necessários para acessar o servidor a partir do cliente:
ferramenta foi escolhida, uma vez que possui suporte aos principais protocolos de streaming,
que poderão ser utilizados para a transmissão de um vídeo através da rede, tendo flexibilidade
e facilidade para trabalhar tanto como host servidor como host cliente. Além disso, tem-se
uma gama grande de Codecs e formatos de áudio e vídeo suportados, tanto proprietários como
abertos.
Basicamente, a transmissão de vídeo será feita entre os IPs virtuais de tunelamento
criados durante a configuração da VPN, tanto na máquina servidor (IP 10.0.0.1) como na
máquina cliente (IP 10.0.0.2), garantindo assim a segurança do vídeo a ser transmitido através
de criptografia simétrica de chave estática. Neste caso, o usuário que estiver no lado servidor
selecionará um vídeo a ser transmitido para o usuário cliente, através do tunelamento formado
pela VPN. Portanto, pode-se considerar que este tipo de transmissão está bem próximo de uma
aplicação de streaming de vídeo ao vivo, já que não é o cliente que começa a fazer a primeira
interação, e sim o servidor que primeiramente começar a transmitir o vídeo com destino ao
cliente. O processo pode ser observado na Figura 28.
Teve-se que fazer a instalação do VLC nas duas máquinas (servidor e cliente). Desta
forma, foi utilizado o comando apt-get, principal instalador de pacotes do Ubuntu, tal como
segue:
49
Agora, deve-se selecionar o arquivo de vídeo a ser transmitido. Então, deve-se clicar
no botão “Adicionar” (Figura 30) e depois escolher o vídeo e clicar no botão “Abrir” (Figura
31). No nosso caso, o arquivo a ser transmitido tem o nome “video” e é do formado “AVI”,
possuindo um tamanho de 458,8 MB. O mesmo está localizado no seguinte diretório:
/home/Felipe/Desktop.
50
Após ter selecionado o arquivo, volta-se para a janela anterior, o qual se deve clicar no
botão “Fluxo”, para começar o procedimento de configuração de streaming (Figura 32).
51
Feito isto, define-se o número da porta como 1194, que é a porta padrão da VPN criada
pelo OpenVPN, garantindo a saída de transmissão pela porta da VPN. No campo “Caminho”,
define-se o nome do fluxo de streaming a ser gerado como “/servidor”, no formato de um
diretório. Nesta mesma tela, habilita-se a opção de transcodificação e clica-se no ícone
identificado com um círculo vermelho, como mostra a Figura 35.
53
Figura 36 - Encapsulamento
Na aba “Codec de vídeo”, seleciona-se o tipo de Codec de vídeo de acordo com o tipo
de encapsulamento escolhido. Então, marca-se a opção “Vídeo” e seleciona-se o Codec
“MPEG-4”, que é um dos Codecs de vídeo suportados pelo encapsulamento MPEG-TS, sendo
utilizado na compressão de dados digitais de vídeo transportados pela Internet (Figura 37).
Finalmente na última janela, verifica-se que foi gerada uma linha de saída de fluxo,
que será útil na criação de um Script para que o processo seja automatizado. No entanto, nesta
sessão apenas será realizada a configuração manual, logo, deve-se clicar no botão “Fluxo”,
afim de que o vídeo seja transmitido, como identificado na Figura 40.
57
Para que o cliente possa acessar a transmissão de streaming de vídeo gerado pelo
servidor, deve-se digitar o seguinte comando no terminal do Ubuntu:
vlc rtsp://10.0.0.1:1194/servidor
• 1194: Porta por onde está saindo o fluxo gerado pelo servidor;
Depois de ter executado o comando acima, será aberta uma janela do VLC, onde será
reproduzido o vídeo que foi transmitido pelo servidor. Pode-se observar o acesso, identificado
na Figura 42.
A Automatização do processo foi realizada por meio de Shell Script, que é um arquivo
que armazena diversos comandos e pode ser executado quando houver necessidade. Estes
comandos podem ser comandos do sistema, mas também possuem seus próprios comandos,
como IF, WHILE, FOR, dentre outros.
Portanto, no lado servidor foi criado um Script, na qual automatiza o processo de
seleção do vídeo e configuração de streaming deste vídeo pela VPN. Desta forma, o usuário
entra com o caminho do diretório e o nome do arquivo de vídeo, e este é automaticamente
transmitido dentro do tunelamento criado pela VPN, como todas as configurações vistas
durante a configuração manual. Abaixo, verifica-se o conteúdo do Script com o nome de
“streaming-servidor”, onde os comentários estão identificados com “#”, exceto a primeira
linha que indica para o sistema que será o Shell que irá interpretar os comandos:
#!/bin/bash
echo
echo
echo "----------------------------------------"
echo "Servidor de Streaming de Vídeo"
echo "----------------------------------------"
echo
echo
#Digitar o diretório onde se encontra o vídeo, verificando se o que o usuário realmente digitou
#é um diretório válido e armazenando na variável “diretorio”.
while :
do
echo "Digite o diretório onde se encontra o vídeo: "
read diretorio
if (test -d "$diretorio")
then
break
else
echo
echo "Diretório Inválido !"
fi
done
echo
echo
60
while :
do
echo "Digite o nome do arquivo de vídeo que está no diretório $diretorio: "
read nome
if (test -e "$nome")
then
break
else
echo
echo "Vídeo Inválido !"
fi
done
#vlc $nome = chama o programa vlc, seguido da variável "nome" que contém o nome do
arquivo de vídeo
#rtp{sdp=rtsp://10.0.0.1:1194/servidor}
#sdp = protocolo utilizado para criação de uma sessão de fluxo de dados com o nome
"servidor";
#10.0.0.1 = IP Virtual da VPN do lado Servidor, no qual terá a saída do fluxo de dados,
pois se quer a transmissão dentro da VPN. Este campo foi adicionado ao fluxo gerado para
forçar a saída dos dados apenas pelo tunelamento.
#1194 = porta padrão do OpenVPN, no qual terá a saída dos dados, pois se quer a
transmissão dentro da VPN.
No lado cliente também foi criado um Script, na qual automatiza o processo de acesso
ao vídeo transmitido pelo servidor dentro do tunelamento criado pela VPN. Abaixo, verifica-
se o conteúdo do Script como o nome de “streaming-cliente”, onde os comentários estão
identificados com “#”, exceto a primeira linha que indica para o sistema que será o Shell que
irá interpretar os comandos:
#!/bin/bash
vlc rtsp://10.0.0.1:1194/servidor
Tanto o Script do servidor como o Script do cliente foram copiados para o diretório
“/usr/bin” de sua respectiva máquina, para que o Script tenha capacidade de ser executado de
qualquer lugar do sistema. Então, quando for digitado “streaming-servidor” ou “streaming-
cliente” no Shell do Linux, este irá interpretá-lo como um comando e começará a ser
executado.
Nesta sessão será descrito a metodologia de testes feita para analisar o desempenho do
projeto em questão, que é a transmissão de streaming de vídeo dentro do tunelamento criado
pela VPN, na qual será comparada com outro tipo de aplicação de streaming de vídeo
(Youtube).
Foram testadas as seguintes métricas de desempenho, que indicam o comportamento
de cada aplicação na rede:
62
• Atraso: o tempo que um determinado pacote leva para sair de um host emissor até um
host receptor;
• Jitter (Variação de Atraso): a diferença do atraso de um determinado pacote com o
atraso do seu pacote anterior;
• Largura de Banda: é utilizado para medir a capacidade de transmissão de dados em
uma determinada rede.
4. RESULTADOS E DISCUSSÕES
Com as métricas de desempenho testadas na sessão 3.4, foi possível montar as tabelas
2 e 3 que mostram as métricas de desempenho calculadas através do Wireshark, para os dois
tipos de aplicação.
Através destas tabelas, pode-se observar que existe uma variação entre os valores de
atraso e Jitter das duas aplicações. A aplicação deste projeto apresentou atraso e Jitter
maiores do que a aplicação do Youtube, pois além do vídeo ser transmitido via streaming,
todos os dados estão sendo criptografados quando o mesmo é transmitido dentro do
tunelamento da VPN, levando a uma maior sobrecarga de processamento. Assim, é diferente
do Youtube, no qual os dados não estão sendo criptografados, levando a um atraso e um Jitter
um pouco menor.
A largura de banda é menor na aplicação deste projeto, visto que a mesma está sendo
testada apenas em rede local, onde o consumo de banda e sobrecarga de aplicações rodando é
menor, se comparada à aplicação do Youtube.
Portanto, a aplicação de Streaming com VPN se mostrou eficiente nos testes
realizados, tendo um bom desempenho em relação às métricas analisadas, levando em conta a
questão de criptografia dos dados transmitidos.
64
5. CONCLUSÕES
A pesquisa deste trabalho foi importante para analisar diversas técnicas de segurança
que foram úteis para a configuração da VPN. Houve uma análise dos principais conceitos de
VPN, analisando suas principais características, tecnologias, aplicações, dentre outros
aspectos. Além de um estudo sobre os principais conceitos de streaming de vídeo.
Neste contexto, foi possível configurar uma VPN para a transmissão de streaming de
vídeo entre uma máquina servidora e uma máquina cliente, através de softwares livres, o que
demonstrou rapidez e eficiência nos testes realizados em rede local, apesar do atraso na
transmissão de pacotes, quando comparado com a aplicação de streaming de vídeo do
Youtube.
Além disso, o sistema operacional Ubuntu em conjunto com esses softwares atendeu
as necessidades esperadas para o desenvolvimento do projeto. Portanto, este tipo de aplicação
pode, futuramente, tornar-se útil em nível corporativo, para uma empresa matriz que queira
transmitir um vídeo sigiloso de uma reunião em direção a sua empresa filial, levando a uma
integração de métodos de segurança em VPN e streaming de vídeo, através de uma solução
barata e eficiente.
Uma sugestão para trabalhos futuros seria aprimorar este projeto através da adição de
outros tipos de métodos de segurança na configuração da VPN, como por exemplo, certificado
digital, criptografia assimétrica, dentre outros, comparando e testando esses métodos junto
com streaming de vídeo. Além de realizar a transmissão de streaming de vídeo pela VPN não
apenas em rede local, mas em um nível maior de redes e de computadores, pela qual um
servidor transmitiria vários fluxos de streaming de vídeo para diversos clientes, permitindo
um estudo mais amplo e diversificado.
66
6. REFERÊNCIAS BIBLIOGRÁFICAS
ASSIS, João Mário. Implementando VPN em Linux. 2003. 76f. Monografia de Pós-
Graduação apresentada ao Departamento de Ciência da Computação – Universidade Federal
de Larvas, Larvas.
CATRAMBY, Gabriela Ferraz. VPN – Virtual Private Network. Disponível em: <
http://www.gta.ufrj.br/grad/99_1/gabriela/vpn.html#5>>. Acesso em: 10 de abr. de 2010.
GTA. Grupo de Teleinformática e Automação. SSL: Secure Socket Layer. Disponível em:
<http://www.gta.ufrj.br/grad/00_2/ssl/ssl.htm>. Acesso em: 10 de mai. de 2010.
ROSSI, Marco Antonio G.; FRANZIN, Oswaldo. VPN – Virtual Private Network (Rede
Virtual Privada). Disponível em: <http://www.gpr.com.br/download/vpn.pdf>. Acesso em:
23 de fev. de 2010.