Servidor de internet (NAT, Squid, Sarg)

20
Danilo Filitto

description

Ensina como configurar um Servidor de internet (NAT, Squid, Sarg). Complementa o artigo existente no site www.dfilitto.com.br.

Transcript of Servidor de internet (NAT, Squid, Sarg)

Page 1: Servidor de internet (NAT, Squid, Sarg)

Danilo Filitto

Page 2: Servidor de internet (NAT, Squid, Sarg)

� Configurar as placas de rede◦ Eth0 (ppp0 caso speedy) – internet� DHCP rede do senac◦ Eth1 – rede local� 192.168.0.0 / 255.255.255.0

� Configurar pelo ifconfig, prog. Gráfico ou pelo arquivo interfaces.

Page 3: Servidor de internet (NAT, Squid, Sarg)

� Configurar o iptables para rotear os pacotes◦ modprobemodprobemodprobemodprobe iptable_natiptable_natiptable_natiptable_nat◦ echoechoechoecho 1 > /1 > /1 > /1 > /procprocprocproc////syssyssyssys/net/ipv4//net/ipv4//net/ipv4//net/ipv4/ip_forwardip_forwardip_forwardip_forward◦ iptablesiptablesiptablesiptables ----t t t t natnatnatnat ----A POSTROUTING A POSTROUTING A POSTROUTING A POSTROUTING ----o eth0 o eth0 o eth0 o eth0 ----jjjj MASQUERADE

� O primeiro comando ativa o "iptable_natiptable_natiptable_natiptable_nat", o módulo do Iptables responsável por oferecer suporte ao roteamentode pacotes via NAT. de pacotes via NAT.

� O segundo ativa o "ip_forwardip_forwardip_forwardip_forward", o módulo responsável pelo encaminhamento de pacotes, utilizado pelo módulo iptable_nat.

� O terceiro cria uma regra de roteamento, que orienta oservidor a direcionar para a internet todos os pacotes(recebidos dos clientes) que se destinarem a endereçosque não façam parte da rede local. {eth0 internet}

Page 4: Servidor de internet (NAT, Squid, Sarg)

� Script para compartilhamento#!/bin/sh

# Compartilha a conexãomodprobe iptable_natecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -o eth0eth0eth0eth0 -j MASQUERADE

# Bloqueia pings e protege contra IP spoofing e pacotes inválidosiptables -A INPUT -p icmp --icmp-type echo-request -j DROPiptables -A INPUT -p icmp --icmp-type echo-request -j DROPecho 1 > /proc/sys/net/ipv4/conf/default/rp_filteriptables -A INPUT -m state --state INVALID -j DROP

# Abre para a interface de loopback e para a interface de rede localiptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -i eth1eth1eth1eth1 -j ACCEPT

# Abre para as portas especificadasiptables -A INPUT -p tcp --dport 22222222 -j ACCEPT

# Bloqueia as demais conexões, deixando passar apenas pacotes de respostaiptables -A INPUT -p tcp --syn -j DROP

Page 5: Servidor de internet (NAT, Squid, Sarg)

� O SquidSquidSquidSquid é um servidor proxy quesuporta HTTP, HTTPS, FTP e outros.

� Ele reduz a utilização da conexão e melhoraos tempos de resposta fazendo cache derequisições freqüentes de páginasrequisições freqüentes de páginasweb numa rede de computadores.

Page 6: Servidor de internet (NAT, Squid, Sarg)

� As ACLs (Access Control List) são regras para navegação via proxy.

� As ACLs são dispostas de seguinte forma:◦ acl NOME_DA_ACL TIPO_DA_ACL parâmetro

Page 7: Servidor de internet (NAT, Squid, Sarg)

� Tipos de acls◦ Src:ACL do tipo src (origem) ela trata o IP ou uma

faixa de IP com que o cliente chega no Proxy.◦ Dst:ACL do tipo dst (destino) ela trata o IP de

