CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA



Documentos relacionados
MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Arquitetura de Rede de Computadores

Arquiteturas de Rede. Prof. Leonardo Barreto Campos

Protocolos Hierárquicos


REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Márcio Leandro Moraes Rodrigues. Frame Relay

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de Página

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Revisão. Karine Peralta

Aula 6 Modelo de Divisão em Camadas TCP/IP

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

REDES DE COMPUTADORES

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

Capítulo 6 - Protocolos e Roteamento

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

Redes de Computadores. Prof. André Y. Kusumoto

Arquitetura de Redes de Computadores. Bruno Silvério Costa

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Redes de Computadores. Prof. Dr. Rogério Galante Negri

Interconexão de redes locais. Repetidores. Pontes (Bridges) Hubs. Pontes (Bridges) Pontes (Bridges) Existência de diferentes padrões de rede

CAMADA DE REDE. UD 2 Aula 3 Professor João Carneiro Arquitetura de Redes 1º e 2º Semestres UNIPLAN

Protocolo. O que é um protocolo? Humano: que horas são? eu tenho uma pergunta

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

REDES DE COMPUTADORES. Arquiteturas de Redes

Entendendo como funciona o NAT

Informática I. Aula Aula 22-03/07/06 1

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

MÓDULO 8 Modelo de Referência TCP/IP

Redes de Computadores

Prof. Samuel Henrique Bucke Brito

Arquiteturas de Redes Prof. Ricardo J. Pinheiro

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

Capítulo 7 CAMADA DE TRANSPORTE

Rede de Computadores

INTERNET = ARQUITETURA TCP/IP

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Unidade 2.1 Modelos de Referência

Modelos de Camadas. Professor Leonardo Larback

Comunicando através da rede

Camadas da Arquitetura TCP/IP

Unidade 2.1 Modelos de Referência. Bibliografia da disciplina. Modelo OSI. Modelo OSI. Padrões 18/10/2009

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Firewall. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes. Campus Cachoeiro Curso Técnico em Informática

Serviço de datagrama não confiável Endereçamento hierárquico. Facilidade de fragmentação e remontagem de pacotes

Capítulo 7 CAMADA DE TRANSPORTE

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Veja abaixo um exemplo de um endereço IP de 32 bits:

TECNOLOGIA WEB INTERNET PROTOCOLOS

Cap 01 - Conceitos Básicos de Rede (Kurose)

(Open System Interconnection)

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Prof. Marcelo Machado Cunha Parte 3

Prof. Manuel A Rendón M

CAMADA DE TRANSPORTE

PROJETO DE REDES

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

Assumiu em 2002 um novo desafio profissional como empreendedor e Presidente do Teleco.

Fundamentos de Informática

Fundamentos de Redes de Computadores. Elementos de Redes Locais

Disciplina Fundamentos de Redes. Introdução ao Endereço IP. Professor Airton Ribeiro de Sousa Outubro de 2014

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Protocolos de Redes Revisão para AV I

Capítulo 9. Gerenciamento de rede

Redes de Computadores II INF-3A

3) Na configuração de rede, além do endereço IP, é necessário fornecer também uma máscara de subrede válida, conforme o exemplo:

FACULDADE PITÁGORAS. Prof. Ms. Carlos José Giudice dos Santos

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

18/05/2014. Problemas atuais com o IPv4

Aula 5 Cálculo de máscara e de subredes

Capítulo 4 - Roteamento e Roteadores

Prof. Samuel Henrique Bucke Brito

Aula 4. Pilha de Protocolos TCP/IP:

Roteamento e Comutação

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Fornecer serviços independentes da tecnologia da subrede; Esconder do nível de transporte o número, tipo e a topologia das subredes existentes;

APOSTILA DE REDES DE COMPUTADORES PARTE - I I

3 Qualidade de serviço na Internet

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP

Componentes de um sistema de firewall - I

PROJETO DE REDES

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Redes de Computadores. Trabalho de Laboratório Nº7

1 Redes de Computadores - TCP/IP Luiz Arthur

Redes de Computadores II. Professor Airton Ribeiro de Sousa

Fernando Albuquerque - fernando@cic.unb.br REDES LAN - WAN. Fernando Albuquerque (061) fernando@cic.unb.br

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

FIREWALL. Prof. Fabio de Jesus Souza. Professor Fabio Souza

Máscaras de sub-rede. Fórmula

Redes de Computadores

Interconexão redes locais (LANs)

PARANÁ GOVERNO DO ESTADO

Capítulo 10 - Conceitos Básicos de Roteamento e de Sub-redes. Associação dos Instrutores NetAcademy - Julho de Página

Firewall. Alunos: Hélio Cândido Andersson Sales

Gerencia de Rede (Desempenho) Professor: Guerra (Aloivo B. Guerra Jr.)

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Transcrição:

CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES MAURICIO KUNITAKI IPTABLES: UMA OPÇÃO PARA GERENCIAMENTO DE SEGURANÇA, TRÁFEGO DE REDE E QUALIDADE DE SERVIÇO LINS SP 2º SEMESTRE/2013

2 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES MAURICIO KUNITAKI IPTABLES: UMA OPÇÃO PARA GERENCIAMENTO DE SEGURANÇA, TRÁFEGO DE REDE E QUALIDADE DE SERVIÇO Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnólogo em Redes de Computadores. Orientador: Prof. Me. Alexandre Ponce de Oliveira LINS SP 2º SEMESTRE/2013

3 MAURICIO KUNITAKI IPTABLES: UMA OPÇÃO PARA GERENCIAMENTO DE SEGURANÇA, TRÁFEGO DE REDE E QUALIDADE DE SERVIÇO Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins, como parte dos requisitos necessários para a obtenção do título de Tecnólogo em Redes de Computadores sob orientação do Prof. Me. Alexandre Ponce de Oliveira. Data de aprovação: / / Orientador (Prof. Me. Alexandre Ponce de Oliveira) Examinador 1 Examinador 2

A minha família que sempre me apoiou. A minha namorada Elisangela, que acreditou em mim mesmo quando nem eu acreditava e com seu amor me deu forças para continuar. A minha avó Rosa in memorian. 4

5 AGRADECIMENTOS A Deus, que me deu o dom da vida, me capacitou e permitiu a realização desse sonho. Agradeço especialmente ao meu orientador professor Alexandre Ponce de Oliveira pelos ensinamentos, incentivos, esclarecimentos e principalmente por despertar em mim o gosto pela área de redes de computadores. Agradeço também ao professor Julio Lieira que além de contribuir com este trabalho e enriquecimento no aprendizado durante esses três anos, foi muito importante no meu crescimento pessoal. Aos amigos Cesar e Jairo pelo companheirismo e apoio nos bons e maus momentos. Agradeço a todos os professores e colegas de classe que de alguma maneira contribuíram para a conclusão desse ciclo da minha vida. Tenho certeza que vou levar os valores, aprendizados e amizades adquiridas comigo para sempre.

6 RESUMO O objetivo deste trabalho foi avaliar a ferramenta iptables na área de segurança, gerenciamento de tráfego e qualidade de serviço em redes de computadores. O gerenciamento dos recursos e a necessidade de preservar a qualidade dos serviços de rede se tornam mais importantes à medida que são essenciais para a realização de tarefas, que hoje, agilizam processos e diminuem custos, principalmente em ambientes empresariais. Desta forma procurou-se apresentar uma opção de ferramenta livre que pode ser utilizada em diferentes aspectos da gerência de rede de computadores. O iptables é uma ferramenta nativa do Kernel do Linux, desenvolvida para manipulação das tabelas do módulo Netfilter e não requer grande poder computacional. Foram aplicadas técnicas de marcação de pacotes com o iptables, que em conjunto a outras ferramentas livres ofereçam um resultado satisfatório nos aspectos avaliados. Neste trabalho foram abordados conceitos de redes de computadores, qualidade de serviço e segurança e, apresentada pesquisa sobre as ferramentas iptables, Traffic Control e a disciplina de fila Hierarquical Token Bucket. O ambiente de testes foi estruturado através do uso de máquinas virtuais, para simular as máquinas: Servidor, Cliente e Atacante. Para o desenvolvimento dos testes faz-se necessário um Sistema Operacional Linux com Kernel na versão 4.2 ou superior. Palavras Chave: iptables, QoS, gerenciamento de rede, tráfego de rede, segurança.

7 ABSTRACT The objective of this work was to evaluate the tool iptables in the area of security, traffic management and quality of service. The management of resources and the need to preserve the quality of the network services are becoming more important the extent that they are essential for the achievement of tasks, which today, streamline processes and reduce costs, especially in corporate environments. In this way we sought to introduce an option for low-cost tool that can be used in different aspects of the management of network computers. The iptables is a native tool from the Linux Kernel, developed for manipulation of tables of Netfilter module and it doesn t require large computational power. Techniques for packet marking with the iptables, which in conjunction with other free tools offer a satisfactory result to the aspects assessed were applied. In this work were discussed concepts of computer networks, quality of service and safety and, presented research on the tools iptables, Traffic Control and discipline of queue Hierarquical Token Bucket. The test environment were structured through the use of virtual machines to simulate the machines: Server, Client, and Attacker. For the development of tests it is necessary a Linux Operating System with Kernel version 4.2 or higher. Keywords: iptables, free software, network management, Linux.

8 LISTA DE ILUSTRAÇÕES Figura 1.1 Camadas do modelo OSI Figura 1.2 Camadas do modelo TCP/IP Figura 1.3 Campos do datagrama IP. Figura 2.1 Filas no roteador Figura 2.2 Funcionamento do protocolo RSVP Figura 3.1 Tipos de incidentes reportados á CERT.br em 2012 Figura 3.2 Posicionamento do firewall na rede de computadores Figura 4.1 Localização do Kernel Figura 4.2 Esquema da tabela Filter Figura 4.3 Esquema da Tabela NAT Figura 5.1 Organização da rede de testes Figura 5.2 Cenário de testes de segurança Figura 5.3 Handshake de três vias Figura 5.4 Varredura de portas com êxito Figura 5.5 Listagem das regras ativas do iptables no firewall Figura 5.6 Varredura de portas sem êxito Figura 5.7 Log do sistema operacional Figura 5.8 Lista de portas alteradas Figura 5.9 Log de Ping Flood Figura 5.10 Hierarquia de classes no HTB Figura 5.11 Teste de velocidade Host A Figura 5.12 - Teste de velocidade Host B Figura 5.13 - Teste de QoS no serviço de FTP

