Proxy/Cache (squid) DHCP Firewall Controle deLuan Gabriel Pereira Dotto – Gerente de TI –...

23
Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 1 Proxy/Cache (squid) DHCP Firewall Controle de Banda (CBQ)

Transcript of Proxy/Cache (squid) DHCP Firewall Controle deLuan Gabriel Pereira Dotto – Gerente de TI –...

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 1

Proxy/Cache (squid)

DHCP

Firewall

Controle de Banda (CBQ)

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 2

INTRODUÇÃO

É com grande prazer que apresentamos a vocês esse minicurso elaborado para você

profissional/estudante de TI.

Neste minicurso será apresentado à implementação de Servidores Linux.

A seguir vamos apresentar os módulos que serão abordados:

Módulo 01: Implementando Servidores de PROXY/CACHE (Squid)

Neste módulo, você verá muitas coisas que são importantes na hora de implementar

um Servidor de Proxy em uma rede corporativa. Benefícios, equipamento, instalação e

configuração, funcionamento, tipos de bloqueios e liberações, tamanhos de cache e

funcionalidades.

Módulo 2: Implementando Servidores de DHCP (Dynamic Host

Configuration Protocol)

Neste módulo vamos falar sobre o DHCP, uma ferramenta excelente que tem como

função distribuir os “ranges” de IP’S de uma determinada rede. Benefícios, instalação,

reserva de IPS.

Módulo 3: Implementando Servidores de Firewall (Iptables)

Chegamos a parte onde será apresentado um dos assuntos mais discutidos na área

de TI hoje em dia, Segurança. Nunca houve tanta preocupação com os dados

corporativos como há hoje. Ao final deste módulo vamos ver como instalar e configurar

um firewall utilizando o IPTABLES do Linux.

Módulo 4: Implementando controle de Banda (CBQ)

E por fim, no entanto não menos importante, veremos a instalação e configuração do

CBQ um eficiente controle de banda que em conjuntos que tudo que foi visto

anteriormente proporcionara uma economia de banda de 30% a 50% da banda de

internet.

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 3

1 IMPLEMENTANDO SERVIDOR PROXY/CACHE COM SQUID

Com a internet cada vez mais acessível a pequenas e médias empresas, um número

imenso de pessoas está se interligando a internet. Além de todos os benefícios

trazidos por ela, como informação em tempo real, comunicação mundial a baixo custo,

contato com possíveis clientes e fornecedores por todo o mundo, a mesma trouxe

alguns problemas. As pessoas tendem a passar cada vez mais tempo navegando por

sites não relativos ao seu trabalho primário, acessam sites que não condizem com a

política da empresa, utilizam a banda de internet destinada a serviços como WEB,

VPN ou ACESSO REMOTO e podem, em muitos casos, acabar infectando toda a rede

da empresa com vírus e worms que são adquiridos em sites impróprios e podem

comprometer toda a estrutura da empresa. Isso sem contar na ameaça sempre

presente de propagação de downloads de softwares piratas e músicas, fatores que

podem complicar a vida de uma empresa durante fiscalizações.

1.2 O que é PROXY

Proxy é o termo utilizado para definir os intermediários entre o usuário e seu servidor.

Mas como assim servidor? Em linhas gerais, todos os dados que você deseja acessar

na internet são disponibilizados por um servidor.

Logo, o servidor proxy atende seus pedidos e repassa os dados do usuário à frente.

O caminho seria: um cliente conecta-se a um servidor proxy e requisita algum serviço,

cabe ao proxy enviar a solicitação do endereço local para o servidor no entanto antes

de repassar a solicitação o mesmo checa seu arquivo de configuração para saber se

não existe algum bloqueio, traduzindo e repassando o seu pedido.

Essa solicitação pode ser algo como um arquivo, um site na web, ou qualquer outro

recurso disponível em outro servidor.

1.3 O que é CACHE

Normalmente, os visualizadores de páginas Web (browsers) fazem conexão direta

com os servidores remotos. Entretanto, eles podem ser configurados para se conectar

a um servidor proxy. Assim, quando um usuário requisita uma página, o browser

primeiramente checa seu cache local. Se a página (URL) não é encontrada, ele a

requisita para o servidor proxy local. Se este tem a cópia (cache hit) e ela não expirou,

ele a retorna imediatamente. Caso esta não esteja no cache (cache miss), ele entrará em

