André Stato Filho Linux Controle de Redes Visual Books
Sumário 1ª Parte - IP Tables... 15 1 Protocolo... 17 1.1 Modelo de Referência OSI... 17 1.1.1 Camada Física... 18 1.1.2 Camada de Enlace... 18 1.1.3 Camada de Rede... 19 1.1.4 Camada de Transporte... 19 1.1.5 Camada de Sessão... 20 1.1.6 Camada de Apresentação... 20 1.1.7 Camada de Aplicação... 20 1.2 Modelo de Referência TCP/IP... 20 1.3 Protocolo TCP... 22 1.3.1 Estabelecimento e Término de Conexão... 24 1.3.2 Multiplexação... 25 1.3.3 Controle de Fluxo... 26 1.3.4 Confiabilidade... 26 1.4 Protocolo UDP... 27 1.5 Protocolo IP... 27 1.6 Protocolo ICMP... 29 2 Firewall... 33 2.1 Componentes do Firewall... 34 2.2 Tipos de Firewall... 35 2.2.1 Packet Filtering... 35 2.2.2 Proxy Services... 36 2.2.3 Circuit-Level Gateways... 37 2.3 Arquitetura de Firewall... 37 2.3.1 Dual-Homed Host... 37 2.3.2 Screened Host... 38 2.3.3 Screened Subnet Firewall... 39 3 Introdução ao Iptables... 41 3.1 NetFilter... 41 3.2 Comandos do Iptables... 47 3.2.1 Inserindo Regras... 47 3.2.2 Inserindo uma Regra no Início da Tabela... 48 3.2.3 Deletando uma Regra... 48 3.2.4 Substituindo uma Regra... 48 3.2.5 Listando Regras... 49 3.2.6 Removendo Todas as Regras... 49 3.2.7 Zerando Contadores... 50 3.3 Criando Chains... 50 3.3.1 Renomeando Chains... 51 3.3.2 Deletando um Chain... 51
3.4 Políticas-padrão... 51 3.5 Consultando o Help... 52 3.6 Opções do Iptables... 52 3.7 Parâmetros Genéricos do Iptables... 54 3.8 Alvos-padrão... 56 4 Usando o Iptables... 59 4.1 Tabela Filter... 59 4.1.1 O Início... 59 4.2 Parâmetros TCP/UDP... 60 4.2.1 Especificando Porta de Origem... 61 4.2.2 Especificando Porta de Destino... 61 4.2.3 Especificando Flags TCP... 61 4.2.4 Especificando Flags TCP de Início de Conexão... 62 4.2.5 Especificando Flags TCP através de Valores... 62 4.3 Parâmetros ICMP... 63 4.4 Exemplos de Uso na Tabela Filter... 64 4.4.1 Permitindo que o Firewall Acesse ao DNS... 64 4.4.2 Permitindo WWW e SSH no Firewall... 64 4.4.3 Permitindo que o Firewall Acesse a WEB... 65 4.4.4 Permitindo Acesso ao Firewall da Rede Internet... 66 4.4.5 Bloqueando Ping... 66 5 NAT... 67 5.1 Utilizando SNAT... 69 5.1.1 Habilitando Forwarding no Kernel... 69 5.1.2 Compartilhando a Internet para uma Máquina... 70 5.1.3 Compartilhando a Internet para uma Rede... 70 5.1.4 Comunicação entre Redes Privadas... 70 5.1.5 Usando SNAT para um Range de IPs... 71 5.1.6 Usando SNAT para Vários Ranges de IPs... 71 5.1.7 Usando Exceções... 71 5.2 Utilizando MASQUERADING... 72 5.3 Utilizando DNAT... 73 5.3.1 Usando DNAT para um Único Servidor... 73 5.3.2 Fazendo DNAT para um Web Server... 73 5.3.3 Fazendo DNAT para um Terminal Service... 74 5.3.4 Fazendo DNAT para Vários Servidores (Load Balance)... 74 5.3.5 Evitando Problemas de Roteamento Interno... 75 5.4 Utilizando REDIRECT... 76 5.4.1 Redirecionado o Tráfego HTTP para o Proxy Squid... 77 5.5 Utilizando o NETMAP... 78 5.6 Outros Targets... 78 6 Log no Iptables... 79 6.1 Usando o Alvo LOG... 79 6.2 Conhecendo o Formato do Log Iptables... 80 6.3 Opções de LOG... 83 6.3.1 Colando uma Descrição no LOG... 83 6.3.2 Especificando qual Nível de Log do Syslog... 83
6.3.3 Logando Sequência do TCP... 84 6.3.4 Logando Opções Adicionais TCP... 85 6.3.5 Logando Opções Adicionais IP... 85 6.4 Usando Fwlogwatch... 85 6.4.1 Gerando Relatórios... 87 6.4.1.1 Gerando Relatórios Simples... 87 6.4.1.2 Gerando Relatórios de Dois Dias Atrás... 88 6.4.1.3 Gerando Relatórios dos Últimos 200 Registros... 88 6.4.1.4 Gerando Relatórios de Conexões Específicas... 89 6.5 Automatizando Fwlogwatch... 90 6.5.1 O Arquivo Fwlogwatch.config... 90 6.6 Utilizando Fwlogwatch como Daemon... 93 6.6.1 Configurando Manualmente o Fwlogwatch para Trabalhar com Daemon... 94 6.7 Trabalhando o Fwlogwatch com um Servidor WEB... 95 7 Tabela Mangle... 97 7.1 Trabalhando com TOS... 98 7.1.1 Dando Prioridade às Conexões Ssh... 99 7.1.2 Priorizando o Tráfego para o DNS... 101 7.1.3 Priorizando Tráfego Smb... 101 7.1.4 Priorizando Tráfego HTTP de Saída... 101 7.1.5 Priorizando Tráfego Ssh de Entrada... 101 7.2 Trabalhando com o Alvo TTL... 102 7.2.1 Setando o TTL de um Pacote... 102 7.2.2 Decrementando o TTL de um Pacote... 102 7.2.3 Incrementando o TTL de um Pacote... 103 7.3 Trabalhando com o Alvo TCPMSS... 103 7.3.1 Setando o Valor de MSS... 103 7.3.2 Setando o Valor de MSS Automaticamente... 104 8 Módulos Adicionais... 105 8.1 Módulo State... 105 8.2 Módulo Limit... 106 8.3 Módulo Multiport... 109 8.4 Módulo Mac... 110 8.5 Módulo Owner... 110 8.6 Módulo String... 111 8.7 Módulo Iprange... 112 8.8 Módulo Quota... 112 8.9 Módulo Ttl... 113 8.10 Módulo Recent... 114 8.11 Módulo Ipp2p... 118 8.12 Módulo Time... 129 8.13 Módulo Connlimit... 131 8.14 Módulo 7 Filtering... 132 8.14.1 Instalando o Layer 7... 133 8.14.2 Configurando e Compilando o Kernel... 134 8.14.3 Entendendo o Layer 7... 135
2ª Parte - Balanceamentode Link... 141 9 Introdução ao Ip Route... 143 9.1 Ip Route... 143 9.2 Introdução à Ferramenta Ip... 143 9.2.1 Verificando nossas Configurações com o Ip Route... 144 9.2.1.1 Ip Link... 144 9.2.1.2 Verificando as Configurações de Rota com Ip Route... 145 9.2.2 Verificando Vizinhos com Ip Neigh... 146 10 Usando o Ip Address... 147 10.1 Ip Address Add... 147 10.1.1 Exemplos do Ip Address Add... 148 10.2 Ip Address Delete... 148 10.2.1 Exemplos do Ip Address Del... 149 10.3 Ip Address Show... 149 10.3.1 Exemplos do Ip Address Show... 149 10.4 Ip Address Flush... 150 11 Usando o Ip Link... 153 11.1 Ip Link Set... 153 11.1.1 Exemplos Ip Link Set... 154 11.2 Ip Link Show... 155 12 Usando o Ip Neighbor... 157 12.1 Ip Neighbor Add, Ip Neighbor Change e Ip Neighbor Replace... 157 12.1.1 Exemplos do Ip Neighbor Add, Change e Replace... 158 12.2 Ip Neighbor Delete... 158 12.2.1 Exemplos do Ip Neighbor Delete... 158 12.3 Ip Neighbor Show... 159 12.4 Ip Neighbor Flush... 160 13 Usando o Ip Route... 161 13.1 Ip Route Show... 161 13.2 Ip Route Add... 165 13.2.1 Exemplos do Ip Route Add, Change e Replace... 165 13.3 Ip Route Delete... 169 13.3.1 Exemplos do Ip Route Del... 169 13.4 Ip Route Flush... 169 13.5 Ip Route Get... 170 14 Gerenciando com o Ip Rule... 173 14.1 Ip Rule Show... 174 14.2 Ip Rule Add e Delete... 175 14.2.1 Exemplos do Ip Route Add, Change e Replace... 175 15 Fazendo Balanceamento... 179 15.1 Fazendo Balanceamento de uma Rede com Dois ou Mais Links... 179 15.2 Fazendo Balanceamento de Links por Serviços... 182 15.2.1 Usando Iptables com o Alvo MARK... 182 15.2.2 Usando Ip Route com Fwmark... 183
3ª Parte - Qualidade de Serviços - QOS... 185 16 Introdução ao QOS... 187 16.1 Conceitos de QOS... 187 16.2 Alguns Tipos de QOS... 188 16.2.1 MPLS... 188 16.2.2 IntServ... 188 16.2.3 Best Effort... 189 16.2.4 DiffServ Serviços Diferenciados... 189 16.2.4.1 Funcionamento do DiffServ... 190 16.2.4.2 PHB no DiffServ... 191 17 Conhecendo o Traffic Control... 195 17.1 Introdução ao Traffic Control... 195 17.2. Manipulando o Traffic Control... 198 18 Algoritmo FIFO... 201 18.1 First in, First out... 201 19 Algoritmo PRIO... 203 19.1 Prio Queuing... 203 19.2 Exemplos Usando o Algoritmo Prio... 206 19.2.1 Exemplo de Criação de Fila Baseado no TOS... 206 19.2.1.1 Exibindo uma Consulta na Qdisc Baseada em TOS:... 207 19.2.2 Exemplo de Criação de Filas Usando Filtros... 207 19.2.2.1 Exibindo uma Consulta na Qdisc Baseada em Filtros... 209 19.2.2.2 Removendo Regras e Filtros... 210 20 Algoritmo TBF... 211 20.1 Token Bucket Filter... 211 20.2 Usando o Algoritmo TBF... 212 21 Algoritmo SFQ... 217 21.1 Stochastic Fair Queuing... 217 21.2 Usando o Algoritmo SBF... 219 22 Algoritmo RED... 223 22.1 Random Early Detection... 223 22.2 Parâmetros do RED... 224 23 Algoritmo GRED... 227 23.1 GRED x RED... 227 23.2 Usando o Algoritmo GRED... 229 23.2.1 Calculando os Valores dos Parâmetros... 230 23.2.2 Criando a Qdisc Principal de GRED... 232 23.2.3 Visualizando as Entradas do GRED... 234 23.3 Algoritmo GRED com Filtros e Iptables... 235 24 Algoritmo CBQ... 239 24.1 Class Based Queueing... 239 24.2 Usando o Algoritmo CBQ... 240 24.3 Usando o Shaper... 242 24.3.1 Instalação do Script Shaper... 242 24.3.2 Criando um Laboratório para Testes... 242
24.3.3 Criação do Script Shaper... 243 24.3.4 Consultando... 245 25 Algoritmo HTB... 247 25.1 Hierarchical Token Bucket... 247 25.2 Usando o Algoritmo HTB... 248 25.3 HTB com Iptables... 253 25.3.1 Exemplo do Uso de HTB... 253 25.3.2 Exemplo do Uso de HTB por Tipo de Pacote... 255 25.4 HTB com Script htb.init... 257 25.4.1 Exemplo do Uso de HTB.INIT... 260 25.5 HTB-tools... 263 25.6 Checando os Arquivos... 267 25.7 Iniciando o Serviço... 267 26 DSMARK... 269 26.1 DSMARK Queuing Discipline... 269 26.2 Usando o DSMARK... 270 26.2.1 Usando os Campos Mask e Value... 272 26.2.1.1 Exemplo do Uso com Mask Value... 274 26.2.2 Uso com Mask Value com Iptables... 276 26.3 Usando o Campo Tc_index... 280 26.3.1 Exemplo do Uso com o Campo Tc_index... 283 27 Policing... 285 27.1 Policiamento... 285 27.2 Usando o Police... 286 4ª Parte - Roteamento Dinâmico... 289 28 Protocolos de Roteamento Dinâmico... 291 28.1 Quagga... 291 28.1.1 Instalação do Quagga... 292 28.1.2 Utilizando o Quagga... 294 29 Usando o Zebra... 299 29.1 O Zebra... 299 29.2 Estudo de Caso: Redes Estáticas... 304 29.2.1 Configurando a Rede... 304 29.2.2 Consultando a Rede... 305 30 RIP... 307 30.1 Configuração RIP... 307 30.1.1 Acessando o Menu RIP... 307 30.1.2 Habilitando Propagação do RIP em Redes... 308 30.1.3 Habilitando RIP em Interfaces... 308 30.1.4 Especificando um Vizinho RIP... 308 30.1.5 Especificar uma Interface como Passiva... 309 30.1.6 Habilitar Split-horizont em uma Interface... 309 30.2 Controle de Versão no RIP... 309 30.2.1 Removendo a Versão Global... 310 30.2.2 Configurando a Versão RIP para Envio... 310
30.2.3 Configurando a Versão RIP para Recebimento... 310 30.3 Anúncios de Rotas RIP... 310 30.3.1 Distribuindo Rotas do Kernel via RIP... 310 30.3.2 Distribuindo Rotas Conectadas via RIP... 311 30.3.3 Distribuindo Rotas Estáticas via RIP... 311 30.3.4 Distribuindo Rotas OSPF via RIP... 311 30.3.5 Distribuindo Rotas BGP via RIP... 312 30.3.6 Rotas Estáticas no RIP... 312 30.4 Filtrando Rotas RIP... 312 30.5 RIP Manipulação de Métrica... 313 30.6 Distância RIP... 313 30.6.1 Alterando Distâncias Administrativas... 313 30.6.2 Alterando Distâncias Administrativas por Rede... 313 30.6.3 Alterando Distâncias Administrativas por Access-list... 314 30.7 Autenticação RIP... 314 30.7.1 Habilitando a Autenticação em uma Interface... 314 30.7.2 Habilitando a Autenticação sem Criptografia em uma Interface... 314 30.7.3 Configurando a Senha de Autenticação... 315 30.7.4 Configurando uma Chave Md5... 315 30.8 Timers do RIP... 315 30.9 Exibindo Informações RIP... 316 30.9.1 Exibindo Rotas no RIP... 316 30.9.2 Exibindo o Status do RIP... 316 30.10 Comandos de Debug no RIP... 317 30.10.1 Debug de Eventos... 317 30.10.2 Debug de Pacotes... 317 30.10.3 Debug entre o Zebra e o RIP... 317 30.10.4 Debug Total no RIP... 317 30.11 Lab RIP... 317 30.11.1 Dados dos Hosts no Laboratório... 318 30.11.2 Configuração do Laboratório... 319 31 OSPF... 327 31.1 Configuração Ospfd... 327 31.1.1 Acessando o Menu OSPF... 327 31.1.2 Habilitando Router-id no OSPF... 328 31.1.3 Configurando a Forma de Envio no OSPF... 328 31.1.4 Logando Alterações nas Adjacências OSPF... 328 31.1.5 Especificando uma Interface como Passiva... 328 31.1.6 Configurando Delay Inicial e Máximo... 329 31.1.7 Habilitando OSPF nas Interfaces... 329 31.2 OSPF Área... 329 31.2.1 Sumarizando Caminhos... 330 31.2.2 Habilitando Autenticação em uma Área Usando Md5... 330 31.2.3 Especificando uma Senha de Autenticação para o OSPF... 330 31.3 Comandos OSPF para Interface... 331 31.3.1 Autenticando Pacotes OSPF... 331 31.3.2 Habilitando Autenticação Md5 na Interface... 331
31.3.3 Configurando uma Chave Md5 de Autenticação... 331 31.3.4 Alterando o Valor da Métrica para o OSPF... 331 31.3.5 Alterando o Timer de Inatividade... 332 31.3.6 Alterando o Timer para Envio de Pacotes Hello... 332 31.3.7 Alterando a Prioridade do Roteador para Eleição do DR (Designated Router)... 332 31.3.8 Alterando o Tempo para Retransmissão de Estado do Link e Base de Dados... 332 31.4 Anúncios de Rotas OSPF... 333 31.5 Exibindo Informações do OSPF... 333 31.5.1 Exibindo Informações do OSPF... 333 31.5.2 Exibindo o Estado e a Configuração na Interface... 333 31.5.3 Outros Comandos OSPF... 333 31.6 Debugging OSPF... 334 31.7 Lab OSPF... 334 31.7.1 Dados dos Hosts no Laboratório... 335 31.7.2 Configuração do Laboratório... 335 32 BGP... 339 32.1 Configuração BGP... 339 32.1.1 Configurando o AS do BGP... 340 32.1.2 Configurando Router-id... 340 32.2 Distância BGP... 340 32.2.1 Alterando as Distâncias para o BGP... 340 32.2.2 Alterando as Distâncias para Rede Específica... 340 32.3 Anunciando Redes... 341 32.3.1 Anunciando uma Rede Específica... 341 32.3.2 Agregando Redes com o BGP... 341 32.3.3 Redistribute para BGP... 341 32.4 BGP Peer... 342 32.5 Exibindo Rotas BGP... 342 32.5.1 Autonomous System (AS)... 342 32.5.2 Expressões Regulares com AS Path... 343 32.5.3 Exibindo Rotas... 344 32.5.3.1 Exibindo Rotas BGP com Path... 344 32.5.3.2 Exibindo Rotas BGP... 344 32.5.3.3 Exibindo Rotas com Show Ip Bgp... 344 32.5.3.4 Exibindo Rotas com Show Ip Bgp Neighbor... 344 32.6 Outros Comandos... 345 32.7 Lab OSPF... 345 32.7.1 Dados dos Hosts no Laboratório... 346 32.7.2 Configuração do Laboratório... 346 32.7.2.1 Configuração do Roteador Linux... 346 32.7.2.2 Configuração do Roteador Router A com mesmo AS... 348 32.7.2.3 Configuração do Roteador Router B com AS Diferente... 349