9 LISTA DE TABELAS Tabela 5.1 - Configuração das máquinas virtuais utilizadas Tabela 5.2 Definições de parâmetros do TC

10 LISTA DE ABREVIATURAS E SIGLAS ANSI - American National Standards Institute CERT - Centro de estudos, reposta e tratamento de incidentes de segurança no Brasil CBQ - Class Based Queueing DNS - Domain Name System DOS - Denial of Service FCC - Federal Communications Commission FTP - File Transfer Protocol HTB - Hierarquical Token Bucket ICANN - Internet Corporation for Assigned Names and Numbers ISO - International Organization for Standardization IPV4 Internet Protocol Version 4 IPV6 Internet Protocol Version 6 IEEE - Institute of Electrical and Electronics Engineers IETF - Internet Engineering Task Force IP - Internet Protocol ISP - Internet Service Provider LAN - Local Area Network MAN - Metropolitan Area Network NAT - Network Address Translation PFIFO - Packet First in First Out QoS Quality of Service OSI - Open System Interconnection RSVP - Resource Reservation Protocol SLA - Service Level Agreement SFQ - Classless Queuing Disciplines

11 SMTP - Simple Message Transfer Protocol SSH Security Shell TC - Traffic Control TCP - Transfer Control Protocol TOS - Type of Service ITU International Telecommunication Union VoIP - Voice over Internet Protocol WAN - Wide Area Network

12 LISTA DE SIMBOLOS @ - Arroba # - Sustenido

13 SUMÁRIO INTRODUÇÃO... 14 1 SOFTWARE DE REDES... 16 1.1 ARQUITETURA DE REDE... 16 1.2 CAMADAS... 17 1.2.1 Interface da camada... 17 1.2.2 Serviços das camadas... 17 1.2.3 Serviço com conexão e sem conexão... 18 1.2.4 Vantagens e desvantagens das camadas... 19 1.3 PROTOCOLOS... 19 1.3.1 Padronização de protocolos... 20 1.4 Modelos de referência... 21 1.4.1 Modelo de referência OSI... 21 1.4.2 Modelo TCP/IP... 23 1.4.3 Comparações entre modelo OSI e TCP/IP... 24 1.5 PROTOCOLO IP... 25 1.5.1 ENDEREÇO IP... 26 2 QOS... 30 2.1 SURGIMENTO DA QoS... 30 2.2 DEFINIÇÃO DE QOS... 31 2.3 PARÂMETROS DE QOS... 32 2.4 TÉCNICAS DE QOS... 33 2.4.1 Técnicas de controle de congestionamento... 33 2.4.2 Serviços integrados e serviços diferenciados... 34 3 SERVIÇOS DE REDE... 37 3.1 CONTROLE DE TRÁFEGO... 37 3.2 FIREWALL... 38 3.2.1 Firewall filtro de pacotes... 39 4 IPTABLES... 41 4.1 KERNEL... 41 4.2 MÓDULO NETFILTER... 42

14 4.3 TABELAS... 42 4.3.1 Tabela Filter... 42 4.3.2 Tabela NAT... 43 4.3.3 Tabela Mangle... 44 4.4 REGRAS... 44 4.5 CHAIN... 44 4.6 FERRAMENTA IPTABLES... 45 4.6.1 Comandos... 45 4.6.2 Alvo... 48 4.6.3 Ação... 49 5 IMPLEMENTAÇÃO... 49 5.1 CENÁRIO... 50 5.2 SEGURANÇA... 51 5.2.1 Ataque de varredura de portas... 51 5.2.2 Teste de segurança contra ataque de varredura de portas... 52 5.2.3 DoS: Ping Flood... 55 5.2.4 Testes de segurança contra ataque de Ping Flood... 56 5.3 CONTROLE DE TRÁFEGO... 57 5.3.1 Cenário... 57 5.3.2 Ferramentas para controle de tráfego... 58 5.3.3 Testes de controle de tráfego... 58 5.4 QoS... 63 5.4.1 Teste de qualidade de serviço... 63 CONCLUSÃO... 66 REFERÊNCIAS BIBLIOGRÁFICAS... 67 ANEXOS... 69

14 INTRODUÇÃO A importância de se garantir qualidade e segurança em uma rede de computadores é inquestionável, hoje ela é um dos principais meios de comunicação e interliga milhões de pessoas ao redor do mundo por diversos dispositivos e através de diferentes meios. Segundo a International Telecommunication Union União (ITU, 2012), em 2011 haviam 2,3 bilhões de pessoas online na Internet. Serviços oferecidos pelas redes como o compartilhamento de arquivo, Internet e e-mail são constantemente utilizados por empresas e são essenciais para o seu funcionamento e competitividade no mercado. A grande demanda na utilização desses serviços gera um intenso tráfego nas transmissões de dados em redes de computadores, esses dados por sua vez precisam ser transportados de forma rápida, segura e de maneira que não cause lentidão para os usuários interligados na rede, assim evita-se o congestionamento. (TANENBAUM; WETHERALL, 2011) Segundo Bernardes (2011), na busca de um melhor desempenho na rede e nos serviços que são disponibilizados, bem como a segurança das informações, os profissionais responsáveis pelo gerenciamento de redes de computadores buscam ferramentas automatizadas que os auxiliem neste gerenciamento para identificar os gargalos e evitar o congestionamento em redes de computadores, uma vez que realizar esse trabalho de forma manual é demorado, pouco efetivo e custoso para a empresa. O objetivo principal deste trabalho é demonstrar o funcionamento da ferramenta livre iptables, nativa no Kernel do Linux a partir da versão 2.4, em diferentes áreas da administração de redes, como por exemplo a área de segurança, gerenciamento de tráfego e Quality of Service (QoS) ou qualidade de serviço. Para atingir o objetivo principal foram realizados estudos sobre redes de computadores e sobre as áreas mencionados a fim de compreender seus funcionamentos, a partir disso, implementar regras que atinjam um nível aceitável de qualidade e segurança nas respectivas áreas. Este trabalho está organizado da seguinte forma: o primeiro capítulo descreve os conceitos relacionados a redes de computadores, o segundo capítulo aborda a

15 definição e as ferramentas existentes de QoS, o terceiro capítulo descreverá o que é e como atuam o serviço o Firewall e controle de tráfego. O quarto capítulo descreve a ferramenta iptables e suas características. O estudo de caso é descrito no quinto capítulo, onde é apresentado o cenário onde os testes foram aplicados, as técnicas utilizadas e os resultados obtidos, por fim tem-se as considerações finais do trabalho.

16 1 SOFTWARE DE REDES Inicialmente, quando a principal função dos computadores era o processamento de cálculos matemáticos, todo o investimento em tecnologia se destinava aos hardwares, visto que o tipo de informação processado não carecia de muito cuidado. Com o advento de novos serviços aos computadores e a interligação deles por meio de redes de computadores, informações mais complexas começaram a ser processadas e compartilhadas, desse modo tornou-se inviável todo o processo de comunicação depender somente de hardwares, assim surgiu a necessidade dos softwares nas redes de computadores. (FOROUZAN, 2008) Assim sendo, as redes de computadores são formadas por um conjunto de hardwares e softwares. Hardwares de rede é toda infraestrutura física usada no transporte de sinais de um local para o outro e softwares são programas escritos em linguagem de alto nível que viabilizam essa comunicação, são os protocolos. (FOROUZAN, 2008) Este capítulo tem como objetivo mostrar os conceitos da arquitetura dos softwares de rede e a finalidade de suas camadas, a importância dos protocolos e dos modelos de arquitetura. 1.1 ARQUITETURA DE REDE Nos anos 60, muitos fabricantes de computadores tinham mais de uma linha de produto que eram totalmente incompatíveis entre si. Para os fabricantes acabava sendo muito custoso o desenvolvimento e a manutenção dessas duas linhas completamente diferentes e entre os usuários havia o problema de incompatibilidade de softwares. Para resolver isso, a IBM criou o System/360, máquina que era compatível por software, pois tinham a mesma arquitetura e se diferenciavam somente no preço e desempenho, assim os programas executariam em qualquer máquina, solucionando os dois problemas. (TANENBAUM; WOODHULL, 2002) Em suma, a arquitetura de rede tem o mesmo propósito. Ela é o conjunto de camadas e protocolos que contem informações suficientes para que o desenvolvedor construa um hardware ou software para cada camada de forma que ele funcione corretamente de acordo com o protocolo utilizado, garantindo, dessa maneira, interoperabilidade entre todas as entidades.

17 1.2 CAMADAS As camadas são estruturadas hierarquicamente, ou seja, uma camada sobre a outra formando uma pilha. Cada uma possui seus próprios protocolos. Características como número de camadas, nome e função se diferem de uma arquitetura para outra. Segundo Kurose e Ross (2010), uma camada de protocolo pode ser implementada em software, em hardware ou em uma combinação dos dois. Como cada camada oferece um serviço, ela pode atuar em lugares diferentes uma das outras, comumente as camadas inferiores de uma hierarquia atuam nos hardwares e as camadas mais altas nos softwares de aplicação. A comunicação entre as camadas se dá entre os níveis, a camada 2 da máquina emissora, por exemplo, se comunica com a camada 2 da máquina receptora. Apesar das camadas só se comunicarem com o seu par, esta comunicação não acontece diretamente, os dados são transferidos pelas camadas até a camada mais baixa onde se encontra o meio físico e por ela ocorre a comunicação de fato. (TANENBAUM; WETHERALL, 2011) No lado emissor cada camada utiliza o serviço da camada imediatamente inferior a ela, de cima para baixo, já no lado receptor a ordem inverte, cada camada faz uso do serviço da camada superior, de baixo para cima. (FOROUZAN, 2008) 1.2.1 Interface da camada Entre cada nível de camada uma interface define quais serviços a camada inferior deve prestar a superior, essa definição precisa ser bem clara, pois faz com que o volume de informações diminua entre as camadas e facilite a substituição de implementação de uma camada por uma implementação completamente diferente. (TANENBAUM; WETHERALL, 2011) 1.2.2 Serviços das camadas Segundo Tanenbaum e Wetherall (2011), um serviço é um conjunto de operações que a camada oferece à camada localizada acima dela. O serviço