contato com o servidor remoto e fará a transferência, mantendo uma cópia (opcional) em seu

cache e enviando uma cópia para a máquina do usuário.

1.4 Porque utilizar PROXY/CACHE?

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 4

De acordo com a Rede Nacional de Ensino e Pesquisa (RNP), 65% da largura de

banda das empresas são utilizadas em navegação WEB. E esse número tende a

crescer.

Ainda de acordo com a Rede Nacional de Ensino e Pesquisa (RNP) - 2, a utilização de

PROXY/CACHE pode gerar uma economia entre 30 e 50% de banda, além de reduzir

o numero de incidentes por vírus, manter um acesso restrito a sites específicos ao

setor o que proporciona um ganho as atividades exercidas pelos seus funcionários.

1.5 Instalando e configurando PROXY/CACHE (SQUID)

Agora que já sabemos como os serviços de PROXY e CACHE trabalham vamos partir para

implementação e configuração.

Existem diversos tipos de PROXY/CACHE vamos utilizar o SQUID.

A instalação do se da através do comando:

Toda e qualquer configuração do SQUID é feita através do seu arquivo de configuração o

“squid.conf” que se encontra em “/etc/squid/squid.conf”. O arquivo por padrão vem repleto

de regras comentadas visando explicar o funcionamento do mesmo, vamos remover este

arquivo e criar nosso arquivo limpo e com os parâmetros necessários.

Vamos gerar uma copia do arquivo de configuração do SQUID e criar um novo para isso

deverão executar o comando:

Após gerar copia vamos excluir o arquivo original com o comando:

Após exclusão do arquivo vamos recria-lo utilizando nossas regras e parâmetros.

Para isso executamos o comando:

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 5

Exemplo de Squid.conf:

# squid.conf

# Porta que o squid escutara

http_port 3128 transparent

##### Configuracoes de Cache

#############################

cache_mem 256 MB # Memoria ram dedicada ao cache

maximum_object_size_in_memory 100 KB

cache_swap_low 90

cache_swap_high 95

cache_dir ufs /var/spool/squid 45000 20 256

##### Configuracao de logs

###########################

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

pid_filename /var/log/squid/squid.pid # pid - mudamos para esta pasta

para facilitar na identificação de problemas

mime_table /usr/share/squid/mime.conf

diskd_program /usr/lib/squid/diskd

unlinkd_program /usr/lib/squid/unlinkd

error_directory /usr/share/squid/errors/Portuguese

visible_hostname Firewalll

#### Acl de controle

######################

acl all src 0.0.0.0/0.0.0.0 #todo e qualquer range de IP

acl manager proto cache_object

acl localhost src 127.0.0.1/32

acl to_localhost dst 127.0.0.0/8

##### Controle de portas

#########################

acl Safe_ports port 80 22 8080 # http

acl SSL_ports port 443 563 # https, snews

acl SSL_ports port 873 # rsync

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl Safe_ports port 631 # cups

acl Safe_ports port 873 # rsync

acl Safe_ports port 901 # SWAT

acl Safe_ports port 21 # ftp

acl Safe_ports port 3389 #wts

acl CONNECT method CONNECT

acl purge method PURGE

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 6

#ACL Personalizadas

#####################

acl lan src 192.168.0.0/24 # Rede

acl gerentes src "/etc/squid/gerentes"

acl financeiro src "/etc/squid/financeiro"

acl sites_financeiro url_regex -i "/etc/squid/sites_financeiro"

acl sites_proibidos url_regex -i "/etc/squid/sites_proibidos"

acl ext_permitidas urlpath_regex -i "/etc/squid/ext_permitidas"

acl ext_block urlpath_regex -i "/etc/squid/ext_block"

acl sem_net urlpath_regex "/etc/squid/sem_net"

http_access allow gerentes

http_access allow gerentes ext_block

http_access deny sem_net

http_access deny sites_proibidos

http_access allow financeiro sites_financeiro

http_access deny lan ext_block

http_access allow lan

http_access allow manager localhost

http_access deny all

Após criar e editar o novo arquivo deverão dar a ele permissões de execução através

do comando:

OBS – Sempre que o arquivo de configuração for editado o mesmo deve ser

recarregado para que as configurações sejam aplicadas.

Os seguintes comandos podem ser executados para efetuar tais operações:

Existe também o comando:

A partir deste momento estamos com o arquivo de configuração do SQUID pronto, no

entanto isso ainda não é suficiente para que o mesmo já comece a executar seu

trabalho, para tal precisamos fazer configurar as placas de rede e direcionar o trafego

da porta 80 (Porta de comunicação com a internet) para a 3128 (Porta de escuta do

SQUID).

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 7

Cenário:

Internet

Modem (ADSL)IP 10.0.1.1

MiniCurso 01IP 192.168.0.2

MiniCurso 04IP 192.168.0.5

MiniCurso 02IP 192.168.0.3

MiniCurso 05IP 192.168.0.6

MiniCurso 03IP 192.168.0.4

MiniCurso 06IP 192.168.0.7

Eth0 10.0.1.2Eth1 192.168.0.1

Hub/Switch

Vamos dar sequencia aos processos de configuração.

Iremos agora editar as configurações das placas de rede (devem haver duas). Para

isso execute o comando:

Este é o arquivo que contem as configurações de rede “IP”, “MASCARA”, “GATEWAY”

etc.

# /etc/network/interfaces

# Interface de rede local - loopback

auto lo

iface lo inet loopback

# Primeira placa de rede - Internet

auto eth0

iface eth0 inet static

address 10.0.0.2

netmask 255.255.255.0

broadcast 10.0.0.255

network 10.0.0.0

gateway 192.168.0.1 # IP do moden

# Segunda placa de rede - Intranet

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 8

auto eth1

iface eth1 inet static

address 192.168.0.1

netmask 255.255.255.0

broadcast 192.168.0.255

network 192.168.0.0

Com a execução do passo a cima estamos com nossas configurações quase prontas!

Vamos agora compartilhar a conexão com a internet e direcionar o trafego da porta 80 (HTTP) para 3128 (SQUID).

Para isso devemos criar o arquivo onde ficaram essas configurações “rc.firewall” através do comando:

Nele devemos inserir as seguintes regras:

#!/bin/bash

# /etc/etc/init.d/rc.firewall

# Limpa e inicializa os modulos

iptables -F

iptables -t nat -F

iptables -t mangle -F

modprobe iptable_nat

# Proxy transparente (Redireciona para o squid) - eth1 -> Placa de rede da intranet

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Compartilha Internet - eth0 -> Placa de rede da internet

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

Com as configurações prontas basta apenas darmos permissão para execução:

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 9

Agora basta iniciarmos as regras com o comando:

Pronto nosso SQUID já estara atuando de acordo com as regras criadas.

2 IMPLEMENTANDO SERVIDOR DE DHCP

Neste módulo vamos aprender como instalar e configurar o DHCP assim como suas

funcionalidades e benefícios.

Dica: Antes de começar qualquer execução, faça um planejamento, desenhe, esboce,

monte um cronograma, fala levantamentos de custos.... Isso é essencial para qualquer

projeto, não somente para a área de TI.

2.1 O que é DHCP?

O que significa esta sigla e para que serve tê-lo em seu computador.

Quando falamos em redes, existem alguns recursos que são utilizados e facilitam

muito a nossa vida, mas nem os percebemos. Um deles é o protocolo DHCP. Do

inglês Dynamic Host Configuration Protocol (que ficaria, em português, algo como

Protocolo de Configuração Dinâmica de Endereços de Rede), é um protocolo utilizado

em redes de computadores que permite às máquinas obterem um endereço IP

automaticamente.

Este protocolo começou a ganhar terreno aproximadamente em Outubro de 1993,

sendo o sucessor do BOOTP que, embora seja mais simples, tornou-se muito limitado

para as exigências atuais.

2.2 Por que ele é importante?

Digamos que você seja o administrador de uma rede. Se fosse uma rede doméstica

com 3 computadores, não seria trabalhoso atribuir um número de IP e todos os

parâmetros necessários para cada um deles. Agora, se fossem 100, 200 ou mais,

certamente a história seria outra.

O protocolo DHCP faz exatamente isto, por meio dele um servidor é capaz de distribuir

automaticamente endereços de IP diferentes a todos os computadores à medida que

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 10

eles fazem a solicitação de conexão com a rede. Essa distribuição dos IPs é feita em

um intervalo pré-definido configurado no servidor. Sempre que uma das máquinas for