destino da navegação.◦ Dstdomain:ACL do tipo dstdomain (domínio de ◦ Dstdomain:ACL do tipo dstdomain (domínio de

destino) ela trata o domínio de destino da navegação.◦ Time:ACL do tipo time (tempo) ela trata um

determinado momento baseado em dia da semana e hora.◦ url_regex: ACL do tipo url_regex (expressão regular

na URL) uma determinada entrada na URL

Page 8: Servidor de internet (NAT, Squid, Sarg)

� Tipos de acls◦ Port: ACL do tipo port (porta) ela trata a porta de

destino da navegação.◦ proxy_auth: ACL do tipo proxy_auth (autenticação

no Proxy) ela trata o Login com que o cliente se autentica no Proxy. Requer uma configuração de autentica no Proxy. Requer uma configuração de autenticação.

Page 9: Servidor de internet (NAT, Squid, Sarg)

� Regras das acls◦ http_access:Permite ou nega acessos baseados

nas ACLs pré definidas.� É utilizado seguido de allow ou deny� Se a ACL for precedida de um ponto de exclamação

significa que será a negação da ACL.significa que será a negação da ACL.

� Após qualquer modificação no arquivo deconfiguração do SQUIDSQUIDSQUIDSQUID faz-se necessáriodigitar o comando abaixo para que entremem vigor.◦ squid -k reconfigure

Page 10: Servidor de internet (NAT, Squid, Sarg)

� Instalação◦ aptaptaptapt----getgetgetget installinstallinstallinstall squidsquidsquidsquid

� Configuração◦ Altere i nome do arquivo "////etcetcetcetc////squidsquidsquidsquid////squidsquidsquidsquid....confconfconfconf“

para "////etcetcetcetc////squidsquidsquidsquid////squidsquidsquidsquid.backup.backup.backup.backup“ para "////etcetcetcetc////squidsquidsquidsquid////squidsquidsquidsquid.backup.backup.backup.backup“ ◦ Crie um novo arquivo squid.conf e insira os

seguintes itens no original.

Page 11: Servidor de internet (NAT, Squid, Sarg)

http_port 3128 transparent {conf proxy transparente na porta 3128}visible_hostname gdhgdhgdhgdh {nome do proxy}

cache_mem 64 MB64 MB64 MB64 MB {cache na ram}maximum_object_size_in_memory 128 KB {tamanho max dos objs na men}maximum_object_size 512 MB {tamanho max dos obj na HD}cache_dir ufs /var/spool/squid 4096409640964096 16 256 {cache no disco, n pastas }cache_access_log /var/log/squid/access.log {local do log de acesso}cache_access_log /var/log/squid/access.log {local do log de acesso}

acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl SSL_ports port 443 563acl Safe_ports port 80 21 22 443 563 280 488 591 777 1025-65535acl purge method PURGEacl CONNECT method CONNECT

Page 12: Servidor de internet (NAT, Squid, Sarg)

http_access allow manager localhost

http_access deny managerhttp_access allow purge localhosthttp_access deny purge

http_access deny !Safe_portshttp_access deny CONNECT !SSL_portsacl redelocal src 192.168.1.0/24acl redelocal src 192.168.1.0/24

http_access allow localhosthttp_access allow redelocalhttp_access deny all

Page 13: Servidor de internet (NAT, Squid, Sarg)

� A primeira linha indica a porta utilizada pelo Squid (3128) e que ele deveoperar em modo transparente (transparent).

� A segunda indica o nome do servidor (gdh), que você deve substituirpelo nome do seu. (uname –a)

� As quatro linhas seguintes indicam a configuração do cache. O Squidtrabalha com dois caches distintos, um cache mais rápido, feito namemória RAM, e outro mais lento (porém maior) feito usando espaço doHD.◦ O "cache_mem 64 MB" indica o tamanho do cache na memória RAM, enquanto o◦ O "cache_mem 64 MB" indica o tamanho do cache na memória RAM, enquanto o

"4096" na linha "cache_dir ufs /var/spool/squid 4096 16 256" indica o tamanho docache que será feito no HD, em megabytes. (16 indica número de pastas e 256número de subpastas)

◦ A linha maximum_object_size 512 MB indica o tamanho máximo de arquivo que seráarmazenado no cache (arquivos maiores do que isso serão ignorados), o que evitaque arquivos muito grandes, (como imagens ISO) que você vai baixar apenas umavez, desperdicem espaço no cache.

� A linha "acl redelocal src 192.168.1.0/24" indica a faixa de endereços ea máscara utilizada na sua rede local (o /24 equivale à mascara255.255.255.0). Faz com que apenas micros da rede local possamutilizar o proxy, afastando qualquer possibilidade de que ele fiqueaberto para a Internet, independentemente da configuração do firewall.

Page 14: Servidor de internet (NAT, Squid, Sarg)

� Depois de terminar, reinicie o Squid para que a configuração entre em vigor:◦ ////etcetcetcetc////initinitinitinit.d/.d/.d/.d/squidsquidsquidsquid restartrestartrestartrestart

� Com isso, a configuração do servidor proxy estápronta, mas falta um passo igualmenteimportante, que é ativar a regra de firewall queimportante, que é ativar a regra de firewall quefaz com que os acessos destinados à porta 80,provenientes da rede local sejam encaminhadospara o Squid. Sem isso, as requisições continuamsendo roteadas diretamente, sem passarem peloproxy:◦ iptablesiptablesiptablesiptables ----t t t t natnatnatnat ----A PREROUTING A PREROUTING A PREROUTING A PREROUTING ----i eth0 i eth0 i eth0 i eth0 ----p p p p tcptcptcptcp --------dportdportdportdport 80 80 80 80

----j REDIRECT j REDIRECT j REDIRECT j REDIRECT --------totototo----portportportport 3128312831283128

Page 15: Servidor de internet (NAT, Squid, Sarg)

� Script para compartilhamento#!/bin/sh

# Compartilha a conexãomodprobe iptable_natecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -o eth0eth0eth0eth0 -j MASQUERADEiptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port3128

# Bloqueia pings e protege contra IP spoofing e pacotes inválidos# Bloqueia pings e protege contra IP spoofing e pacotes inválidosiptables -A INPUT -p icmp --icmp-type echo-request -j DROPecho 1 > /proc/sys/net/ipv4/conf/default/rp_filteriptables -A INPUT -m state --state INVALID -j DROP

# Abre para a interface de loopback e para a interface de rede localiptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -i eth1eth1eth1eth1 -j ACCEPT

# Abre para as portas especificadasiptables -A INPUT -p tcp --dport 22222222 -j ACCEPT

# Bloqueia as demais conexões, deixando passar apenas pacotes de respostaiptables -A INPUT -p tcp --syn -j DROP

Page 16: Servidor de internet (NAT, Squid, Sarg)

� O Squid permite bloquear sites indesejadosde forma relativamente simples, onde vocêinclui na configuração uma acl contendo ossites não permitidos e cria uma política deacesso que bloqueia o acesso a eles.acesso que bloqueia o acesso a eles.

� Isso é feito usando o parâmetro "dstdomain" (destination domain). Veja um exemplo:

◦ aclaclaclacl bloqueados bloqueados bloqueados bloqueados dstdomaindstdomaindstdomaindstdomain orkut.com orkut.com orkut.com orkut.com ◦ http_accesshttp_accesshttp_accesshttp_access denydenydenydeny bloqueadosbloqueadosbloqueadosbloqueados

Page 17: Servidor de internet (NAT, Squid, Sarg)

� Se a regra começar a ficar muito grande, vocêtem a opção de transferir as entradas paraum arquivo.

� Neste caso, crie um arquivo de texto simples,com todos os domínios desejados (um porlinha) e use a regra abaixo na configuraçãolinha) e use a regra abaixo na configuraçãodo Squid.