18 determina quais operações a camada está apta para executar em nome de seus usuários. Tanenbaum e Wetherall (2011), acrescentam algumas questões importantes relacionadas aos serviços das camadas, primeiramente todas as camadas necessitam identificar os transmissores e receptores. Constantemente as redes são constituídas por vários computadores, assim sendo, é necessário um modo em que um processo de uma máquina possa identificar com quem ele deseja estabelecer comunicação. Por conseguinte, se faz necessário as camadas e aos protocolos que nelas atuam estabelecer como ocorrerá a transferência de dados. Os dados podem ser transmitidos em ambos os sentidos ou em apenas uma direção. Tanenbaum e Wetherall (2011), citam também a questão de controle de erros, os circuitos de comunicação são passiveis a interferência, assim, comprometendo a integridade dos dados. O receptor deve ter a capacidade de notificar o transmissor quais mensagens foram recebidas com erros e quais não. Por fim, Tanenbaum e Wetherall (2011), consideram, além dos citados, mais dois problemas que precisam ser resolvidos em diversos níveis de camadas, a velocidade que um transmissor envia mensagens e o tamanho das mensagens enviadas. Para impedir que um transmissor rápido envie uma quantidade excessiva de dados a um receptor mais lento, são utilizadas técnicas de controle de fluxo. Já quando um pacote muito grande é recebido, é preciso fragmentá-lo e remontá-lo ao fim da transmissão. 1.2.3 Serviço com conexão e sem conexão Tanenbaum e Wetherall (2011), citam dois tipos de serviço que uma camada pode prestar a camada superior, os serviços com conexão e os serviços sem conexão. Nos serviços com conexão é traçado uma rota previamente entre as duas máquinas que desejam trocar informações, todos os dados percorrem o mesmo caminho em todas as comunicações entre essas duas máquinas, normalmente os dados chegam na ordem em que foram enviados.

19 Já os serviços sem conexão, onde cada fragmento de dado pode percorrer um caminho diferente até chegar ao destino. Cada pacote tem o endereço do destino e o roteamento é feito dinamicamente, frequentemente os pacotes chegam fora de ordem, ficando por responsabilidade das camadas superiores a tarefa de remontar a mensagem. 1.2.4 Vantagens e desvantagens das camadas Uma das vantagens do uso do sistema de camadas é a flexibilidade que a rede de computadores adquire, tornando fácil a alteração de algum aspecto da rede, o meio de transmissão por exemplo. (TANENBAUM; WETHERALL, 2011) Como observou Kurose e Ross (2010), alguns pesquisadores e engenheiros de rede, no entanto, vêem algumas desvantagens potenciais no sistema de camadas, a primeira é a duplicação de funcionalidade entre as camadas, só para exemplificar, mais de uma camada pode ter o mesmo serviço de recuperação de erros. Outra possível desvantagem é que para desenvolver um serviço, a camada pode precisar de mais informações e estas estarem inacessíveis à ela. 1.3 PROTOCOLOS A composição de uma rede de computadores dificilmente é feita por entidades com as mesmas características de hardware e software. Por entidades entende-se como qualquer dispositivo com capacidade de enviar e receber dados. (FOROUZAN, 2008) Em uma Local Area Network (LAN), que é uma rede local privada, um escritório, por exemplo, seria possível já que o numero de máquinas é pequeno, mas em uma Metropolitan Area Network (MAN) ou Wide Area Network (WAN) que são redes de grande porte seria inviável. Para que haja uma comunicação entre as entidades é preciso que elas falem a mesma língua, ou seja, estabeleçam um acordo de como acontecerá a conversação. O protocolo é um conjunto de regras de comunicação que atuam nas camadas, essas regras são estabelecidas e devem ser respeitadas para que a comunicação entre duas entidades ocorra sem problemas. A atual necessidade de

20 interconectividade a nível internacional é uma das justificas da importância dos protocolos. Ainda segundo Forouzan (2008), existem três elementos chave de um protocolo, são eles: Sintaxe: a estrutura ou formato dos dados e a ordem pela qual são apresentados; Semântica: diz como deve ser interpretada cada sessão de bits e o que deve ser feito com base nessa interpretação; Temporização: faz referência a duas características, quando e em qual velocidade os dados devem ser enviados. 1.3.1 Padronização de protocolos Forouzan (2008) diz que existem dois tipos de padrões em comunicação de dados: De facto: é adotado como padrão, porém ainda não foi aprovado por um comitê organizado. Frequentemente é estabelecido por fabricantes de equipamentos com o intuito de definir a funcionalidade de algum produto ou tecnologia. De jure: são os padrões reconhecidos por um corpo ou comitê organizado. Além da forma de imposição por parte dos fabricantes e consequentemente aceitação, Tanenbaum e Wetherall (2011) consideram a existência de órgãos que trabalham em conjunto na criação e estabelecimento dos padrões, são eles os comitês de criação de padrões, fóruns e agências de regulamentação. A seguir temse a descrição de alguns deles: International Organization for Standardization (ISO): é uma organização fundada em 1946 e formada por membros de diversos países sendo que a maioria desses membros fazem parte dos comitês de criação de padrões de seu país. Suas normas internacionais abrangem vários aspectos da tecnologia como, segurança alimentar, computadores e cuidados com a saúde. American National Standards Institute (ANSI): organização privada sem fins lucrativos e sem vínculo com o governo dos Estados Unidos, porém todas suas atividades são reconhecidas e tem apoio do governo americano. Institute of Electrical and Electronics Engineers (IEEE): é a maior sociedade

21 profissional de engenheiros no mundo. Ajuda no avanço da teoria e da qualidade dos produtos nos campos da engenharia elétrica e eletrônica. Como meta, a IEEE supervisiona o desenvolvimento e a adoção de padrões internacionais para a computação e as comunicações. Fóruns: foram criados por grupos especializados com o intuito de agilizar os acordos e facilitar os processos de padronização. Surgiu pelo fato dos comitês de padronização, como consequência da rigidez em seus procedimentos, não acompanharem o rápido desenvolvimento das tecnologias de telecomunicações. São formados por representantes de corporações e trabalham em conjunto com as universidades e os usuários para testar, avaliar e padronizar novas tecnologias. Agências reguladoras: têm como propósito proteger o interesse público regulamentando as comunicações. Toda e qualquer tecnologia de comunicação está sujeita a regulamentação, seja rádio, televisão e a cabo. A Federal Communications Commission (FCC) é uma dessas agências. 1.4 Modelos de referência Na prática, são dois os modelos de referencias mais conhecidos, o modelo Open System Interconnection (OSI) e modelo Transfer Control Protocol/Internet Protocol (TCP/IP) 1.4.1 Modelo de referência OSI Segundo Tanenbaum e Wetherall (2011) o modelo OSI surgiu como primeiro passo dado pela ISO na tentativa de padronizar internacionalmente os protocolos utilizados nas camadas. Os protocolos do modelo OSI raramente são usados e o modelo em si nunca foi implementado seriamente, mas ainda é amplamente usado como referência, pelo fato de não especificar os serviços e os protocolos utilizados, mas sim informar o que cada camada deve fazer. Esse modelo possui sete camadas, na sequência será dada uma descrição de cada camada. A primeira camada do modelo de referência OSI é a camada física. Ela é responsável pela transmissão dos bits pelo canal de comunicação. Deve garantir que se uma estação enviar um bit 1 seja recebido o mesmo bit 1 e não um bit 0. Para isso os protocolos devem levar em consideração fatores como a voltagem que

22 representará os bits, o tempo de duração de cada bit, o método de transmissão que será utilizado e como será iniciada e encerrada a conexão. (TANENBAUM; WETHERALL, 2011) A segunda camada é a camada de enlace de dados, ela detecta e corrige possíveis erros que podem acontecer na transmissão do meio físico. A verificação de integridade é possível porque ela divide os dados em quadros e adiciona cabeçalhos para controle de erros. Ela também cuida das retransmissões dos quadros danificados ou perdidos ao longo do caminho. Outra função importante na camada de enlace de dados é o controle de fluxo. (TANENBAUM; WETHERALL, 2011) A camada de nível três é a camada de rede. Ela controla as operações da sub-rede e é responsável pelo roteamento dos pacotes de origem até o destino. As rotas podem ser estáticas ou podem ser determinadas no início de cada conversação. (TANENBAUM; WETHERALL, 2011) A camada de transporte recebe os dados da camada de sessão, se houver necessidade divide os dados em unidades menores e repassa esses dados a camada inferior a ela, a camada de rede. Esse serviço deve ser feito com eficiência, isolando as camadas superiores de qualquer possível alteração de tecnologia de hardware na rede. (TANENBAUM; WETHERALL, 2011) A quinta camada é a camada de sessão. Ela permite que duas máquinas estabeleçam sessões entre elas, uma sessão pode oferecer vários serviços como controle de diálogo, isso estabelece quem deve transmitir em um determinado momento e a sincronização da comunicação, que através de pontos de checagem consegue restabelecer a comunicação de onde parou após ela ser interrompida bruscamente.(tanenbaum; WETHERALL, 2011) A camada de apresentação é a sexta, ela cuida da sintaxe e da semântica das informações trocadas. Antes de serem transmitidas as informações são convertidas em bits, a camada de apresentação faz essa tradução garantindo o entendimento independente do sistema de codificação utilizado. (TANENBAUM; WETHERALL, 2011) A camada mais elevada do modelo OSI é a camada de aplicação, ela permite que o usuário, seja uma pessoa ou um software tenha acesso a rede, é a interface entre o processo de usuário e os protocolos de comunicação, como e-mail e acesso a páginas web. (TANENBAUM; WETHERALL, 2011)

23 figura 1.1. Todas as camadas do modelo OSI descritas anteriormente são exibidas na Figura 1.1 Camadas do modelo OSI Fonte: Tanenbaum e Wetherall, 2011, p.28 1.4.2 Modelo TCP/IP O modelo TCP/IP possui 4 camadas, são elas: camada de enlace, Internet, transporte e aplicação. A posição de cada uma delas no modelo pode ser visualizada na figura 1.2. Figura 1.2 Camadas do modelo TCP/IP Fonte: Tanenbaum e Wetherall, 2011, p.28 Segundo Tanenbaum e Wetherall (2011) o modelo TCP/IP surgiu na primeira rede de computadores geograficamente distribuída, a ARPANET. A ARPANET era

