Servidor de internet (NAT, Squid, Sarg)
-
Upload
danilo-filitto -
Category
Education
-
view
1.951 -
download
0
description
Transcript of Servidor de internet (NAT, Squid, Sarg)
Danilo Filitto
� 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.
� 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}
� 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
� 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.
� 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
� 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
� 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.
� 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
� 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.
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
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
� 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.
� 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
� 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
� 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
� 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
� 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
� 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
� 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