desconectada o IP ficará livre para o uso em outra.

Você já deve ter ouvido que recebe um endereço de IP diferente para cada conexão

de internet, certo? Este é um fato cujo responsável é o DHCP combinado com

protocolos diferentes.

2.3 Como ele faz isso?

Resumidamente, utilizando um modelo cliente-servidor, o DHCP faz o seguinte:

● Quando um cliente conecta-se a uma rede ele envia um pacote com um pedido de

configurações DHCP.

● O servidor DHCP gerencia uma faixa fixa de IPs disponíveis juntamente com as

informações e parâmetros necessários (gateway padrão, nome de domínio, DNS, etc).

● Quando este servidor recebe um pedido, ele entrega um destes endereços e

configurações para o cliente.

2.4 Modos de Funcionamento.

Ele pode operar de três formas: automática, dinâmica e manual.

Automático - No qual uma quantidade de endereços de IP (dentro de uma faixa) é

definida para ser utilizada na rede. Neste caso, sempre que um dos computadores de

uma rede solicitar a conexão com ela, um destes IPs será designado para a máquina

em questão.

Dinâmico - Na dinâmica o procedimento é bem parecido com o efetuado pela

automática, porém a conexão do computador com determinado IP é limitada por um

período de tempo pré-configurado que pode variar conforme desejado pelo

administrador da rede.

Manual - No modo manual o DHCP aloca um endereço de IP conforme o valor de

MAC (Medium Access Control) de cada placa de rede de forma que cada computador

utilizará apenas este endereço de IP. Utiliza-se este recurso quando é necessário que

uma máquina possua um endereço de IP fixo.

Como o DHCP possui suporte para diversas plataformas, ele traz uma solução

eficiente e fornece uma grande ajuda para os administradores de rede. Agora você já

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 11

sabe o que é e o que faz este protocolo de rede, esperamos que todas as dúvidas

referentes ao assunto tenham sido respondidas de forma satisfatória e até a próxima!

2.5 Instalando e Configurando o DHCP

Agora vamos colocar o que aprendemos em prática. A instalação do DHCP no

Servidor Linux é feita através do comando:

Após a conclusão da instalação vamos aos parâmetros de configuração. O arquivo de

configuração vem com uma série de regras comentadas a fim de explicar seu

funcionamento, para que o arquivo não fique poluído vamos gerar uma copia do

arquivo original que se encontra em “/etc/dhcp/dhcpd.conf” e recriá-lo com os

comandos abaixo:

Gerando copia:

Após fazer a copia do arquivos vamos remover o original com o comando:

Após renomear vamos agora recriar nosso arquivo já inserindo as novas regras:

Com o arquivo aberto vamos colocar as seguintes regras:

INTERFACES="eth0";

ddns-update-style none;

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 12

default-lease-time 600;

max-lease-time 7200;

authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {

range 192.168.0.2 192.168.0.50; #Define Range que será passado

option routers 192.168.0.19; # Informa Gateway que será passado

option domain-name-servers 192.168.0.19;#DNS

option broadcast-address 192.169.0.255;

}

MiniCurso-01 {

hardware ethernet 00:1B:B9:6F:03:84;

fixed-address 192.168.0.2;

}

Minicurso-02 {

hardware ethernet 00:00:86:3B:AD:96;

fixed-address 192.168.0.3;

}

Após a criação do arquivo não podemos esquecer de dar permissão para que o

mesmo seja executado.

Para isso devemos executar o comando:

OBS – Para que as regras sejam carregadas reiniciem o serviço de DHCP:

3 Firewall (IPTABLES)

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 13

Apartir do Kernel 2.4 o Linux traz uma inovação no que diz respeito a ferramenta de firewall

padrão do sistema. Bom, como já estamos no kernel 2.6.x, estabilizado no mercado e já sendo

utilizado por diversos servidores espalhados pela web, finalmente podemos falar do IPTABLES.

3.1 O que é IPTABLES?

A definição que esta no manual do iptables é esta:

Iptables é um poderoso Firewall utilizado para criar, manter e inspecionar as tabelas de filtro

de pacotes ip no kernel do linux. Foi desenvolvida por Paul Russel, desenvolvedor do ipchains.

Para que se possa manipular isso de forma eficiente, o iptables criou uma serie de tabelas e

cada uma contém chains (cadeias, rotinas) pré-definidas ou criadas pelo usuário que são