24 patrocinada pelo Departamento de Defesa dos Estados Unidos e interligava centenas de universidades e repartições públicas por meio de linhas telefônicas dedicadas. Os problemas começaram a surgir quando foram criadas as redes de rádio e satélite, pois os protocolos usados levaram a necessidade de uma nova arquitetura onde o objetivo principal era interligar várias redes de maneira uniforme. O Departamento de Defesa tinha outra preocupação, a que seus equipamentos de sub-rede fossem destruídos em razão de um ataque motivado pela guerra fria, o que causaria o fim da rede, então foi definido outro requisito para a arquitetura, a rede deveria se manter ativa mesmo com falha em alguns equipamentos que compunham a sub-rede. Assim nasceu o modelo TCP/IP. (TANENBAUM; WETHERALL, 2011) Na primeira camada do modelo TCP/IP, camada de enlace, existe uma lacuna, o modelo não especifica exatamente o que deve ser feito, exceto que os hosts precisam se conectar a rede utilizando algum tipo de protocolo. (TANENBAUM; WETHERALL, 2011) A camada de Internet é a segunda camada, ela abrange toda a arquitetura e é baseada em serviços sem conexão, Suas funções se assemelham com a camada de rede do modelo OSI. Uma delas é permitir que os hosts enviem pacotes em qualquer rede e garantir que eles cheguem ao seu destino de forma independente, possivelmente chegarão fora de ordem, cabendo as camadas superiores a função de organizá-las. O protocolo IP atua nessa camada. (TANENBAUM; WETHERALL, 2011) A camada de transporte é a terceira camada, é nela que atua o protocolo TCP que em conjunto com o protocolo IP dá nome ao modelo. Sua função é permitir que as entidades de origem e destino estabeleçam comunicação. (TANENBAUM; WETHERALL, 2011) Os protocolos de níveis mais altos ficam na camada de aplicação, como o protocolo de terminal virtual TELNET, o protocolo de transferência de arquivos File Transfer Protocol (FTP), e o de correio eletrônico Simple Mail Transfer Protocol (SMTP).(TANENBAUM; WETHERALL, 2011) 1.4.3 Comparações entre modelo OSI e TCP/IP Os modelos OSI e TCP/IP surgiram de formas distintas e por isso se

25 diferenciam em alguns aspectos. O modelo OSI foi criado antes dos protocolos nele implementados e teve evoluções conforme novas tecnologias surgiam, em razão disso esse modelo é mais genérico e flexível. (TANENBAUM; WETHERALL, 2011) Já o modelo TCP/IP foi criado baseado em protocolos, e suas camadas são praticamente uma descrição de cada um desses protocolos. A consequência disso é um modelo que dificilmente se adapta a outras pilhas, não tendo utilidade para descrever outras redes que não utilizam os protocolos TCP/IP. (TANENBAUM; WETHERALL, 2011) Apesar do número de camadas diferentes, existem três camadas que estão presentes nos dois modelos, a camada de rede, transporte e aplicação. No modelo OSI a camada de rede é compatível com a comunicação sem conexão e comunicação orientada a conexão, mas na camada de transporte só aceita a comunicação orientada a conexão. No TCP/IP a camada de rede só aceita comunicação sem conexão, mas aceita os dois modos na camada de transporte, oferecendo ao usuário a opção de escolha. Tanenbaum e Wetherall (2011) afirmam que provavelmente a maior contribuição do modelo OSI é tornar explicito a distinção entre três conceitos fundamentais em que o modelo se fundamenta, os serviços, as interfaces e os protocolos. A definição desses três conceitos não é tão clara no modelo TCP/IP, o que faz com que os protocolos do modelo OSI sejam mais bem encapsulados, podendo ser substituídos com certa facilidade conforme mudança de tecnologia. Em conclusão, o modelo OSI se tornou muito útil para a discussão das redes de computadores, em contraste com o modelo TCP/IP onde o modelo em si é praticamente inexistente, mas seus protocolos são amplamente utilizados. 1.5 PROTOCOLO IP Segundo Forouzan (2008) o protocolo IP é o principal protocolo da camada de rede e tem como responsabilidade entregar os datagramas da origem ao destino. Segundo Kurose e Ross (2010) um pacote na camada de rede é denominado datagrama. Há duas versões do protocolo IP em uso atualmente, a versão 4, também conhecida como IPV4 e a versão 6 ou IPV6, a versão IPV6 não será

26 abordada neste trabalho. 1.5.1 ENDEREÇO IP Um endereço IPv4 tem comprimento de 32 bits que equivale a 4 bytes, quase 4 bilhões de endereços possíveis, porém segundo a Corporação da Internet para Atribuição de Nomes e Números (ICANN), em 2010 restavam apenas 10% desses endereços livres. (KUROSE; ROSS, 2010) (ICANN, 2010) Um host conectado a Internet possui um endereço IP que codifica seu número de rede e seu número de host, esse endereço é exclusivo e dois hosts na Internet nunca tem o mesmo endereço. Esse endereço está associado a interface e não ao host, Kurose e Ross (2010) descrevem interface como sendo a fronteira entre o hospedeiro e o enlace físico, dessa maneira para um host estar em duas redes ele precisa de dois endereços IP.(TANENBAUM; WETHERALL, 2011) Segundo Forouzan (2008) os endereços IP podem ser escritos com notação binária ou decimal. Na notação binária, o endereço IP é representado por meio de 32 bits como no exemplo: 01110101 10010101 00011101 11101010. Com o intuito de tornar os endereços IP mais legíveis, é comum escrevê-los em forma decimal separando cada byte por ponto, por exemplo, 128.11.3.31. Em virtude de cada byte ser formado por 8bits, qualquer número na notação decimal deve ficar restrito a faixa entre 0 e 255. (FOROUZAN, 2008) Entretanto, alguns endereços são reservados para fins específicos, como por exemplo, todos os endereços com formato 127.xx.yy.zz são utilizados para fazer referência a própria máquina e utilizado para comunicação interna. IP com o identificador do host valendo 0 é utilizado para identificar a rede e com valor 255 é usado para broadcast. (TANENBAUM; WETHERALL, 2011) 1.5.2 Datagrama IP Conforme citado por Tanenbaum e Wetherall (2011) um datagrama IP possui duas partes, uma de cabeçalho e outra de dados. Seus campos podem ser vistos na figura 1.3. De acordo com Forouzan (2008) um datagrama IP possui tamanho que varia de 20 a 60 bytes,a seguir a descrição de cada campo do datagrama IP.

27 Versão: campo de 4 bits que determina a versão do protocolo IP. O roteador analisa esse campo e determina como interpretar o restante do datagrama, já que diferentes versões do IP utilizam diferentes versões de datagrama. (KUROSE; ROSS, 2010) Tamanho do cabeçalho: campo de 4 bits que define o tamanho do cabeçalho, é necessário para determinar em que lugar no datagrama os dados realmente começam, pois o tamanho do datagrama IP pode ter tamanho variável. (KUROSE; ROSS, 2010) (FOROUZAN, 2008) Tipo de serviço: esse campo foi adicionado no IPV4 com o propósito de diferenciar os tipos de datagramas IP. Um exemplo de uso deste campo é que Datagramas de aplicações de tempo real, como telefonia, podem ser diferenciados de aplicações que não são em tempo real. Esse campo será melhor abordado nos capítulos seguintes.(kurose; ROSS, 2010) Comprimento do datagrama: esse campo possui 16 bits e possui a somatória em bytes do tamanho do cabeçalho e do tamanho do datagrama. O tamanho máximo do datagrama IP é 65.535 bytes, porém raramente são maiores que 1.500 bytes. (KUROSE; ROSS, 2010) Identificador: para um datagrama IP chegar ao seu destino, ele pode passar por várias redes diferentes. Nesse trajeto os roteadores desencapsulam um datagrama do frame recebido e encapsulam-no de novo em um frame com formato que depende do tipo de protocolo utilizado pela rede. Esse campo identifica os frames que pertencem ao mesmo datagrama. Esse número de identificação auxilia o host de destino no processo de reagrupamento do datagrama. (FOROUZAN, 2008) Flags: esse campo de três bits diz respeito a fragmentação do datagrama. O primeiro bit é reservado, o segundo bit é denominado não fragmentar, quando esse campo possui valor 1 o host não deve fragmentar, se o valor for 0 pode ocorrer a fragmentação. O terceiro bit é denominado mais fragmento, esse campo com valor 1 significa que este fragmento não é o ultimo, com bit 0 significa que esse fragmento é o ultimo ou único.(forouzan, 2008) Deslocamento de fragmentação: esse campo possui tamanho de 13 bits e mostra a posição do fragmento em relação ao datagrama como um todo. (FOROUZAN, 2008) Tempo de vida: esse campo é importante para garantir que datagramas não circulem para sempre na rede. Tanenbaum e Wetherall (2011) o descrevem como

28 um contador para limitar a vida útil do datagrama. Seu valor é decrementado em uma unidade a cada roteador em que é processado, se o valor do campo chegar a zero ele deve ser eliminado. (KUROSE; ROSS, 2010) Protocolo da camada superior: o valor desse campo informa a que processo de transporte o datagrama IP deve ser entregue. Por exemplo, o valor 6 indica que deve ser passado ao TCP. (TANENBAUM; WETHERALL, 2011) (KUROSE; ROSS, 2010) Soma de verificação do cabeçalho: esse campo auxilia os roteadores na detecção de erros de bits em um datagrama IP recebido. (KUROSE; ROSS, 2010, p. 249) Por meio de um algoritmo que soma os valores dos bytes se encontra o valor deste campo. Os roteadores calculam o valor e se esse for diferente do que está no campo considera que esse fragmento está com erro. (KUROSE; ROSS, 2010) Endereço IP de fonte e de destino: campo com endereço IP do host de origem e destino. (FOROUZAN, 2008) Opções: esse campo foi projetado para permitir que versões posteriores do protocolo incluam novas informações, possibilitando a experimentação de novas ideias e evitando a alocação de bits de cabeçalho para informações raramente necessárias. (TANENBAUM; WETHERALL, 2011) Dados: o último e mais importante campo do datagrama, é nela que é contida a informação de fato, também conhecida como payload. (KUROSE; ROSS, 2010) Figura 1.3 Campos do datagrama IP. Fonte: Kurose e Ross, 2010