� No exemplo, estou usando o arquivo"/etc/squid/bloqueados":◦ aclaclaclacl bloqueadosbloqueadosbloqueadosbloqueados url_regexurl_regexurl_regexurl_regex ----iiii "/"/"/"/etcetcetcetc////squidsquidsquidsquid/bloqueados“/bloqueados“/bloqueados“/bloqueados“◦ http_accesshttp_accesshttp_accesshttp_access denydenydenydeny bloqueadosbloqueadosbloqueadosbloqueados

Page 18: Servidor de internet (NAT, Squid, Sarg)

� Em alguns ambientes, pode ser mais fácilbloquear inicialmente o acesso a todos os sites eir abrindo o acesso a apenas alguns sitesespecíficos, conforme a necessidade. Neste caso,invertemos a lógica da regra. Criamos umarquivo com sites permitidos, adicionamos aarquivo com sites permitidos, adicionamos aregra que permite o acesso a eles e em seguidabloqueamos o acesso a todos os demais, comoneste exemplo:◦ aclaclaclacl permitidos permitidos permitidos permitidos url_regexurl_regexurl_regexurl_regex ----i "/i "/i "/i "/etcetcetcetc////squidsquidsquidsquid/permitidos“/permitidos“/permitidos“/permitidos“◦ http_accesshttp_accesshttp_accesshttp_access allowallowallowallow permitidospermitidospermitidospermitidos◦ http_accesshttp_accesshttp_accesshttp_access denydenydenydeny allallallall

Page 19: Servidor de internet (NAT, Squid, Sarg)

� Uma segunda possibilidade é usar o parâmetro"dstdom_regex", que permite bloquear sites de umaforma mais geral, com base em palavras incluídas naURL de acesso. Você pode bloquear todas as páginascujo endereço inclua a palavra "sexo", por exemplo.Ao usar esta regra, o Squid verifica a existência daspalavras na URL do site e não no conteúdo da página.palavras na URL do site e não no conteúdo da página.

� Crie mais um arquivo de texto, contendo as palavrasque devem ser bloqueadas (uma por linha) e adicionea regra abaixo, contendo a localização do arquivo:

◦ aclaclaclacl nomesproibidosnomesproibidosnomesproibidosnomesproibidos dstdom_regexdstdom_regexdstdom_regexdstdom_regex "/"/"/"/etcetcetcetc////squidsquidsquidsquid////nomesproibidosnomesproibidosnomesproibidosnomesproibidos““““◦ http_accesshttp_accesshttp_accesshttp_access denydenydenydeny nomesproibidosnomesproibidosnomesproibidosnomesproibidos

Page 20: Servidor de internet (NAT, Squid, Sarg)

� Não existe problema em combinar o bloqueio dedomínios e de palavras dentro da URL, você podelançar mão de uma combinação das duas coisas,de acordo com a situação. Basta usar as duasregras simultaneamente, como em:◦ acl bloqueados url_regex -i "/etc/squid/bloqueados“◦ http_access deny bloqueados◦ acl nomesproibidos dstdom_regex "/etc/squid/nomesproibidos”◦ http_access deny nomesproibidos◦ acl redelocal src 192.168.1.0/24◦ http_access allow localhost◦ http_access allow redelocal◦ http_access deny all