executadas à medida que os pacotes chegam ao sistema operacional. Abaixo elas estão

definidas:

1. raw - Essa eu nunca usei e por isso não tenho muito conhecimento, porém lendo na

documentação disponível on-line da iptables-tutorial eles descrevem que ela tem

uma única finalidade que é a de marcar pacotes que não devem ser manipulados

pelo sistema de rastreamento de conexões (conntrack). Ela possui duas chains

disponíveis que são prerouting e output.

2. mangle - Esta aqui é muito utilizada para a manipulação de pacotes. Geralmente se

usa para mudar (mangle) algum valor como ToS, as marcações FW, TTL entre outros.

É aqui que eu por exemplo marco os pacotes para um tratamento diferenciado de

QoS em meu proxy/gateway! É altamente recomendado NÃO REALIZAR NENHUM

FILTRO nesta tabela, já que existe uma com essa finalidade! Ela possui cinco chains

disponíveis que são prerouting, input, forward, output e postrouting.

3. nat - A função desta tabela é bem sugestiva e ela deve ser utilizada para as

necessidades de tradução de endereços de rede (Network Address Translation). É

nesta tabela que iremos colocar as regras para compartilhar uma conexão de

internet (Masquerade, SNAT) com uma LAN, aqui iremos criar a possibilidade de

alguém localizado na internet acesse um recurso interno da DMZ (como um servidor

web) e coisas desse genero. Ela possui três chains disponíveis que são prerouting,

postrouting e output.

4. filter - E finalmente temos a tabela filter! Essa é a que deve ser usada para filtrar

pacotes, ou seja, permitir ou restringir o acesso! É aqui que você irá verificar a

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 14

direção de um pacote, o que ele contém e tomar uma ação com ele, seja aceitar ou

rejeitar. Ela possui três chains dispoíveis que são input, forward e output.

Agora você me pergunta "e isso tudo que você esta falando ai de prerouting, postouring,

forward, para que serve?".

Bom essas chains são utilizadas para propósitos específicos dentro do ciclo de vida de um

pacote dentro do iptables e das decisões de roteamento do linux, e irei explica-lo agora:

1. prerouting - Esta chain é a primeira a ser processada pelo iptables em qualquer

tabela! Ela tem esse nome pois ela é utilizada antes mesmo do kernel do linux tomar

alguma decisão de roteamento baseado em seu endereço de origem/destino,

marcas FW, etc. Então se você precisa fazer algo desse gênero, aqui é o local!

2. input - Esta é utilizada ÚNICA e SOMENTE para os pacotes que possuem o endereço

de destino o computador/servidor local! Pacotes com outros destinos que não seja

esse não serão afetados por essa chain!

3. forward - Pacotes que passam por aqui possuem endereço de destino que não seja

o computador/servidor local! São pacotes destinados por exemplo para a sua LAN,

para a internet ou para alguma outra rede que seu linux tenha conectado e que este

seja responsável por fazer roteamento. Aqui você pode identificar esses pacotes.

4. output - Esta chain possui a função de inspecionar os pacotes gerados pelo

computador/servidor local! Se você quer proibir que seu computador/servidor local

faça ping aqui é o local (tabela filter)!

5. postrouting - De forma análoga a chain prerouting, esta possui função exatamente

oposta a ela. Os pacotes que passam por aqui já tiveram sua decisão de roteamento

tomada! Aqui é o local onde se pode aplicar o Masquerade, Snat, Dnat!

Com o fluxograma abaixo eu imagino que esse monte de definições ficaram mais claras:

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 15

3.2 Exemplo de regras

#!/bin/bash

# /etc/etc/init.d/rc.firewall

# Limpa e inicializa os modulos

#******************************

iptables -F

iptables -t nat -F

iptables -t mangle -F

modprobe iptable_nat

# Mudando a politica padrao

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD ACCEPT

# Proxy transparente (Redireciona para o squid) - eth1 -> Placa de

rede da intranet

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 16

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --

to-port 3128

# Compartilha Internet - eth0 -> Placa de rede da internet

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

# Liberando o loopback

iptables -A INPUT -s 127.0.0.1 -j ACCEPT

iptables -A INPUT -d 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT

# DO SERVIDOR PRA FORA

######################

# Liberando o ftp

iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT

