4 - Os Serviços e Aplicações
4 - Os Serviços e Aplicações
4 - Os Serviços e Aplicações
TCP-IP
Avançado
V.2.0
abril de 2004
AVISO IMPORTANTE
Esta apostila é parte integrante do Curso de TCP-IP Avançado,
desenvolvido pela TopMaster para a Embratel.
O objetivo deste documento é apresentar uma versão textual
do conteúdo do curso online para a conveniência do aluno.
Sua leitura não substitui o estudo online, pois este oferece interações e
animações que não podem ser representadas no formato impresso.
Um cliente que deseja acessar uma determinada página deve utilizar sua respectiva URL
(Uniform Resource Locator), como, por exemplo, http://www.embratel.com.br/ index.html, sendo
que:
• http especifica o protocolo responsável pela comunicação entre o browser e o
servidor;
• www.embratel.com.br representa o domínio DNS;
• index.html é a página HTML.
Depois que a página é localizada e copiada do servidor Web para o cliente, o browser interpreta
as marcações (tags) da página e a exibe na tela.
Endereçamento de transporte
O HTTP é formado por dois tipos de mensagens: solicitações do cliente para o servidor e
respostas do servidor para o cliente. As mensagens utilizadas no HTTP são do formato texto. Nas
versões iniciais do protocolo, as mensagens de solicitações e respostas eram bastante simples
(simple-request e simple-response). O HTTP/1.1 implementa mensagens mais complexas (full-
request e full-response).
Uma mensagem de solicitação completa é formada por um método, a URL que deseja-se acessar
e a versão do protocolo HTTP que está sendo utilizada pelo cliente.
Solicitação completa:
<Método> <URL> <Versão do HTTP>
O método, na verdade, indica o comando que está sendo solicitado ao servidor. A tabela, a seguir,
apresenta os principais métodos disponíveis:
Apesar da simplicidade, uma solicitação HTTP pode conter informações adicionais a serem
enviadas ao servidor. Essas informações são descritas como uma seqüência de cabeçalhos
(request headers) que são enviados juntamente com uma solicitação.
O exemplo abaixo ilustra o que o servidor Web irá receber do browser. A primeira linha indica o
método utilizado (GET), a URL contendo o nome do arquivo desejado e a versão do HTTP, no
caso a 1.0. A segunda linha identifica o browser que está sendo usado pelo usuário, no caso o
Navigator (também conhecido como Mozilla), componente do Netscape Communicator. Essa
linha, assim como as demais, contém informações complementares ao pedido HTTP. As quatro
linhas seguintes trazem diversas informações úteis. A terceira linha, por exemplo, indica que o
browser está preparado para receber documentos texto (text/plain), documentos HTML
(text/html) e diversos tipos de imagens, como GIF (image/gif) e JPEG (image/jpeg). Essa lista é
codificada de acordo com regras MIME (Multipurpose Internet Mail Extensions), que identificam
o tipo de documento. Na terceira linha, o */* indica que o browser aceita qualquer tipo de
arquivo.
Uma mensagem de resposta completa é formada pela versão do protocolo HTTP que está sendo
utilizada pelo cliente, por um código de status e uma pequena frase explicando o código de status.
Resposta completa
<Versão do HTTP> <Status> <Frase>
Em outras palavras, o servidor Web, ao receber o pedido, procura o arquivo e verifica a sua
extensão (.html) através de uma consulta a uma grande tabela de tipos MIME que indica o código
que deverá ser usado para cada extensão existente. No caso, o tipo usado foi o text/html,
indicando que o arquivo que está sendo enviado é do tipo HTML. Após as linhas iniciais e uma
linha intermediária em branco, vem o documento propriamente dito ou alguma resposta acusando
erro ou arquivo não encontrado. Essa informação será, então, exibida pelo browser segundo o tipo
MIME informado na linha Content-type. Nesse momento, a página requisitada aparece na tela do
browser do usuário.
O FTP está na camada de aplicação e utiliza o protocolo TCP no transporte. O FTP utiliza o
modelo cliente/servidor, sendo necessário um cliente FTP e um servidor FTP. O servidor FTP
utiliza duas portas pré-definidas: 20 (dados) e 21 (controle). A porta 20 é reservada para a
transferência de dados entre cliente e servidor, enquanto a porta 21 é utilizada para a troca de
comandos.
O usuário tem acesso aos serviços de transferência de arquivo a partir do utilitário FTP, que
geralmente acompanha a maioria dos sistemas operacionais. A tabela, a seguir, descreve os
principais comandos disponíveis no utilitário:
Comando Descrição
Após o comando open, o usuário é solicitado a identificar-se através de um login e senha. Apesar
dessa facilidade, o protocolo FTP não oferece qualquer confidencialidade no envio das
informações, inclusive em relação à senha, que é enviada abertamente. Alguns servidores FTP
permitem o login anônimo, utilizando a conta anonymous.
Exemplo:
Protocolo TFTP
O protocolo TFTP (Trivial File Transfer Protocol), assim como o FTP, também permite a
transferência de arquivos, porém de forma mais simples. Um exemplo de utilização do TFTP
acontece na implementação de boot remoto em estações diskless (sem disco).
O TFTP está na camada de aplicação e utiliza o protocolo UDP no transporte, o que obriga o
TFTP a implementar seus próprios mecanismos de controle de erro. O TFTP também utiliza o
modelo cliente/servidor, sendo necessário um cliente e um servidor TFTP. O servidor TFTP
utiliza apenas a porta 69 para dados e controle.
Um email é muito semelhante a uma carta convencional, sendo formado por um envelope com
informações do destinatário, um cabeçalho com informações do remetente e o texto propriamente
dito. Inicialmente, a área de texto permitia apenas mensagens simples utilizando caracteres ASCII,
no entanto, o protocolo MIME (Multipurpose Internet Mail Extensions) foi concebido para ser uma
extensão, oferecendo suporte a outros alfabetos e mídias, como imagens, som e vídeo.
O protocolo SMTP (Simple Mail Transfer Protocol) está na camada de aplicação e utiliza o
protocolo TCP no transporte. O servidor de email recebe conexões na porta pré-definida 25. Após
estabelecida a conexão, a mensagem é armazenada na caixa postal (mailbox) do destinatário. Por
exemplo, quando enviamos um email para rbmaia@embratel.com.br, a mensagem é armazenada
na mailbox referente ao usuário rbmaia.
O protocolo IMAP (Interactive Mail Access Protocol) permite que um cliente acesse um servidor
de email, onde está sua caixa postal, e apenas consulte suas mensagens no servidor, sem copiá-las
para a máquina local. A grande vantagem do IMAP é permitir que o usuário possa ter acesso à
sua caixa postal em qualquer máquina, ou seja, ele poderá consultar seus emails em um desktop
no trabalho ou em um laptop em casa.
Aplicação
Transporte
Rede
Enlace/Físico
Firewalls deste tipo são utilizados nas bordas da rede, funcionando como um primeiro nível de
defesa, podendo ser implementado no próprio roteador que conecta a rede interna e externa.
A partir de regras previamente definidas, o firewall pode permitir ou não certos tipos de tráfego
entre a rede interna e a Internet. Por exemplo, a tabela abaixo apresenta algumas das regras que
podem ser implementadas em um firewall para a rede 192.168.1.0.
Esse tipo de firewall é conhecido como stateful inspection e atua, basicamente, no controle das
portas de origem e destino. Quando um cliente solicita uma conexão TCP, a porta origem deve
estar entre 1024 e 16384, enquanto a porta destino deverá ter um número entre 0 e 1023.
Aplicação
Transporte
Rede
Enlace/Físico
Por exemplo, uma conexão a um servidor Web utilizará, por default, a porta destino 80 e como
porta origem alguma porta disponível acima de 1023. O firewall stateful controla cada porta
origem utilizada na abertura de uma conexão externa, permitindo respostas apenas para as portas
de onde partiram as solicitações. Esta solução é mais segura que a oferecida por firewalls de rede,
que permitem a entrada de qualquer porta acima de 1023.
Além disso, o firewall stateful reconstrói os pacotes fragmentados e analisa o conteúdo por
completo, impedindo que um conjunto de pacotes aparentemente inócuos se transforme em um
ataque.
Aplicação
Transporte
Rede
Enlace/Físico
Proxy
Como proxy, atua na camada de aplicação e pode desempenhar diversas funções. O proxy pode
ser utilizado como um filtro de protocolos de alto nível, como SMTP e HTTP, pode verificar o
conteúdo de emails e páginas Web, além de decidir se o acesso será permitido ou não. Por
exemplo, se um email contém palavras que não estejam de acordo com as regras de segurança da
empresa, o proxy pode barrar a entrada ou saída de emails que contenham tais palavras. Além
disso, pode impedir a entrada de arquivos anexados e verificar a existência de vírus. Um processo
semelhante pode ser implementado também no tratamento do conteúdo de páginas Web,
impedindo a entrada de páginas que contenham certas palavras, componentes Active X, Applets
Java e código JavaScript.
Enquanto os firewalls de rede podem autenticar as conexões utilizando apenas IPs e portas, que
podem ser facilmente forjadas (IP spoofing), os proxies permitem implementar diversos
mecanismos de autenticação, como login e senha, token e biométrica. Por exemplo, para que os
usuários da rede interna possam ter acesso à Internet, eles devem ser autenticados primeiro no
proxy.
O proxy também pode funcionar como cache de páginas Web. Quando um usuário realiza um
acesso a uma determinada página na Internet, o conteúdo da página é copiado para o proxy e
repassado ao usuário. Quando um outro usuário acessar a mesma página, não será preciso buscá-
la novamente, pois a página estará localizada no cache do proxy e poderá ser entregue ao cliente
sem a necessidade de acesso à Internet. Dependendo da política de atualização de cache do proxy,
é possível que os usuários acessem páginas com conteúdo desatualizado.
NAT
O NAT (Network Address Translation) geralmente é implementado no roteador que liga a rede
interna à Internet e tem duas funções principais: endereçamento e segurança.
Criptografia
A criptografia permite implementar uma série de atributos indispensáveis para uma comunicação
segura em uma rede de computadores, como a Internet. Seguem as implementações permitidas:
• Confidencialidade: é a garantia de que a comunicação entre o transmissor e
receptor seja implementada de forma sigilosa, sem o conhecimento de terceiros.
Por exemplo, quando utilizamos o Internet Banking, a comunicação entre o
cliente e o servidor do banco deve ser feita de forma confidencial;
• Integridade: é a garantia de que a informação trocada entre o transmissor e
receptor não será alterada. Por exemplo, quando enviamos um email, nada
impede que alguém intercepte a mensagem e altere seu conteúdo;
• Autenticidade: é a garantia de que a pessoa que realizou a operação é de fato
aquela que diz ser. Por exemplo, quando recebemos um email de alguém, não
temos qualquer garantia de que a mensagem foi enviada pela pessoa que consta
no cabeçalho do email, pois essa informação é facilmente forjada;
• Não repúdio: é a possibilidade de provar a terceiros a autoria de uma operação
após a mesma ter ocorrido. Por exemplo, quando enviamos um email, a pessoa
que recebe a mensagem não tem como provar quem foi a pessoa que o enviou.
A criptografia moderna está baseada no conceito de chaves criptográficas, que consistem em uma
seqüência de bits. Existem duas técnicas atualmente utilizadas: chaves simétricas e assimétricas.
Chaves simétricas
No esquema de chaves simétricas, também conhecidas como chaves secretas, o transmissor e o
receptor devem possuir a mesma chave criptográfica. O transmissor utiliza sua chave para
criptografar a mensagem, que pode então ser enviada. O receptor utiliza a mesma chave para
descriptografar a mensagem recebida. Caso a mensagem seja interceptada, não será possível ler o
seu conteúdo, a não ser que se descubra a chave secreta utilizada.
Chaves assimétricas
No esquema de chaves assimétricas, também conhecidas como chaves públicas, o transmissor
possui um par de chaves e o receptor outro. O par de chaves é formado por uma chave privada e
uma pública. A chave privada é de conhecimento apenas do dono do par, enquanto a chave
pública é amplamente divulgada e pode ser consultada por qualquer usuário.
Quando o transmissor deseja enviar uma mensagem confidencial, ele utiliza a chave pública do
receptor que está disponível na rede. O receptor, ao receber a mensagem, utiliza sua chave
privada para abrir a mensagem. Caso alguém intercepte a mensagem, não será possível a sua
leitura, pois apenas a chave privada do receptor pode ler uma mensagem criptografada com sua
chave pública.
É importante perceber que é possível utilizar os dois serviços de forma isolada ou combinada, ou
seja, apenas confidencialidade, apenas autenticidade ou os dois serviços simultaneamente.
Autoridades certificadoras
As autoridades certificadoras ou CAs (Certification Authorities) são cartórios virtuais onde as
chaves públicas ficam armazenadas de forma segura, ou seja, podem ser consultadas mas não
alteradas. Verisign, Certisign, Entrust, Serasa, Serpro são apenas alguns exemplos de CA's que
atuam no Brasil.
A chave pública fica armazenada em um certificado digital que, além da chave, possui
informações da certificadora e do dono da chave pública. Existem diferentes tipos de certificados
que podem ser emitidos, como certificados para servidores, email, autoria de software e
delegação de autoridade. O padrão X.509v3 é, atualmente, o padrão para certificados digitais e
define diversas informações que devem compor um certificado.
Informações sobre a CA
Informações sobre o
possuidor da chave pública
Chave pública
Assinatura da CA
Um certificado passa por diversas fases, que se iniciam na sua criação. Os certificados devem ser
periodicamente renovados, caso contrário, são revogados.
Aplicação
SSL
Transporte
Rede
Enlace/Físico
Modelos de IDS
Um IDS pode ser implantado de duas formas, individualmente ou combinadas:
• baseados no host: são sistemas que se prestam principalmente a monitorar os
ataques no nível do próprio computador. Em outras palavras, IDS baseados no
host detectam alterações no sistema de arquivos, nos arquivos de log e em
aplicativos em cada computador. Normalmente, um servidor de administração
central do IDS recebe atualizações de cada host conforme essas mudanças são
detectadas.
Tipos de IDS
Os IDS podem variar desde sistemas corporativos complexos a até aplicativos comuns para o
desktop. Independentemente do nível de complexidade, todos os IDS compartilham características
de operação comuns. Os tipos de IDSs disponíveis e seus métodos de operação são:
Monitor de integridade
Um monitor de integridade acompanha mudanças em estruturas chave do sistema. Por
exemplo, um monitor de integridade básico utiliza arquivos do sistema ou chaves no
registro como "iscas" para rastrear mudanças efetuadas por um invasor. Ainda que sua
funcionalidade seja limitada, monitores de integridade adicionam uma camada extra de
proteção a outras formas de detecção de intrusão.
Entre os atributos que podem ser rastreados por um monitor de integridade temos:
- Adição, exclusão e modificação de arquivos
- Mudança nos atributos dos arquivos (ocultos, somente para leitura, arquivo etc.)
- Último acesso ao arquivo
- Última escrita ao arquivo
- Data de criação
- Tamanho do arquivo
- Verificação por Hash
Scanner de assinatura
Da mesma forma que os scanners de vírus tradicionais, a maioria dos IDS tenta detectar
os ataques com base em um banco de dados de assinaturas de ataques conhecidas.
Quando um hacker tenta um ataque conhecido, o IDS procura por um padrão coincidente
em seu banco de dados.
Quando esta string é detectada, o IDS reage de acordo com as instruções pré-
programadas. Como se trata de um comando CGI básico, o nível de periculosidade deste
ataque é médio, quando muito. Entretanto, se o IDS encontrasse a string:
cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
...então o problema seria mais sério e o servidor está vulnerável. Verificando o arquivo de
log, é possível observar que a requisição phf foi bem sucedida (código 200), o que
significa que o hacker foi capaz de visualizar o conteúdo do arquivo passwd, que contém
as senhas do sistema.
Detetores de anomalias
A detecção de anomalias normalmente compreende o estabelecimento de uma curva
padrão de atividade da rede ou do sistema e de um aviso quando houver um desvio dessa
curva. Posto que o tráfego de rede está constantemente mudando, este tipo de IDS é mais
adequado para implementação baseada em host. A detecção de anomalias fornece alta
sensibilidade porém baixa especificidade, sendo mais útil em máquinas da rede que sejam
absolutamente críticas porém razoavelmente estáticas. Nesta situação, quando um detetor
de anomalias indica alguma mudança com relação à curva padrão de atividade, será
necessária a intervenção humana para investigar as razões. Assim sendo, esta alta
sensibilidade apresenta um alto custo em termos de necessidade de recursos humanos.
Ataques ao IDS
Entender as vulnerabilidades de um IDS e a forma como estas são exploradas é um meio de
garantir uma melhor implementação da segurança na rede do cliente.
Fragmentação
Fragmentação é a forma mais comum de ataque contra IDS. Os pacotes são divididos em
pedaços menores, o que pode enganar um IDS. Um IDS stateful pode recompor os
pacotes fragmentados para a análise porém, conforme aumenta o tráfego, esta operação
consome mais recursos e se torna menos precisa. Quando a técnica de fragmentação é
utilizada, firewalls e IDS normalmente vêem apenas o pacote parcial, o que não ativa
nenhum dos tipos de alarme
Spoofing (fingimento)
É possível forjar (spoof) o número de seqüência do protocolo TCP visto pelo IDS. Por
exemplo, enviando um pacote SYN com um número de seqüência forjado após o início
da conexão, o IDS pode sair de sincronia com o host. Isto acontece porque o host é capaz
Tipos de IDS
Mutação do HTTP
Requisições HTTP complexas podem freqüentemente enganar IDS que simplesmente verificam o
tráfego Web. Se um IDS está procurando pela vulnerabilidade phf conforme abaixo:
GET /cgi-bin/phf
Neste caso, foi solicitado um diretório qualquer e então utilizado o comando /../ para subir para o
diretório pai e então executar o script desejado. Esta técnica é chamada de "directory traversal", e
é atualmente uma das formas de ataque mais comuns.
IDS incorporado
O protocolo IPSec em breve se tornará o padrão para a segurança da transmissão de
dados em rede. A implementação deste padrão permite que pacotes de uma determinada
empresa trafeguem por uma infra-estrutura não confiável como a Internet, ao mesmo
tempo que previne o roubo, a alteração ou mesmo a falsificação de dados por hackers.
Infelizmente para os IDS, o IPSec se torna uma faca de dois gumes: ainda que permita o
acesso seguro a redes corporativas através de VPNs, a criptografia dos pacotes impede a
ação de IDS que vasculham os dados por ataques maliciosos. Dessa forma, se um hacker
conseguir acesso a um cliente remoto, terá um túnel seguro através do qual poderá
acessar a rede corporativa.
Obviamente, para que seja exeqüível, esse método requer que o IDS atue em cada um dos
hosts ao invés de na rede como um todo. Dessa forma, é possível traçar uma curva de
utilização normal para cada host, que certamente será mais previsível do que a da rede
como um todo. Regras específicas de exceção aceitável são configuradas para cada um
dos hosts e o IDS monitora o comportamento da mesma forma que o firewall monitora a
rede.
Quando uma anomalia for detectada, quer no nível da rede, quer no nível da aplicação,
um alerta é enviado para o console central. Este método apresenta uma alta sensibilidade
a ataques porém gera uma quantidade significativa de dados.
O primeiro passo para enviar voz por uma rede de pacotes, como a Internet, é converter a voz,
que é um sinal analógico, em uma informação digital. Esse processo é implementado por um
dispositivo chamado codec, que normalmente utiliza uma técnica conhecida como PCM (Pulse
Code Modulation).
Em 1996, o ITU (International Telecommunications Union) ratificou o padrão H.323, que define
como áudio e vídeo devem ser transmitidos em uma rede IP. Em 1998, o padrão foi atualizado. O
H.323 é na verdade uma família de padrões, sendo vários deles especificações de codecs de áudio
(G.711, G.722, G.723, G.728 e G729). A recomendação baseia-se nos protocolos RTP e RTCP
para o gerenciamento da conexão.
Video-conferência
Vídeo-conferência é um serviço que permite a transmissão de vídeo e áudio entre dois ou mais
pontos em tempo real, utilizando câmeras, monitores, microfones e auto-falantes. Existem
inúmeras aplicações para serviços de vídeo-conferência, como reuniões, ensino à distância,
telemedicina, home office, aplicações jurídicas, laboratórios virtuais e segurança. A vídeo-
conferência reduz principalmente custos, como, por exemplo, o deslocamento e possível estadia
dos envolvidos nos encontros.
Streaming
O áudio e vídeo-conferência são realizados em tempo real. Streaming consiste na possibilidade de
armazenar áudio e vídeo em servidores para, posteriormente, serem transmitidos. Por exemplo,
uma vídeo-conferência pode ser gravada e armazenada para depois ser reapresentada. O vídeo-
streaming pode ser amplamente utilizado para ensino à distância, permitindo que os alunos
possam assistir ou rever uma determinada aula sempre que desejarem.
Uma das características mais importantes em aplicações que utilizam streaming é a possibilidade
de a apresentação ser iniciada antes mesmo do término da transmissão. Por exemplo, quando um
usuário solicita um vídeo, o servidor envia apenas uma pequena seqüência (stream) do vídeo
compactado. Recebido o primeiro stream, o vídeo pode ser descompactado, enquando um
segundo stream está sendo recebido. Após a descompactação, o primeiro stream pode, então, ser
exibido, enquanto o segundo é descompactado e o terceiro recebido. Quando implementado
adequadamente, o streaming permite criar um fluxo contínuo de apresentação, mesmo que a
transmissão não seja contínua.
rtsp://media.example.com:554/twister/audiotrack
Apesar das inúmeras semelhanças, os protocolos RTSP e HTTP guardam certas diferenças. Por
exemplo, enquando o HTTP não guarda o estado da conexão (stateless), o RTSP a mantém.
Enquanto no HTTP apenas o cliente realiza solicitações, no RTSP tanto o cliente quanto o
servidor podem realizar solicitações.
Uma mensagem de solicitação RTSP é formada por um método, pela URL que se deseja acessar e
pela versão do protocolo que está sendo utilizada pelo cliente.
Método Descrição
OPTIONS Permite que clientes e servidores troquem informações sobre as opções que
podem ser aceitas.
Para que um dispositivo possa ser gerenciado remotamente, é necessário que o dispositivo suporte
o protocolo SNMP, ou seja, execute um processo específico para essa função, conhecido como
agente. O agente tem a função de receber e processar comandos remotos, além de armazenar
localmente as informações relacionadas ao dispositivo.
Os agentes dos dispositivos comunicam-se com uma ou mais estações de gerenciamento, que
enviam comandos para os agentes e recebem as respectivas respostas. Uma estação de
gerenciamento é, geralmente, uma máquina dedicada para essa tarefa que processa um software
de gerência de rede, como o HP OpenView, IBM Tivoli NetView ou CA Unicenter.
O protocolo SNMP faz a ligação entre a estação de gerenciamento e os vários agentes, permitindo
que a estação faça uma consulta ao agente, ele processe o pedido e retorne uma resposta. É possível
Cada dispositivo mantém uma base de dados local, onde são armazenadas as variáveis que
descrevem o estado atual do dispositivo e histórico previamente armazenado.
As mensagens de requisição que o agente pode receber da estação de gerenciamento podem ser
dos seguintes tipos:
• Get: O comando Get solicita uma determinada informação do agente sobre o
dispositivo que representa.
• Set: O comando Set modifica o valor de uma determinada informação no agente
• GetNext: Similar ao comando Get, o comando GetNext traz o próximo valor na
ordem léxica da MIB. É útil para os casos onde o tamanho da tabela é
desconhecido.
• GetBulkj: Similar ao comando Get, o comando GetBulk traz todos os valores da
MIB do agente em particular.
Ao receber qualquer uma dessas requisições, o agente executará a função específica: localizar o
valor de um determinado objeto e enviá-lo à estação de gerenciamento ou ajustar o valor do
objeto conforme solicitado.
Além disso, o agente pode enviar à estação de gerenciamento uma mensagem de Trap quando um
evento significativo ocorrer com o dispositivo que representa.