29 O propósito deste capítulo foi abordar de forma simples os conceitos de software de redes, arquitetura de software e o protocolo IP. Nos capítulos que seguem será abordado os conceitos de qualidade de serviço.

30 2 QOS Esse capítulo tem por finalidade explicar os conceitos da QoS em redes de computadores, para isso inicia-se com um breve histórico do seu surgimento nas primeiras redes de telecomunicações, em seguida são abordados os parâmetros que são usados para medição, bem como algumas técnicas utilizadas atualmente. 2.1 SURGIMENTO DA QoS Conforme descrito por Park (2005) no início das telecomunicações haviam duas redes distintas, a rede telefônica que transportava voz e a rede IP que transportava dados. Cada rede foi projetada para transportar um tipo especifico de informação o que ocasionou em diferentes modos de funcionamento e na maneira de obter qualidade nos serviços oferecidos. A rede telefônica inicial utilizava o telefone como dispositivo terminal, porém a maior parte da inteligência se encontrava na rede, que por sua vez era bem mais complexa, a conexão era dedicada a uma chamada durante toda sua duração e ao fim, os circuitos eram usados para configurar outra chamada. (PARK, 2005) Uma vez que, transportando voz, coube aos projetistas encontrar métodos para obter qualidade que eram coerentes com os tipos de serviços oferecidos pela rede, serviços esses que em maioria era de comunicação em tempo real. Foram duas as principais medidas tomadas, a primeira medida foi garantir o fornecimento necessário de circuitos para se estabelecer uma ligação. Para isso criou-se o bloqueio de chamada, que ocorria antes de iniciar a ligação, na ausência de circuitos disponíveis. Estabelecida a conexão, a segunda medida foi na qualidade de voz, que está diretamente ligada a qualidade de transmissão. Para isso a rede telefônica foi projetada para aperfeiçoar a transmissão fim-a-fim, para que as deficiências da rede como ruídos, ecos e atrasos fossem razoáveis. (PARK, 2005) A rede IP se diferenciava e muito da rede telefônica, a começar pelo tipo de informação transportada. Ao contrário de voz, dados são em maioria serviços em tempo não real, podendo ser armazenado e entregue posteriormente. (PARK, 2005) A rede IP foi projetada para ter o funcionamento mais simples possível, sua função

31 principal é transportar pacotes de um nó para outro os tratando da mesma maneira. Os pacotes são armazenados em um buffer e encaminhados em ordem. Segundo Park (2005), outro ponto em que as redes se diferenciam é no dispositivo terminal, que na rede IP é um típico computador hospedeiro, diferente do telefone, nele foi depositado a maior parte da inteligência. Um exemplo disso é que o terminal receptor, ao receber um pacote com erro, consegue identificá-lo e pedir a retransmissão, tudo isso sem conhecimento da rede. Em virtude do simples funcionamento da rede IP e do tipo de informação transportada, a rede pode operar no modo Best Effort (Melhor Esforço), onde todos os pacotes são tratados de forma igual. (PARK, 2005) O objetivo do projeto principal da rede IP era certificar-se de que o terminal do usuário final teve os protocolos e inteligência necessários para garantir dados confiáveis a transmissão de forma que a rede pode operar tão simples quanto possível. (PARK, 2005, p.3, tradução nossa). Por terem características de tráfego e requisitos de desempenho distintos, foi possível obter o melhor caminho para o transporte das informações por duas redes separadas, porém em meados de 1990 teve início o que foi conhecido como Convergência de Voz e Dados, as duas redes começaram a se fundir com o propósito de criar uma única rede para transportar os dois tipos de informação. Consolidada a convergência, um novo desafio técnico surgiu, nessa nova rede o funcionamento melhor esforço, utilizado na rede IP, não era o suficiente para atender os diversos requisitos de desempenho dos diferentes tipos de serviços oferecidos. QoS foi a tecnologia utilizada para resolver esse problema.(park, 2005) 2.2 DEFINIÇÃO DE QOS Na recomendação E.800 de 1994 do setor de normalização das telecomunicações ITU-T, um dos braços da União Internacional de Telecomunicações, contém a seguinte definição para QoS: efeito coletivo do desempenho do serviço, que determina o grau de satisfação de um usuário do serviço. Essa definição abrange somente a percepção do usuário, porém, segundo Park (2005), além do ponto de vista do usuário, a QoS também pode ser definida a

32 partir do ponto de vista da rede, que está na sua capacidade de prover condições para que a QoS do ponto de vista do usuário final ocorra. Essas condições podem ser alcançadas por meio de técnicas de QoS e mensuráveis através de parâmetros. 2.3 PARÂMETROS DE QOS De acordo com Tanenbaum e Wetherall (2011) um fluxo de dados exige quatro parâmetros de qualidade, são eles o atraso, largura de banda, flutuação e confiabilidade. Para Park (2005), o entendimento desses parâmetros é vital para a compreensão da QoS. Atraso (ou retardo): de acordo com Kurose e Ross (2010) um pacote se origina em um sistema final, passa por uma série de roteadores e tem como destino outro sistema final, ao percorrer esse trajeto, o pacote sofre atrasos. Segundo Forouzan (2008) os atrasos ocorrem porque existem filas nos roteadores e buffers que armazenam os dados antes e depois de serem processados. Kurose e Ross (2010) descrevem o atraso como sendo a soma do atraso de processamento (identificação e direcionamento do pacote), atraso de fila (tempo de espera para ser transmitido), atraso de transmissão (tempo de transmissão de todos os bits do pacote para o enlace) e o atraso de propagação (tempo que um bit leva para atravessar o meio físico). Os atrasos que um pacote sofre são ilustrados na figura 2.1. Aplicações como transferência de arquivos e correio eletrônico não são sensíveis ao retardo. (TANENBAUM; WETHERALL, 2011) Figura 2.1 Filas no roteador Fonte: Kurose; Ross, 2010, p.27

33 Largura de banda: segundo Forouzan (2008),é formada pelos valores de taxa máxima de dados (indica a largura de banda máxima que uma rede pode suportar), taxa média (define a largura de banda média necessária ao tráfego) e tamanho máximo de rajada (intervalo de tempo em que o tráfego consegue se manter na taxa máxima). Aplicações como de vídeo-conferência exigem alta largura de banda. (TANENBAUM; WETHERALL, 2011) Flutuação (ou jitter): variação de tempo de chegada dos pacotes do mesmo fluxo. Aplicações do tipo Voice over Internet Protocol (VoIP) são sensíveis a flutuação. Confiabilidade: em uma rede pouco confiável há uma grande quantidade de perda e retransmissão de pacotes. Aplicações como a de acesso a web e transferência de arquivos necessitam de uma rede confiável. (FOROUZAN, 2008) Alguns desses parâmetros podem ser melhorados com a correta configuração dos elementos da rede, por exemplo, switches, protocolos e o serviço de Domain Name System (DNS). 2.4 TÉCNICAS DE QOS A qualidade de uma rede de computadores pode ser alcançada por diferentes meios, atualmente existem diversas técnicas, porém, o uso de uma somente não é suficiente para a obtenção de uma QoS eficiente e segura, isso só é possível por meio de uma combinação de várias técnicas. (TANENBAUM; WETHERALL, 2011) Em uma rede de computadores onde não existe nenhum método de QoS atuante, a rede trata todos pacotes da mesma maneira e faz o melhor possível para entregar os pacotes ao destino, esse método é conhecido como melhor esforço. (PARK, 2005) 2.4.1 Técnicas de controle de congestionamento É muito comum técnicas de QoS atuarem no controle de congestionamento em virtude da sua proximidade. (FOROUZAN, 2008) Forouzan (2008, p. 559) se propôs a refletir: as duas técnicas são tão próximas que melhorar uma, significa melhorar a outra e ignorar uma, geralmente significa ignorar a outra.

34 Segundo Forouzan (2008), as técnicas de controle de congestionamento podem ser de prevenção ou de contenção. As técnicas preventivas são aplicadas nos hosts de origem ou destino e atuam antes de o congestionamento acontecer. As técnicas de contenção são aplicadas em hosts ou em elementos da rede, roteadores por exemplo, e atuam durante o congestionamento, tentando aliviá-lo ou eliminá-lo. Existem várias unidades métricas que podem ser utilizadas para monitorar a rede a fim de verificar a ocorrência de congestionamento. Alguns deles são os números de pacotes descartados por falta de espaço em buffer, tamanho médio da fila e retardo médio de pacotes. (FOROUZAN, 2008) 2.4.2 Serviços integrados e serviços diferenciados A Internet Engineering Task Force (IETF) propôs vários modelos de mecanismos para atender a demanda de QoS, entre os resultados desses estudos estão os serviços integrados e serviços diferenciados. (XIAO; NI, 1999) Segundo Xiao e Ni (1999), o serviço integrado é caracterizado pela reserva de recursos e utiliza o protocolo Resource Reservation Protocol (RSVP). O modelo de serviço integrado identifica um fluxo de IP pelos seguintes parâmetros: identificador do protocolo, endereço IP do destino, endereço de porta do destino, endereço IP de origem e endereço de porta de origem. (PARK, 2005) A reserva de recursos é realizada pelo protocolo RSVP, essa reserva é feita por troca de mensagens entre o remetente e o receptor, esse diálogo pode ser melhor observado na figura 2.2. Figura 2.2 Funcionamento do protocolo RSVP Fonte: Xiao; Ni, 1999, p.4 Primeiramente o remetente envia uma mensagem PATH que contém a especificação do fluxo ao receptor. Essa mensagem passa pelos roteadores da rede