iptables -A INPUT -p tcp --sport 20 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -p tcp --sport 21 -j ACCEPT

iptables -A OUTPUT -p udp --dport 21 -j ACCEPT

# Liberando Terminal Server

iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -p tcp --sport 3389 -j ACCEPT

iptables -A FORWARD -p udp --dport 3389 -j ACCEPT

iptables -A FORWARD -p udp --sport 3389 -j ACCEPT

#Liberando VNC

iptables -A INPUT -p tcp --sport 5900 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 5900 -j ACCEPT

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 17

iptables -A OUTPUT -p udp --dport 5900 -j ACCEPT

iptables -A INPUT -p udp --sport 5900 -j ACCEPT

# Liberando SMTP UOL

iptables -A FORWARD -p tcp --dport 465 -j ACCEPT

iptables -A FORWARD -p udp --dport 465 -j ACCEPT

iptables -A FORWARD -p tcp --sport 465 -j ACCEPT

iptables -A FORWARD -p udp --sport 465 -j ACCEPT

# Liberando POP UOL

iptables -A FORWARD -p tcp --dport 995 -j ACCEPT

iptables -A FORWARD -p udp --dport 995 -j ACCEPT

iptables -A FORWARD -p tcp --sport 995 -j ACCEPT

iptables -A FORWARD -p udp --sport 995 -j ACCEPT

# Liberando DNS para o servidor

iptables -A INPUT -p tcp --sport 53 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --sport 53 -j ACCEPT

iptables -A INPUT -p tcp --sport 135 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 135 -j ACCEPT

iptables -A OUTPUT -p udp --dport 135 -j ACCEPT

iptables -A INPUT -p udp --sport 135 -j ACCEPT

# Liberando HTTP para o servidor

iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

# Liberando no-ip

iptables -A OUTPUT -p tcp --dport 8245 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 8245 -j ACCEPT

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 18

# Liberando ssh (22) para o servidor

iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --sport 22 -j ACCEPT

# Liberando ping para fora do servidor

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

# DE FORA PARA O SERVIDOR

#########################

# Liberando DNS

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

# Liberando acesso externo ao servidor por SSH (22)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

# Liberando squid

iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT

# Liberando ping vindo dos clientes internos

iptables -A INPUT -s 192.168.0.0/24 -i eth1 -p icmp --icmp-type echo-

request -j ACCEPT

iptables -A OUTPUT -d 192.168.0.0/24 -o eth1 -p icmp --icmp-type echo-

reply -j ACCEPT

# Protecoes contra ataques

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 19

iptables -A INPUT -m state --state INVALID -j DROP

# Protecao contra Syn-floods

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Protecao contra port scanners ocultos

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --

limit 1/s -j ACCEPT

# Protecao contra ping da morte

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit

1/s -j ACCEPT

4 Controle de Banda com Shaper (CBQ)

Estamos chegando ao final deste minicurso e para finalizar vamos agora aprender a

utilizar uma ferramenta muito importante o Shaper (CBQ) que possibilita fazermos um

controle de banda que nos tempos atuais com a quantidade de coisas que temos na

internet somada à falta de conscientização da maior parte dos usuários se torna

fundamental.

4.1 Considerações iniciais:

A grande vantagem do CBQ sobre outros, (traffic Shaper), é permitir o controle não só

do tráfego de downstream trafego de entrada ou também conhecido como download),

bem como o upstream ( trafego de saída também conhecido como upload). Isto é

muito importante principalmente hoje onde temos conexões DSL (Digital Subscriber

Line), sendo instaladas comumente na maior parte das organizações e compartilhadas

entre vários computadores. Note que com raras exceções, uma das características da

tecnologia DSL é ter uma diferença entre as taxas de transferência para o trafego que

entra e o trafego que sai da sua máquina. Comumente o trafego de entrada é superior

já que o fluxo de dados tende a ser maior no sentido servidor-cliente. Já no caso do

trafego de saída, ele tende a ser apenas texto. Portanto no caso de prédios ou

organizações, locais onde temos vários computadores compartilhando o mesmo link é

recomendável limitar também o tráfego de saída, agora, suponhamos que numa

destas máquinas seja instalado um servidor FTP, facilmente ele poderia ocupar todo o

upstream e fatalmente acabaria por comprometer o uso da rede pelas outras estações!

