Prévia do material em texto
ESTÁGIO DE SEGURANÇA DA INFORMAÇÃO 5° Centro de Telemática de Área MÓDULO II Protocolos TCP/IP Protocolo IP O datagrama IP Protocolo IP Versão - Este campo controla a versão do protocolo a que pertence o pacote; HL (Header Length) - Este campo indica o comprimento do cabeçalho uma vez que este possui comprimento variável em palavras de 32 bits. Seu valor mínimo é igual a 5; ToS (Type of Service - Tipo de Serviço) - Informa o tipo de serviço que o host deseja. Pode haver diversas combinações de confiabilidade e velocidade desejadas. Esse campo é muito utilizado para prover alguns tipos de QoS; Comprimento Total - Comprimento total do pacote, tanto quadro quanto cabeçalho. O comprimento máximo é de 65.536 Bytes (MTU); Protocolo IP Identificação - Permite ao host de destino determinar a que datagrama pertence um fragmento recém-chegado. Todos os fragmentos de um datagrama contêm o mesmo valor em Identificação; DF (Don't Fragment - Não Fragmente) - Este bit informa aos gateways para não fragmentar este pacote, se não o destino será incapaz de juntar novamente as partes; MF (More Fragments - Mais Fragmentos) - Todos os fragmentos exceto o último possui esse bit ativado. Ele indica que este pacote não é o último de uma seqüência de fragmentos; Offset - Protocolo IP TTL (Time to Live - Tempo de Vida) – Tempo máximo em que um datagrama pode permanecer na rede em segundos, inicialmente configurado como 255. A cada salto este campo é decrementado. No momento que ele atingir o valor zero este pacote será descartado. Foi criado para evitar que pacotes trafeguem indefinidamente na rede; Protocolo - Indica a qual, dentre os diversos processos da camada de transporte, pertence o datagrama. Este campo somente é analisado após a remontagem completa do quadro; Checksum (Soma de Verificação) - Esta verificação diz respeito somente ao cabeçalho; Protocolo IP Endereço de Origem e Endereço de Destino - Indicam o numero de rede e de host da origem e do destino; Opções - Utilizado para informações de segurança, roteamento na origem, relatório de erros, depuração, fixação da hora e outros. Também utilizado para implementação compatível de versões subseqüentes. Protocolo UDP O datagrama UDP Protocolo UDP A mensagem UDP contém: - porta de origem: usada pelo destino em uma resposta - porta de destino: usada na demultiplexação O checksum UDP engloba: - cabeçalho do datagrama UDP + pseudo-header - endereço IP de origem e destino + protocol field + UDP length - pseudo-header é usado para verificar se o pacote UDP atingiu seu destino correto Protocolo TCP O datagrama TCP Protocolo TCP Portas de destino e origem - identificam os programas aplicativos nas extremidades da conexão. Número de Sequência - identifica a posição na cadeia de bytes do transmissor de dados no segmento. Número de Confirmação ou Reconhecimento - identifica o número do octeto que a origem espera receber posteriormente. Tamanho do cabeçalho - tamanho do cabeçalho em bytes. Protocolo TCP Flags- da esquerda para a direita URG – existem dados urgentes ACK - campo de reconhecimento é válido PSH - solicita a função push (envio imediato). RST - restabelecer a conexão SYN - iniciar a conexão FIN - liberar uma conexão Tamanho da Janela - tamanho da janela de recepção, quantidade máxima de bytes que o computador pode receber. Protocolo TCP Checksum – Soma de verificação feita em todo conteúdo do segmento TCP. Para computar o CHECKSUM, o TCP utiliza um pseudo header de 12 bytes adicionado ao datagrama inicial. O pseudo-header não é transmitido e sim descartado logo após o CHECKSUM ser computado. Urgent Pointer – Posição dos dados urgentes dentro do segmento IP, só é válido se o Flag URG estiver ativo. Protocolo TCP Protocolo TCP Protocolo TCP Máquina de Estados Finita (FSM) --> Mecanismo usado para explicar o funcionamento de protocolos complexos. Trata o protocolo como uma máquina virtual que transita por vários estados de operação em resposta a acontecimentos. --> Conceitos essenciais: Estado: A “circunstância” ou “status” que descreve o software do protocolo em um dado instante. Transição: A ação de mudar de um estado para outro. Evento: Algo que provoque a transição entre estados. Ação: Algo que o dispositivo faz em resposta a um evento antes da ocorrência da transição para outro estado. Protocolo TCP Máquina de Estados Finita (FSM) --> O estado das conexões TCP é controlado por mensagens do próprio protocolo. Estas mensagens são enviadas através do ajuste de bits dos flags do cabeçalho do datagrama TCP. --> Estas mensagens são: SYN: Uma mensagem de sincronismo, usada para iniciar e estabelecer uma conexão. Tem este nome porque uma de suas funções é sincronizar os números de sequência entre os dispositivos. FIN: Uma mensagem de término, corresponde a um segmento TCP com o bit FIN ajustado para um, indicando que um dispositivo deseja terminar uma conexão. ACK: Um reconhecimento, indica o recebimento de uma mensagem ou segmento. Protocolo TCP CLOSED LISTEN SYN-SENT Estado Descrição do Estado Evento e Transição Este é o estado inicial padrão antes do estabelecimento de conexões. É um estado fictício, pois representa uma situação onde não há conexões entre os dispositivos Passive Open: Um servidor inicia o processo de estabelecimento de conexão executando um passive open em uma porta TCP. Ao mesmo tempo ele estabelece a estrutura de dados necessária para gerenciar a conexão (Transmission Control Block- TCB)e vai para o estado LISTEN. Active Open, Envia SYN: Um cliente inicializa o processo de estabelecimento de uma conexão enviando uma mensagem SYN e estabelecendo o TCB para a conexão. Vai para o estado SYN-SENT. Um dispositivo, normalmente um servidor, está esperando uma mensagem de sincronismo (SYN) de um cliente qualquer. Ele ainda não enviou o seu próprio SYN. Recebe SYN do Cliente, Envia SYN+ACK: O servidor recebe o SYN do cliente. Envia de volta uma mensagem contendo o ACK e o seu próprio SYN. Vai para o estado SYN-RECEIVED. Um dispositivo, normalmente o cliente, enviou uma mensagem de sincronismo (SYN) e está esperando por uma mensagem SYN do servidor. Recebe SYN, Envia ACK: Se o dispositivo que enviou o SYN recebe um SYN do seu parceiro sem o ACK do seu próprio SYN, ele reconhece o SAYN e vai para o estado SYN-RECEIVED para esperar pelo ACK do seu SYN. Recebe SYN+ACK, Envia ACK: Se o dispositivo que enviou o SYN recebe o ACK e o SYN do seu parceiro, ele reconhece o SYN e vai para o estado ESTABLISHED. Protocolo TCP SYN-RECEIVED ESTABLISHED CLOSE-WAIT LAST-ACK Estado Descrição do Estado Evento e Transição O dispositivo recebeu uma mensagem SYN do parceiro e já enviou o seu próprio SYN. Está agora esperando pelo ACK do seu SYM para finalizar o processo de estabelecimento de conexão. Recebe ACK: Quando um dispositivo recebe um ACK para o SYN que enviou, ele vai para o estado ESTABLISHED. O estado permanente de uma conexão TCP aberta. Os dados podem ser trocados livremente pelos dispositivos. Este estado permanece até que a conexão seja finalizada. Close, Envia FIN: Um dispositivo pode finalizar uma conexão enviando uma mensagem FIN. Vai para o estado FIN-WAIT-1. Recebe FIN: Um dispositivo pode receber uma mensagem FIN do seu parceiro. Ele vai reconhecer a mensagem e mudar para o estado CLOSE-WAIT. O dispositivo recebeu uma solicitação de fechamento de conexão (FIN) do outro dispositivo. Ele deve agora esperar que a aplicação local reconhecer a solicitação e gerar asua própria solicitação. Close, Envia FIN: A aplicação usando o TCP foi informada que o parceiro deseja finalizar a conexão envia uma solicitação CLOSE para o TCP da máquina em que está sendo executada. O TCP então envia um FIN para o dispositivo remoto, que já enviou o seu FIN. O dispositivo vai parao estado LAST-ACK. Um dispositivo que já recebeu a solicitação de fechamento da conexão (FIN), já enviou o ACK, enviou o seu próprio FIN e está esperando pelo ACK do seu FIN. Recebe ACK para FIN: O dispositivo recebe um reconhecimento para a sua solicitação de fechamento. O dispositivo já enviou o FIN, recebeu o ACK, o FIN do parceiro e enviou o ACK, então vai direto para o estado CLOSED. Protocolo TCP FIN-WAIT-1 FIN-WAIT-2 CLOSING TIME-WAIT Estado Descrição do Estado Evento e Transição Um dispositivo neste estado está esperando o ACK para o FIN que enviou, ou está esperando por uma solicitação de fechamento do seu parceiro. Recebe ACK para FIN: O dispositivo recebe um reconhecimento para a sua solicitação de fechamento. Vai para o estado FIN-WAIT-2. Recebe FIN, Envia ACK: O dispositivo não recebe um ACK para o seu FIN, mas recebe um FIN do seu parceiro. Ele reconhece I FIN e vai para o estado CLOSING. Um dispositivo neste estado recebeu o ACK para o FIN que enviou e agora está esperando o FIN do seu parceiro. Recebe FIN, Envia ACK: O dispositivo recebe um FIN. Envia o ACK e vai para o estado TIME-WAIT. O dispositivo recebeu um FIN do seu parceiro, enviou o ACK mas ainda não recebeu o ACK para o FIN que enviou. Recebe ACK para FIN: O dispositivo recebe o reconhecimento para a sua solicitação de encerramento. Vai para o estado TIME-WAIT. O dispositivo recebeu um FIN do seu parceiro, reconheceu ACK, enviou o seu proprio FIN e o ACK. Está esperando somente para garantir que o ACK foi recebido e prevenir a superposição de conexões. Expiração do Timer: Depois do período de espera determinado, o dispositivo vai para o estado CLOSED. Protocolo TCP Protocolo TCP --> Active OPEN e Passive OPEN --> O TCP é baseado no modelo cliente/servidor. A preparação para a conexão difere entre o cliente e o servidor Active OPEN: O processo cliente usando o TCP desempenha um papel ativo e inicia a conexão enviando uma mensagem SYN. Passive OPEN: A aplicação servidora contacta o TCP e diz “Estou aqui esperando por conexões nesta porta”, o servidor só fica escutando a porta. Protocolo TCP Finalidades do estabelecimento da conexão --> Contato e comunicação: Cliente e servidor entram em contato para estabelecer a conexão. --> Sincronização de número de sequência: Cada dispositivo informa ao parceiro o número de sequência que vai utilizar para a primeira transmissão. --> Troca de parâmetros: Certos parâmetros de controle da conexão são trocados pelos dispositivos. Protocolo TCP Cliente Servidor Estado Inicial Ação Estado futuro Estado Inicial Ação Estado futuro CLOSED Cliente não pode fazer nada - CLOSED Servidor executa uma Passive Open LISTEN CLOSED Cliente executa uma Active OPEN criando o TCB e enviando um SYN SYN-SENT LISTEN Servidor espera por contato de um cliente qualquer - SYN-SENT Cliente espera o ACK e o SYN do Servidor - LISTEN Servidor recebe o SYN do Cliente e envia um SYN+ACK SYN-RECEIVED SYN-SENT Cliente recebe o SYN+ACK do Servidor e envia o ACK ESTABLISHED SYN- RECEIVED Servidor espera pelo ACK - ESTABLISHED Cliente espera que o servidor finalize o estabelecimento da conexão - SYN- RECEIVED Servidor recebe o ACK e finaliza o estabelecimento da conexão ESTABLISHED ESTABLISHED Cliente está pronto para a comunicação - ESTABLISHED Servidor está pronto para a comunicação - Protocolo TCP Protocolo TCP Protocolo TCP Sincronização de Números de Sequência --> Os números de sequência são escolhidos de forma aleatória e independente por cada dispositivo. --> Depois de escolher o ISN, o dispositivo o envia ao seu parceiro junto com a mensagem SYN. --> A mensagem de reconhecimento ACK, enviada pelo parceiro trará o ISN escolhido mais um no número do reconhecimento. Protocolo TCP Sincronização de Números de Sequência: Exemplo: 1- Conexão Solicitada pelo cliente: O cliente escolhe um ISN: 4.567. Envia um SYN com número de sequência 4.567. 2- Reconhecimento e Solicitação do Servidor: O Servidor escolhe um ISN: 12.998. Recebe o SYN do Cliente. Envia um SYN+ACK com Número de reconhecimento 4.568 e número de sequência 12.998. 3- Reconhecimento do Cliente: O Cliente envia um ACK com número de reconhecimento12.999. Protocolo TCP Protocolo TCP Além do tamanho máximo da janela, outros parâmetros podem ser trocados durante o estabelecimento da conexão: Window Scale Factor: Permite que dois dispositivos especifiquem janelas maiores que a s possíveis com os 16 bits do cabeçalho. Selective Acknowledgment Permitted: Permite o uso dos reconhecimentos seletivos, só alguns segmentos são retransmitidos. Alternate Checksum Method: Permite que os dispositivos utilizem um mecanismo alternativo para cálculo do checksum. Protocolo TCP Função RESET do TCP: Tem como função trazer confiabilidade e robustez ao TCP. Modo de lidar com conexões parcialmente abertas, ocasionadas por crash em aplicações sem o conhecimento do parceiro. Uma mensagem de RESET se caracteriza pelo valor um (1) no flag RST. Esta mensagem é gerada quando algo inesperado acontece para o software do TCP. Protocolo TCP Alguns casos onde o RESET é usado: Recebimento de um segmento TCP de um dispositivo com o qual não possui uma conexão estabelecida (exceto se o SYN estiver com o valor um). Recebimento de uma mensagem com um número de sequência ou número de reconhecimento inválido ou incorreto, indicando que a mensagem pertence a uma conexão anterior ou maliciosa. Recebimento de uma mensagem SYN em uma porta na qual não existe nenhuma aplicação escutando. Protocolo TCP Recebimento de um segmento RESET: Se o dispositivo estiver no estado LISTEN, o RST é ignorado e ele se mantém neste estado. Se o dispositivo estiver no estado SYN-RECEIVED e estava anteriormente no estado LISTEN (Situação normal em servidores), ele retorna para o estado LISTEN. Em qualquer outra situação, o RST faz com que a conexão seja abortada e o dispositivo vai para o estado CLOSED para esta conexão. O dispositivo vai informar à aplicação que a conexão foi fechada. Protocolo TCP Gerenciamento de conexões ociosas: A especificação do TCP não prevê nenhuma ação para manter conexões ociosas (sem tráfego por longos períodos). Um dos participantes pode cair e o outro não toma conhecimento disso. Há um acordo entre alguns implementadores de que uma conexão ociosa por um longo período deve estar quebrada. O software do TCP frequentemente possui um mecanismo, não oficial, de enviar segmentos nulos periodicamente. Se a conexão estiver válida, o parceiro envia o ACK. Mecanismo conhecido como mensagens de keepalive Protocolo TCP Finalização de conexões: No procedimento normal cada lado termina o seu lado da conexão enviando uma mensagem FIN (finish). A mensagem FIN pode vir em um segmento regular que carrega dados. O dispositivo que recebe o FIN responde com um ACK, indicando que recebeu o FIN. A conexão não é considerada terminada até que ambos os lados terminem o procedimento de fechamento, enviando um FIN e recebendo um ACK. Protocolo TCP Cliente Servidor Estado Inicial Ação Estado futuro Estado Inicial Ação Estado futuro ESTABLISHED Depois de solicitado pela aplicação, cliente envia FIN FIN-WAIT 1 ESTABLISHED Servidor em operação normal - FIN-WAIT 1 Cliente espera pelo ACK e FIN e pode continuar recebendo dados - ESTABLISHED Recebe o FIN e envia o ACK. Informa a aplicação e espera resposta. CLOSE-WAIT FIN-WAIT 1 Recebe ACK e espera FIN do servidor FIN-WAIT 2 CLOSE-WAIT Servidor espera aplicação enviar o close - FIN-WAIT 2 Cliente espera o FIN - CLOSE-WAIT Aplicação envia o close e servidor envia o FIN LAST-ACK FIN-WAIT 2 Cliente recebe o FIN e envia o ACK TIME-WAIT LAST-ACK Servidor espera ACK do cliente - TIME-WAIT Cliente espera um período para servidor finalizar -LAST-ACK Servidor ecebe ACK e fecha a conexão CLOSED TIME-WAIT Timer expira CLOSED CLOSED Conexão é fechada no lado do servidor - CLOSED Conexão é fechada - CLOSED Conexão é fechada - Protocolo TCP Protocolo TCP ESTÁGIO DE SEGURANÇA DA INFORMAÇÃO Perguntas? auxsecseg02@5cta.eb.mil.br Página 1 Página 2 Página 3 Página 4 Página 5 Página 6 Página 7 Página 8 Página 9 Página 10 Página 11 Página 12 Página 13 Página 14 Página 15 Página 16 Página 17 Página 18 Página 19 Página 20 Página 21 Página 22 Página 23 Página 24 Página 25 Página 26 Página 27 Página 28 Página 29 Página 30 Página 31 Página 32 Página 33 Página 34 Página 35 Página 36 Página 37 Página 38 Página 39