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 1
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
Configuration Protocol)
Servidores
de
DHCP
(Dynamic
Host
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 2
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 3
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 4
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 5
#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
http_access
http_access
http_access
http_access
http_access
http_access
http_access
allow gerentes
allow gerentes ext_block
deny sem_net
deny sites_proibidos
allow financeiro sites_financeiro
deny lan ext_block
allow lan
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 6
Cenário:
Internet
Eth0 10.0.1.2
Eth1 192.168.0.1
Modem (ADSL)
IP 10.0.1.1
MiniCurso 01
IP 192.168.0.2
MiniCurso 02
IP 192.168.0.3
MiniCurso 03
IP 192.168.0.4
MiniCurso 04
IP 192.168.0.5
MiniCurso 05
IP 192.168.0.6
MiniCurso 06
IP 192.168.0.7
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 7
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 8
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 9
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 10
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 11
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 12
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 13
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 14
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 15
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 16
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 17
# 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 echorequest -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -o eth1 -p icmp --icmp-type echoreply -j ACCEPT
# Protecoes contra ataques
Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI
Yuri Galvão Mendes – Gerente de Ti – GraficaLog
Página 18
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 19
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
Eth0 10.0.1.2
Eth1 192.168.0.1
Modem (ADSL)
IP 10.0.1.1
MiniCurso 01
IP 192.168.0.2
MiniCurso 02
IP 192.168.0.3
MiniCurso 03
IP 192.168.0.4
MiniCurso 04
IP 192.168.0.5
MiniCurso 05
IP 192.168.0.6
MiniCurso 06
IP 192.168.0.7
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 20
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 21
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 22
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.
Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI
Yuri Galvão Mendes – Gerente de Ti – GraficaLog
Página 23
Download

Luan Gabriel Pereira Dotto – Gerente de TI – AmBev/ConsulTI Yuri