35 que registram a especificação, de modo que quando a mensagem RESV, que contém a solicitação dos recursos, fizer o caminho inverso os roteadores possam relacionar as mensagens PATH e RESV, alocar largura de banda e espaço em buffer. (XIAO; NI, 1999) (PARK, 2005) Segundo Tanenbaum e Wetherall (2011) o modelo de serviço integrado oferece boa qualidade de serviço a um ou mais fluxos porque eles reservam os recursos necessários ao longo da rota, porém esse modelo também possui suas desvantagens, uma delas é a configuração antecipada para cada fluxo, o que não funciona bem com um grande número de fluxo. Outra desvantagem segundo Xiao e Ni (1999) é a necessidade de todos os roteadores da rede implementarem o RSVP, o que em uma rede de grande porte se torna uma arquitetura não escalável. A IETF então criou um modelo mais simples que se baseava na classe e não no fluxo. Segundo Xiao e Ni (1999) o modelo de serviço diferenciado foi introduzido devido a dificuldade da implementação dos serviços integrados e do protocolo RSVP. Park (2005) descreve que no modelo de serviço diferenciado os fluxos não se distinguem e são agregados em classes de tráfego. Dessa maneira o tratamento diferenciado, como largura de banda e outros recursos, se dá sobre essas classes. A classe de serviço é identificada no campo denominado DS, que substituiu o campo Type Of Service (TOS) no cabeçalho do pacote IP, por indicação da IETF. (FOROUZAN, 2008) Segundo Tanenbaum e Wetherall (2011) os serviços diferenciados podem ser oferecidos por um conjunto de roteadores que formam um domínio administrativo, o Internet Service Provider (ISP). Segundo Xiao e Ni (1999) para receber o serviço diferenciado, o cliente deve ter uma Service Level Agreement (SLA), que nada mais é do que um contrato que, dentre outras coisas, especifica as classes de serviços suportadas e quantidade de tráfego permitida. O modelo de serviço diferenciado possui dois conjuntos de elementos funcionais, as funções de bordas, que são formadas pela classificação de pacotes e o condicionamento de tráfego; e função central, formada pelo envio (KUROSE; ROSS, 2010): Funções de borda: quando um pacote passa pelo primeiro host ou roteador habilitado a serviço diferenciado ele é marcado no campo DS com um valor, assim ele pode receber tratamento diferenciado;

36 Função central: quando um pacote marcado chega em um roteador habilitado a serviço diferenciado ele é repassado até o próximo salto, de acordo com o comportamento associado a classe de serviço. O modelo de serviço diferenciado é escalável e flexível, a necessidade de escalabilidade vem do número de fluxos simultâneos, passando em um roteador da Internet e a necessidade de flexibilidade vem do fato de que novas classes de serviços podem surgir e as existentes se tornarem obsoletas. (KUROSE; ROSS, 2010) Neste capítulo foram abordados os conceitos de QoS, seus parâmetros e algumas técnicas utilizadas. No capítulo seguinte serão abordados os serviços de firewall e o serviço de controle de tráfego, suas características e funcionamento.

37 3 SERVIÇOS DE REDE A facilidade de acesso a Internet nos últimos anos contribuiu para a popularização desses serviços, alguns deles, fundamentais em ambientes empresariais. Nesse ambiente, além das vantagens financeiras que eles podem gerar, ainda existem as vantagens competitivas, pois agilizam processos e automatizam tarefas. Nesse capítulo, busca-se apresentar os serviços de controle de tráfego e firewall, que juntamente com a QoS serão utilizados para validação da pesquisa posteriormente nos testes práticos. 3.1 CONTROLE DE TRÁFEGO Controle de tráfego é o nome dado aos conjuntos de sistemas de filas e mecanismos pelos quais os pacotes são recebidos e transmitidos em um roteador. Isso inclui decidir quais pacotes aceitar e a que taxa de transmissão passará pela interface, bem como determinar quais pacotes transmitir, em qual ordem e a que taxa de transmissão irá passar pela interface de saída. (BROWN, 2006) Há exemplos de filas em todos os tipos de software. A fila é uma forma de organizar as tarefas ou dados. No caso de um servidor compartilhando o mesmo link para Internet com outros computadores, poderá ocorrer disputa por banda, com isso o controle de tráfego ajuda na melhor divisão deste recurso. (BROWN, 2006) Quando bem utilizado, o controle de tráfego conduz ao uso mais previsível e na melhor distribuição dos recursos da rede de computadores. Por exemplo, um download pode ser realizado sem afetar outras aplicações. Segundo Brown (2006) a configuração de controle de tráfego representa uma política que foi comunicada aos usuários, os usuários (e, por consequência, aplicações) sabem o que esperar da rede.(brown, 2006) De acordo com Brown (2006) a complexidade é a desvantagem mais significativa no controle de tráfego, ainda segundo o autor, existem maneiras de se familiarizar com as ferramentas, mas a identificação de um erro de configuração pode ser um grande desafio. Dessa maneira, muitas empresas adquirem mais

38 largura de banda como solução para seus problemas ao invés de investir em treinamento e em ferramentas de controle de tráfego. (BROWN, 2006) 3.2 FIREWALL Datado em meados dos anos 80, o primeiro firewall foi desenvolvido pela Bell Labs por encomenda da AT&T, o objetivo da ferramenta era filtrar todos os pacotes que saíssem e entrassem na rede corporativa, sendo possível manipulá-los de acordo com regras predefinidas pelos cientistas da Bell Labs. (NETO, 2004) A evolução da tecnologia não suprimiu a necessidade do uso do firewall, pelo contrário, o tornou extremamente importante, principalmente pelo número de computadores conectados por meio da Internet e sujeitos a ataques de diversos tipos e motivados por diversas razões. Segundo o site Centro de estudos, reposta e tratamento de incidentes de segurança no Brasil (CERT), em 2012 foram reportados a ele 466029 incidentes no Brasil. O CERT é um grupo responsável por tratar incidentes de segurança em computadores que envolvam redes conectadas à Internet brasileira. Com o propósito de conscientizar sobre os problemas de segurança os incidentes reportados são exibidos em forma de gráficos, como ilustra a figura 3.1. Figura 3.1 Tipos de incidentes reportados á CERT em 2012 Fonte: CERT, 2013 Segundo Neto (2004) firewall é um programa que detém autonomia concedida pelo sistema para pré-determinar e disciplinar todo tipo de tráfego existente entre o mesmo e outros hosts/rede. Comumente o firewall está situado entre a rede Internet e o ponto em que os computadores da rede local se conectam, esse ponto pode ser um switch ou um

39 hub. Nessas condições, faz-se uso de um computador com duas placas de rede, onde uma é conectada a Internet e outra a rede local. (MORIMOTO, 2006) Dessa maneira o firewall se torna o único elemento conectado diretamente a Internet e automaticamente a primeira defesa dessa rede. Tem funcionamento parecido com a de uma barreira, isolando as duas redes. Todos os pacotes que entram e saem da rede passam por ele, possibilitando a filtragem e o monitoramento de todo tráfego. O posicionamento do firewall pode ser mais bem observado na figura 3.2. Figura 3.2 Posicionamento do firewall na rede de computadores Fonte: Forouzan, 2008, p.560 3.2.1 Firewall filtro de pacotes A filtragem de pacotes é a principal e mais utilizada função do firewall, em uma rede onde ele está configurado para realizar essa função, é possível analisar os cabeçalhos dos pacotes enquanto eles trafegam e filtrar o tráfego com base em regras predefinidas, assim direcionando os pacotes ao seu devido destino (NETO, 2004) Conforme citado por Tanenbaum e Wetherall (2011), em geral a filtragem de pacotes é baseada em tabelas configuradas pelo administrador do sistema. Nelas estão listadas as origens ou destinos aceitáveis e bloqueados e as regras padrão que orientam o que deve ser feito com pacotes recebidos de outras maquinas ou destinados a elas. De acordo com Kurose e Ross (2010) as decisões de filtragem podem ser baseadas em endereço IP de destino ou origem, tipos de protocolos, porta de

40 destino ou origem, entre outros. Para exemplificar, em um ambiente corporativo onde é proibido o acesso a Internet, isso pode ser feito bloqueando todos os pacotes de saída com destino a um IP com porta 80. (TANENBAUM; WETHERALL, 2011)

41 4 IPTABLES O iptables é uma ferramenta nativa do Linux que possibilita controlar as tabelas do módulo Netfilter, é popularmente conhecido como um firewall, porém essa é só uma de suas funções. (NETO, 2004) O iptables foi desenvolvido por Rusty Russell em colaboração com Michel Neuling e implementado na versão 2.4 do Kernel do Linux em 1999. Para melhor entendimento da ferramenta iptables, é necessário conhecermos onde ela está localizada e do que é composta, a seguir uma melhor abordagem sobre esses elementos. 4.1 KERNEL A criação do Kernel teve inicio em 1991 por Linus Torvalds quando ele era um estudante na universidade de Helsinki na Finlândia, a primeira versão do Kernel veio a público em setembro desse mesmo ano. O Kernel do Linux foi a ultima e mais importante peça de código necessária para completar o sistema operacional UNIX- Like. (NEGUS, 2010) Segundo Silva (2010) o Kernel é a peça central do sistema operacional Linux, ele controla os dispositivos e os demais periféricos do sistema como disco rígido e placa de rede. A localização do Kernel pode ser melhor observada na figura 4.1. Figura 4.1 Localização do Kernel Fonte: CLIPATEC INFORMÁTICA, 2011 Negus (2010) descreve o Kernel como sendo um software que inicia junto com o computador e permite a comunicação eficaz entre os hardwares do computador e os programas.

42 4.2 MÓDULO NETFILTER Segundo Silva (2010), um módulo é uma parte do Kernel inicializada somente quando solicitada por algum aplicativo ou dispositivo e descarregada da memória quando não é mais utilizada. São importantes porque evitam a construção de um Kernel muito grande que ocupa grande parte da memória e também por permitir que partes do Kernel ocupem espaço em memória só quando necessário. Tudo o que acontece no sistema operacional, independente da camada, passa pelo Kernel, tarefas comum a um computador como o gerenciamento de processos e gerenciamento de memória por si só já exigem bastante do Kernel, por isso a necessidade de criar módulos que trabalhem em conjunto com o Kernel. O modulo Netfilter foi criado para que o kernel pudesse controlar seu próprio fluxo interno. (NETO, 2004) O módulo Netfilter é composto por tabelas, regras e chains, a seguir uma melhor descrição de cada um desses elementos. 4.3 TABELAS Segundo Neto (2004) é possível ver o Netfilter como um banco de dados que contém três principais tabelas, a Filter, Network Address Translation (NAT) e Mangle, cada uma com regras para uma finalidade específica, além de possuir as tabelas raw e security que não serão abordados nesse trabalho. As tabelas são os locais onde ficam armazenadas as chains e o conjunto de regras com uma determinada característica em comum. (SILVA, 2010) 4.3.1 Tabela Filter Filter é a tabela padrão do iptables, é nela que ficam armazenadas as regras referentes a um firewall filtro de pacotes. (NETO, 2004) Por ser a tabela padrão, toda regra em que não é especificada a tabela o iptables assume que a tabela ma qual será inserida a regra é a filter. (NETO, 2004) As situações de fluxo, ou seja, as chains possíveis nessa tabela são: INPUT: todos os pacotes que tem como destino a máquina em que o iptables está em funcionamento;