O CBQ também possibilita controlar o trafego sobre um determinado ip e não somente

por interface como o traffic shaper faz.

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 20

4.2 Instalando e configurando.

Para que possamos instalar o Shaper (CBQ) de forma automática devemos editar o arquivo

sources.list adicionando a linha:

deb http://archive.ubuntu.com/ubuntu/ hardy universe

Podemos editar o arquivo através do comando:

Após adicionar a linha citada acima devemos executar o comando:

Agora estamos prontos para instalar o Shaper (CBQ). Para tal devemos executar o

comando:

Com o Shaper instalado devemos criar o arquivo de configuração. Nosso cenário

continua sendo o mesmo citado anteriormente.

Cenário:

Internet

Modem (ADSL)IP 10.0.1.1

MiniCurso 01IP 192.168.0.2

MiniCurso 04IP 192.168.0.5

MiniCurso 02IP 192.168.0.3

MiniCurso 05IP 192.168.0.6

MiniCurso 03IP 192.168.0.4

MiniCurso 06IP 192.168.0.7

Eth0 10.0.1.2Eth1 192.168.0.1

Hub/Switch

Com o Shaper instalado e o cenário definido vamos agora as regras para controle.

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 21

No CBQ, cada classe é configurada através de um arquivo. Os arquivos contendo as

classes ficam em “/etc/shaper”.

Os arquivos de limite de banda para download e upload são criados separadamente.

Vamos agora criar o arquivo para limitar download, para isso execute o comando:

Nele vamos colocar a seguinte regra:

DEVICE=eth1,100Mbit,10Mbit

RATE=128Kbit

WEIGHT=128Kbit

PRIO=5

RULE=192.168.0.0/24

BOUNDED=yes

ISOLATED=yes

Com o arquivo de limitação de banda para download criado vamos agora ao arquivo para limitação de upload. Execute o comando:

E nele vamos colocar as seguintes regras:

DEVICE=eth0,100Mbit,10Mbit

RATE=32Kbit

WEIGHT=3Kbit

PRIO=5

RULE=192.168.1.9/24,

BOUNDED=yes

ISOLATED=yes

OBS – No arquivo para limitação de banda de upload no final do IP deve conter a “,”.

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 22

Abaixo descrição das regras criadas para que todos possam entender o que foi feito.

Device = o dispositivo que vai ser limitado

Rate = a velocidade da banda

Weight = a velocidade de tranferencia (normalmente divide a velocidade por 8 ou 10)

Prio = prioridade da banda (5 é um numero padrao)

Rule = ip ou rede a ser controlada (por ser assim tbm EX: 13.0.0.0/24)

Bounded e Isolated = se tiver em "no" o usuário pode usar a banda excedente.

Após a criação de todos os arquivos de configurações devemos compila-los, para tal

devemos executar o comando:

4.3 Resolvendo erro -maxdepth no CQB

Em algumas distribuições ao compilar ou iniciar o CBQ o mesmo apresenta uma mensagem

“Warning” como se fosse um erro. Para corrigir este problemas devemos efetuar os seguintes

procedimentos.

Primeiro devemos acessar o arquivo do Shaper através do comando:

Em seguida devemos edita-lo da seguinte forma:

As linhas a serem alteradas são:

DE:

A)

CLASSLIST=`find $1 \( -type f -or -type l \) -name 'cbq-*' \

-not -name '*~' -maxdepth 1 -printf "%f\n"| sort`

B)

DEVFIELDS=`find $1 \( -type f -or -type l \) -name 'cbq-*' \

-not -name '*~' -maxdepth 1| xargs sed -n 's/#.*//; \

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri Galvão Mendes – Gerente de Ti – GraficaLog Página 23

PARA:

A)

CLASSLIST=`find $1 -maxdepth 1 \( -type f -or -type l \) -name

'cbq-*' \

-not -name '*~' -printf "%f\n"| sort`

B)

DEVFIELDS=`find $1 -maxdepth 1 \( -type f -or -type l \) -name

'cbq-*' \

-not -name '*~'| xargs sed -n 's/#.*//; \

A mensagem mais especificamente é:

warning: you have specified the -maxdepth option after a non-option

argument (, but options are not positional (-maxdepth affects tests

specified before it as well as those specified after it). Please

specify options before other arguments.

OBS: Na realidade não se trata de um erro e sim de um aviso/warning.