43 OUTPUT: todos os pacotes gerados pela máquina onde o iptables está em funcionamento FORWARD: todos os pacotes que passam pelo iptables vindo de uma máquina e direcionado a outra. A figura 4.2 ilustra como os pacotes são tratados pela tabela filter. Figura 4.2 Esquema da tabela Filter Fonte: Filho, 2013 4.3.2 Tabela NAT Segundo Silva (2010) a tabela NAT é utilizada quando são geradas outras conexões. As situações possíveis na tabela NAT são: PREROUTING: utilizado quando é preciso fazer alterações no pacote antes de serem roteados. (NETO, 2004) OUTPUT: utilizado quando pacotes gerados localmente precisam ser modificados antes de serem roteados. (SILVA, 2010) POSTROUTING: utilizado quando é preciso modificar pacotes após o roteamento. (SILVA, 2010) O roteamento da tabela NAT é ilustrado pela figura 4.3. Figura 4.3 Esquema da Tabela NAT Fonte: Filho, 2013

44 4.3.3 Tabela Mangle A tabela mangle é utilizada para fazer tratamentos mais profundos nos pacotes como alterar a prioridade de entrada e saída de um pacote baseado no campo tipo de serviço. (NETO, 2004) As situações possíveis para essa tabela são: INPUT: usado para alterar pacotes com direção ao próprio firewall OUTPUT: usado para alterar pacotes gerados localmente antes do roteamento FORWARD: usado para alterar pacotes sendo roteados no firewall PREROUTING: usado para alterar pacotes recebidos antes do roteamento. POSTROUTING: usado para alterar pacotes antes de sairem (IPTABLES, 2013) 4.4 REGRAS Neto (2004) entende as regras como pré-definições aplicadas a fim de disciplinar todo um tráfego de dados em uma rede ou host. Segundo Silva (2010) as regras são comandos passados pela ferramenta iptables ao módulo Netfilter, para que ele tome determinada ação com base em informações. As regras são armazenadas dentro das chains e processadas na ordem que são inseridas. 4.5 CHAIN As regras do firewall definidas pelo usuário ficam localizadas nas chains. Segundo Silva (2010) existem dois tipos de chains, as embutidas e as criadas pelo usuário. Neto (2004) descreve as chains como situações vividas pelo Kernel. Logo, uma situação de entrada trataria-se, na verdade de uma INPUT chain, uma situação de redirecionamento uma FORWARD chain e uma situação de saída uma OUTPUT chain. (NETO, 2004, pag. 21,22)

45 4.6 FERRAMENTA IPTABLES Para que fosse possível inserir, modificar e apagar as regras no módulo Netfilter foi criada a ferramenta iptables. Ela não requer grande poder computacional e é composta por 4 outras aplicações. a iptables que é utilizada para manipular as regras referente ao protocolo ipv4, o ip6tables que é usado para o protocolo IPv6, iptables-save utilizado para salvar as regras inseridas da sessão ativa em um arquivo informado pelo administrador da rede e o iptables-restore que restaura as regras salvas em um arquivo. (NETO, 2004) Segundo Neto (2004) a síntese das regras do iptables é: Iptables [tabela] [comando] [alvo] [ação] 4.6.1 Comandos A seguir um descritivo dos comandos do iptables e alguns exemplos. -A: adiciona uma regra ao fim da lista de regras. root@ubuntu:/home/mauricio# iptables -t filter -A INPUT -s 192.168.0.10 -j DROP Essa regra descarta todo pacote entrando no firewall vindo do endereço 192.168.0.10 -D: Apaga uma regra da lista, pode ser utilizado substituindo o A por D ou inserindo o número da regra. root@ubuntu:/home/mauricio# iptables -t filter -D INPUT -s 192.168.0.10 -j DROP -L: lista as regras de uma tabela. root@ubuntu:/home/mauricio# iptables -L Chain INPUT (policy ACCEPT) Target prot opt source destination DROP all -- 192.168.0.10 anywhere

46 Chain FORWARD (policy ACCEPT) Target prot opt source destination Chain OUTPUT (policy ACCEPT) Target prot opt source destination Esse comando lista as regras da tabela filter. -P: altera a política padrão das chains, inicialmente todas elas são ACCEPT. root@ubuntu:/home/mauricio# iptables -t filter -P INPUT DROP Essa regra define como política padrão a ação de descarte para a chain INPUT. -F: remove todas as entradas da lista de regras sem alterar a política padrão root@ubuntu:/home/mauricio# iptables F Essa regra remove todas as regras da tabela filter, mas mantém a política padrão -I: insere uma nova regra no início da lista root@ubuntu:/home/mauricio# iptables -I INPUT -d 192.168.0.0 - j ACCEPT A regra acima aceita todo pacote vindo da rede 192.168.0.0 -R: substitui uma regra da lista por outra root@ubuntu:/home/mauricio# iptables -R INPUT 1 -d 192.168.0.5 -j DROP Essa regra substitui a rede 192.168.0.0 e a ação de ACCEPT da regra anterior pelo endereço 192.168.0.5 e a ação DROP. -N: cria uma nova chain root@ubuntu:/home/mauricio# iptables -t nat -N internet root@ubuntu:/home/mauricio# iptables -t nat -L Chain PREROUTING (policy ACCEPT) Target prot opt source destination Chain INPUT (policy ACCEPT)

47 Target prot opt source destination Chain OUTPUT (policy ACCEPT) Target prot opt source destination Chain POSTROUTING (policy ACCEPT) Target prot opt source destination Chain internet (0 references) Target prot opt source destination As primeira regra usada cria uma chain na tabela filter com o nome de internet e em seguida é listada as chains da tabela filter. -E: renomeia uma chain criada pelo administrador root@ubuntu:/home/mauricio# iptables -t nat -E internet permitiracesso root@ubuntu:/home/mauricio# iptables -t nat -L Chain PREROUTING (policy ACCEPT) Target prot opt source destination Chain INPUT (policy ACCEPT) Target prot opt source destination Chain OUTPUT (policy ACCEPT) Target prot opt source destination Chain POSTROUTING (policy ACCEPT) Target prot opt source destination Chain permitiracesso (0 references) Target prot opt source destination Aqui é renomeado a chain criada anteriormente com o nome de internet para permitiracesso. -X: apaga uma chain criada pelo administrador root@ubuntu:/home/mauricio# iptables -t nat -X permitiracesso Essa regra apaga a chain criada com o nome de permitir Acesso

48 4.6.2 Alvo A seguir a lista de alvos possíveis da ferramenta iptables e alguns exemplos -p: especifica o protocolo aplicado a regra; root@ubuntu:/home/mauricio# iptables -A INPUT -p udp -j DROP Essa regra rejeita todo pacote do protocolo UDP entrando no firewall -i: especifica a interface de entrada na regra. root@ubuntu:/home/mauricio# iptables -A INPUT -i eth1 -j ACCEPT Essa regra aceita todos os pacotes que entram no firewall pela interface eth1 -o: especifica a interface de saída na regra root@ubuntu:/home/mauricio# iptables -A OUTPUT -o eth1 -j ACCEPT Essa regra permite a saída de todos os pacotes pela interface eth1. -s: especifica a origem dos pacotes na regra. root@ubuntu:/home/mauricio# iptables -A INPUT -s 192.168.0.4 - j REJECT Essa regra rejeita todos os pacotes vindo do endereço 192.168.0.4 -d: especifica o destino dos pacotes na regra. root@ubuntu:/home/mauricio# iptables -A INPUT -d 192.168.0.3 - j ACCEPT Essa regra aceita todos os pacotes com origem o IP 192.168.0.3!: é utilizado para especificar uma exceção root@ubuntu:/home/mauricio# iptables -A OUTPUT! -o eth0 -j DROP Essa regra rejeita todos os pacotes vindo de todas as interfaces com exceção da interface eth0. --sport: define a porta de origem.

49 root@ubuntu:/home/mauricio# iptables -A INPUT -p tcp --sport 80 -j DROP Essa regra descarta todos os pacotes com porta de origem 80. --dport: define a porta de destino na regra root@ubuntu:/home/mauricio# iptables -A OUTPUT -p tcp --dport 21 -j DROP Essa regra descarta todos os pacotes que a porta de destino é a 21. 4.6.3 Ação Toda regra possui uma ação em relação ao pacote, as ações vem depois da opção j e as possíveis são: ACCEPT - aceita o pacote, DROP - descarta o pacote sem notificar a origem do pacote REJECT - descarta o pacote e envia uma mensagem icmp notificando a origem do pacote LOG cria uma entrada no arquivo de log, a localização do arquivo pode variar de distribuição para distribuição, no Ubuntu Server a localização é /var/log/kern.log, SNAT altera o endereço de origem do pacote antes de serem roteados DNAT altera o endereço de destino do pacote REDIRECT é utilizada em conjunto com a opção to-port par realizar o redirecionamento de porta TOS prioriza a entrada e saída de pacotes baseando no campo tipo de serviço localizado no cabeçalho do pacote IPv4 Neste capitulo foram apresentadas as regras para uso da ferramenta iptables. No capítulo seguinte serão apresentados os testes implementados para avaliação da ferramenta, bem como apresentação dos resultados de cada simulação. 5 IMPLEMENTAÇÃO De modo a avaliar a ferramenta iptables em diferentes aspectos da gerencia de redes de computadores realizamos testes que abrangem as áreas de segurança, gerência de tráfego e qualidade de serviço.

50 Para testar o iptables como ferramenta de segurança exercendo a função de firewall os testes focaram a proteção contra ataque de varredura de portas e ataque de Ping Flood, uma variante do ataque Denial of Service (DoS), esses serão melhor abordados durante os testes. No aspecto da gerencia de tráfego foi utilizado o iptables em conjunto com outras ferramentas, no teste foi simulado uma situação em que há a necessidade de fazer a melhor divisão dos recursos da rede, mais especificamente o link da Internet. Na qualidade de serviço foi priorizado o serviço de FTP reservando uma largura de banda maior e classificando como tráfego prioritário. 5.1 CENÁRIO Os testes foram realizados em sistemas operacionais virtualizados no software VirtualBox. As configurações dos computadores utilizados estão descritos na tabela 5.1. Tabela 5.1 - Configuração das máquinas virtuais utilizadas Descrição Servidor/firewall Host A Host B Atacante S.O. Linux Ubuntu Server 12.04.3 Windows XP Windows XP Linux Ubuntu Server 12.04.3 Memória 512MB 512MB 512MB 512MB HD 8G 8G 8G 8G Interface eth1 192.168.0.102 eth2 192.168.1.1 eth3 192.168.2.1 Fonte: Elaborado pelo autor, 2013 192.168.1.2 192.168.2.2 192.168.0.104 Os hosts estão interligados ao servidor por meio da opção rede interna do Virtualbox. O cenário pode ser observado na figura 5.1.

51 Figura 5.1 Organização da rede de testes Fonte: Elaborado pelo autor, 2013 5.2 SEGURANÇA Para simular os ataques foi inserido dois computadores na mesma rede, sendo o atacante e o servidor com as configurações citadas anteriormente. Figura 5.2 Cenário de testes de segurança Fonte: Elaborado pelo autor, 2013 5.2.1 Ataque de varredura de portas O ataque de varredura de portas tem como finalidade identificar quais computadores estão ativos e quais serviços são disponibilizados por eles. Esse ataque é amplamente utilizado por atacantes para identificar potenciais alvos, pois permitem associar possíveis vulnerabilidades aos serviços habilitados em um computador. (CERT, 2013) Esse tipo de ataque faz solicitações de conexão nas portas do alvo, ou seja, envia um pacote que solicita sincronização e aguarda resposta. Em redes de computadores, antes de iniciar a comunicação entre dois hosts ocorre um processo de sincronização chamado Handshake de três vias. O cliente que deseja iniciar uma comunicação envia um pacote com a flag SYN ativa que solicita sincronização, o servidor então responde com um pacote SYN + ACK que aceita a sincronização,

52 esse processo é encerrado com o pacote ACK que parte do cliente, em seguida tem início a comunicação de fato. (SMITH, 2011) O handshake de três vias pode ser observado com ferramentas de capturas de pacote, como no exemplo da figura 5.3 em que são capturados pacotes do inicio de uma conexão Security Shell (SSH) com a ferramenta WireShark. Figura 5.3 Handshake de três vias Fonte: Elaborado pelo autor, 2013 A varredura de portas pode iniciar em uma porta baixa e seguir a ordem crescente, pode iniciar em uma porta alta e seguir a ordem decrescente, como pode também analisar apenas uma série de portas pré-determinadas pelo atacante. (NMAP, 2013) 5.2.2 Teste de segurança contra ataque de varredura de portas Sem conhecimento de quais serviços estão em execução no alvo e em quais portas eles aguardam solicitação, a varredura passa por várias portas fechadas antes de encontrar uma aberta. O módulo recent nos permite criar dinamicamente uma lista de endereços IP e combina-la com outras regras. (IPTABLES, 2013) Foi feito uso desse módulo e foi utilizado o número de tentativas de acesso que não obtiveram sucesso como regra para inseri-lo na lista. Antes de iniciarmos as explicações das regras utilizadas, é importante esclarecer o funcionamento da política padrão. Dentre as regras contidas em um script de firewall estão as regras que dão permissões de entrada, saída e roteamento no firewall. Tudo o que não estiver permitido será tratado pela política padrão, que nos testes é DROP, ou seja, toda requisição que não estiver explicitamente permitida nas regras do script será descartada. Dando início as explicações, a primeira regra é inserida no fim do script e atua antes da política padrão. iptables -A INPUT -m recent --set --name BLACKLISTSCAN

53 Quando uma requisição passa por essa regra o endereço IP de origem é inserido em uma lista com nome BLACKLISTSCAN. Duas regras fazem uso da lista BLACKLISTSCAN para evitar o ataque, a primeira regra atualiza o número de vezes que o endereço IP aparece na lista e se for a quinta vez ou mais na ultima uma hora gera um log. Para não encher o arquivo de log foi limitado a criação de uma mensagem por minuto conforme linha de comando a seguir. iptables -A INPUT -m recent --update --hitcount 5 --name BLACKLISTSCAN -m limit --seconds 3600 --limit 1/m -j LOG -- log-prefix ALERTA_DE_PORTSCAN --log-ip-options A terceira regra repete a verificação da regra anterior, porém sua ação é de descarte do pacote. O parâmetro que atualiza o número de vezes em que o endereço IP aparece na lista BLACKLISTSCAN é o -update, o parâmetro que verifica se o IP já foi inserido 5 vezes ou mais na lista é o hitcount 5. O parâmetro -seconds 3600 determina o tempo de validade da regra, ou seja, se o IP foi inserido na lista na ultima hora. A ação de descarte é determinada pelo parâmetro j DROP. iptables -A INPUT -m recent --update --hitcount 5 --name BLACKLISTSCAN --seconds 3600 -j DROP No desenvolvimento dos testes foi usado como ferramenta de ataque o Nmap, que é uma ferramenta livre e de código aberto, utilizada para testes de segurança. (NMAP, 2013) No primeiro teste, o servidor estava sem regras de firewall ativas. O comando utilizado pelo atacante faz uma varredura iniciando na porta de número 1 até a porta de número 1024. O resultado da varredura de portas pode ser visto na figura 5.4, em que todos os serviços ativos são exibidos, como o serviço de FTP que aguarda solicitações na porta 21, o serviço de SSH na porta 22, o servidor de e-mail que utiliza a porta 25 e o servidor web que faz uso da porta 80. Além dos serviços em execução no servidor a varredura de portas conseguiu identificar o endereço físico da interface.

54 Figura 5.4 Varredura de portas com êxito Fonte: Elaborado pelo autor, 2013 No segundo teste as regras do firewall estavam ativas. O comando utilizado para iniciar o script de nome iptables que contêm as regras e está localizado em /etc/init.d é: root@ubuntu:/home/mauricio# /etc/init.d/iptables start A figura 5.5 ilustra a inicialização do script. Figura 5.5 Iniciando script de regras Fonte: Elaborado pelo autor, 2013 Agora com as regras ativas no firewall foi feita uma nova varredura com a máquina do atacante, a figura 5.6 exibe o resultado do ataque. Figura 5.6 Varredura de portas sem êxito Fonte: Elaborado pelo autor, 2013

55 Com as regras do firewall em execução o ataque de varredura de portas não obteve sucesso, todos os pacotes originários do atacante serão bloqueados por 1 hora e os logs foram gerados no sistema, como é possível observar na figura 5.7. Figura 5.7 Log do sistema operacional Fonte: Elaborado pelo autor, 2013 A segurança pode ser maior se substituir as portas padrão dos serviços por portas altas, como ilustra a figura 5.8, em que a porta do SSH foi alterada para 2222 e a porta do FTP para 2121.. Figura 5.8 Lista de portas alteradas Fonte: Elaborado pelo autor, 2013 5.2.3 DoS: Ping Flood Segundo o CERT (2013) o ataque de DoS ocorre quando um atacante utiliza um computador para tirar de operação um serviço, computador ou rede. Em síntese o ataque de DoS se baseia em enviar a vitima uma quantidade de solicitações maior do que ela consegue suportar, dessa forma, negando o serviço. (ALECRIM, 2012)

56 O ataque de DoS é possível devido a algumas características do protocolo TCP/IP, portanto qualquer computador que utilize esse protocolo está suscetível a esse tipo de ataque. (ALECRIM, 2012) Outro fator que o torna bastante utilizado é a sua facilidade de utilização. (AX3 SOFT, 2013) O ataque de DoS possui formas diferentes de atingir seu objetivo, uma das variantes é o Ping Flood que faz uso do pacote ICMP do tipo echo request, popularmente conhecido como ping. O ping é comumente utilizado pelos administradores de redes de computadores para testar a comunicação entre dois equipamentos. (AX3 SOFT, 2013) 5.2.4 Testes de segurança contra ataque de Ping Flood Com a ferramenta iptables é possível dificultar o sucesso do ataque de Ping Flood limitando a quantidade de pings recebido. A primeira regra permite a entrada de uma solicitação de echo request por segundo. Caso mais que uma solicitação seja recebida no intervalo de um segundo as próximas regras do script que tratam requisições icmp irão atuar. iptables A INPUT p icmp icmp-type echo-request i eth1 m limit limit 1/s j ACCEPT A regra da sequência gera um log no sistema notificando o ataque. Também para não enchermos o arquivo de log, limitamos a quantidade de 1 log por minuto. iptables A INPUT p icmp icmp-type echo-request i eth1 m limit limit 1/m j LOG log-prefix DoS log-ip-options A última regra rejeita a solicitação de echo request que não foi aceita pela primeira regra. iptables A INPUT p icmp icmp-type echo-request j DROP

57 O teste foi realizado utilizando dois computadores, sendo um com sistema operacional Windows 7 e a outra com o sistema operacional Ubuntu Server virtualizado. Ao mesmo tempo as duas máquinas enviaram solicitações ao firewall. Como é possível observar na figura 5.9 logs foram gerados notificando o administrador. 5.9 Log de Ping Flood Fonte: Elaborado pelo autor, 2013 Os resultados dos testes de segurança realizados com o iptables demonstraram bom desempenho e de certo pode ser utilizado como um firewall sem necessidade de outra ferramenta em conjunto. 5.3 CONTROLE DE TRÁFEGO O objetivo dos testes documentado abaixo é demonstrar a variedade de possibilidades de classificação dos pacotes IP utilizando o iptables e a eficiência no gerenciamento de tráfego em conjunto à ferramenta Traffic Control (TC) e a disciplina Hierarchical Token Bucket (HTB). 5.3.1 Cenário Segundo Tanenbaum e Wetherall (2011), a princípio, o interesse em interligar dois ou mais computadores fisicamente próximos era a possibilidade do compartilhamento de recursos, como arquivos, impressoras e leitores de CDs, esse