
		micdoug
		
		(usa Sabayon)
		
		Enviado em 10/07/2012 - 10:08h 
		Bom dia pessoal.
Eu recentemente implementei um servidor proxy em uma empresa que gerencia acessos na rede atraves das funcoes do squid aliado ao iptables. Nesta empresa o objetivo era bloquear alguns sites e controlar o acesso atraves de login de usuarios, entao foi implantado um proxy com autenticacao. A parte de acesso a internet esta funcionando bem, mas ocorreu um problema onde eu menos esperava, no acesso a uma impressora de rede Samsung scx-4828fn (http://www.samsung.com/br/consumer/it-products/printers-multifunctions/mono-mfp/SCX-4828FN/XAZ-support), inicialmente tivemos que reinstalar a impressora em todas as maquinas para voltar a funcionar depois de ativado o proxy, mas todo dia o acesso de algumas maquinas a impressora e perdido e temos que reinstalar novamente. A configuracao do servidor esta basicamente assim:
  #As portas 139(samba), 22(ssh), 110(email), 53(dns), 25(email), 587(email) e 3128(squid) estao abertas para qualquer maquina da rede interna.
  #Todas as outras portas estao fechadas.
  #O squid esta bloqueando uma serie de sites no horario de servico. No horario de almoco e apos o expediente o acesso fica totalmente liberado.
O mais estranho e que nesta empresa tambem tem uma outra impressora de rede so que da HP, nao lembro o modelo agora, e ela nao apresentou nenhum problema apos a implantacao do proxy.
Se alguem tiver alguma sugestao de possiveis solucoes por favor me ajudem. Desde ja, obrigado.
Abaixo seguem meu script de firewall e o .conf do squid. Ainda sou iniciante entao devem ter alguns errinhos.
################FIREWALL######################
#!/bin/bash
opcao="$1"
local="eth1"
ip_local="192.168.1.0/24"
internet="eth0"
ips_msn="/etc/proxy/firewall/msn/ips_msn_auth"
ips_liberados="/etc/proxy/firewall/msn/ips_liberados"
firewall_start ()
{
  echo "Ativando o firewall"
  echo "Ativando o servico nat"
  #Carregando modulo nat
  modprobe iptable_nat
  #Ativando o ip_forward
  echo "Ativando o encaminhamento de pacotes"
  /etc/rc.d/rc.ip_forward start
  #Ativando nat para toda a rede
  #iptables -t nat -A POSTROUTING -s $ip_local -o eth0 -j MASQUERADE
  #Ativar o nat para ips específicos
  iptables -t nat -A POSTROUTING -s $ip_local -d 192.168.1.254/24 -o $local -j MASQUERADE
  iptables -t nat -A POSTROUTING -s $ip_local -d 192.168.53.0/24 -o $internet -j MASQUERADE
  #Ativar o nat para portas específicas
  #echo "Liberando portas 110, 25, 53, 995, 1863, 587"
  #iptables -t nat -A POSTROUTING -s $ip_local -p tcp -m multiport --dports 110,25,53,995,1863,587,1503 -j MASQUERADE
  #iptables -t nat -A POSTROUTING -s $ip_local -p udp -m multiport --dports 53,1863 -j MASQUERADE
  #Liberando acesso direto de ips específicos para endereços específicos nos arquivos de configuração
  #echo "Liberando acesso ao msn para máquinas cadastradas"
  #for i in `cat $ips_msn`; do
#	for j in `cat $ips_liberados`; do
#	  iptables -t nat -A POSTROUTING -s $j -d $i -o $internet -j MASQUERADE
#	done
 # done
  echo "Ativando o recebimento de pings do servidor"
  iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT #Desativa os pings do servidor
  echo "Desativando o recebimento de pacotes invalidos"
  iptables -A INPUT -m state --state INVALID -j DROP #Desativa o recebimento de pacotes invalidos  tática usada em ataques
  echo "Liberando o acesso da interface loopback"
  iptables -A INPUT -i lo -j ACCEPT #aceita pacotes da interface de loopback
  echo "Liberando acesso da rede local para o servidor"
  iptables -A INPUT -i $local -s $ip_local -j ACCEPT #aceita pacotes da rede local placa eth1
  echo "Liberando a porta 22 para acesso ssh"
  iptables -A INPUT -s $ip_local -p tcp --dport 22 -j ACCEPT #libera a porta 22
  echo "Liberando a porta 3128 do squid"
  iptables -A INPUT -s $ip_local -p tcp --dport 3128 -j ACCEPT
  echo "Bloqueando abertura de conexoes provenientes da internet"
  iptables -A INPUT -p tcp --syn -j DROP #bloqueia conexões provenientes da internet
  echo "Bloqueando conexões não conhecidas"
  iptables -A INPUT -s 192.168.1.254/32 -j ACCEPT
  iptables -A INPUT -i $internet -j ACCEPT
  iptables -P INPUT DROP
  echo "Concluido start"
} 
firewall_stop()
{
  echo "Desativando o firewall"
  echo "Limpando configuracoes da tabela nat"
  iptables -t nat -F
  echo "Limpando configuracoes da tabela filter"
  iptables -t filter -F
  echo "Limpando configuracoes da tabela mangle"
  iptables -t mangle -F
  echo "Desativando o encaminhamento de pacotes"
  /etc/rc.d/rc.ip_forward stop
  echo "Liberando conexões não cadastrados"
  iptables -t filter -P INPUT ACCEPT
  echo "Concluido stop"
}
firewall_restart()
{
  echo "Reiniciando o firewall"
  firewall_stop
  firewall_start
  echo "Concluido restart"
}
case "$opcao" in
'start')
  firewall_start
;;
'stop')
  firewall_stop
;;
'restart')
  firewall_restart
;;
*)
  echo "Use o parametro start, stop ou restart"
esac
###############################################
#################SQUID#########################
###############################################
#Arquivo de configuração do squid baseado nas configurações padrão e do livro Servidores Linux de Carlos E. Morimoto 
#Definindo a porta por onde o squid trabalha 
http_port 3128 
#Configurando o nome do servidor (tem de ser o mesmo definido em hostname) 
visible_hostname Servidor Proxy
#Definindo as mensagens de erro a serem exibidas 
error_directory /usr/local/squid/share/errors/pt-br/
#e-mail do administrador do cache do squid
#cache_mgr BessaComputadores bessateste@hotmail.com
#Indicando o usuário e grupo do sistema que estão relacionados com o serviço do squid
#Lembrar de setar permissão para esse usuario e grupo na pasta de cache
cache_effective_user squid
cache_effective_group squid 
 
#######PROXY AUTENTICADO########### 
#Indica o nome do servidor que vai aparecer na tela de login 
auth_param basic realm Proxy
#Localização do programa responsável pela autenticação e arquivos com as senhas 
auth_param basic program /usr/local/squid/libexec/ncsa_auth /etc/proxy/squid/senhas_squid 
#Cria politica com os usuarios autenticados 
acl autenticados proxy_auth REQUIRED
#Negando acesso a todos nao autenticados
http_access deny !autenticados
#Definindo políticas de acesso (ACLs) e controlando o acesso 
#Deixando liberado o acesso ao proxy para o localhost e hosts da rede local 
#Usando as portas seguras Safe_ports 
acl all src all 
acl manager proto cache_object 
acl localhost src 127.0.0.1/32 
acl SSL_ports port 443 563   
acl Safe_ports port 80		# http 
acl Safe_ports port 21		# ftp 
acl Safe_ports port 443	563	# https, snews 
acl Safe_ports port 70		# gopher 
acl Safe_ports port 210		# wais 
acl Safe_ports port 1025-65535	# portas altas 
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 purge method purge 
acl CONNECT method CONNECT 
#########################POLITICAS DE RESTRICAO################ 
###Criando regras de controle de banda
#acl ip_speed_300 src "/usr/local/squid/etc/arquivos_controle_banda/ipspeed300"
#acl user_speed_300 proxy_auth "/usr/local/squid/etc/arquivos_controle_banda/userspeed300"
#acl extensoes_speed_200 url_regex -i "/usr/local/squid/etc/arquivos_controle_banda/extensoes_speed_200"
#delay_pools 2
#delay_class 1 2 
#delay_parameters 1 -1/-1 45000/45000
#delay_access 1 allow user_speed_300
#delay_class 2 2
#delay_parameters 2 -1/-1 25600/25600
#delay_access 2 allow extensoes_speed_200
######REGRAS PARA LIBERAR ACESSO TOTAL EM DETERMINADO HORÁRIO OU PARA DETERMINADO USUARIO###
###Criando regra de acesso total para usuarios definidos
#acl user_master proxy_auth michael gustavo
#http_access allow user_master
acl admuser dstdomain 192.168.1.254
http_access allow admuser
###Criando regras de horários
acl Trabalho_Manha time 7:15-11:30
acl Trabalho_Tarde time 12:30-17:00
###Liberando sites fora do horario de trabalho
acl Sites_Liberados url_regex -i "/etc/proxy/squid/arquivos_sites/Sites_Liberados"
http_access allow Sites_Liberados !Trabalho_Manha !Trabalho_Tarde
######BLOQUEIO DE SITES#####
###Bloqueando redes sociais e outros sites definidos pela regra###
acl Sites_Bloqueados url_regex -i "/etc/proxy/squid/arquivos_sites/Sites_Bloqueados"
http_access deny Sites_Bloqueados 
##Bloqueando sites por palavras chave ##
##Palavra chave no começo da url
acl Palavras_Proibidas dstdom_regex -i "/etc/proxy/squid/arquivos_sites/Palavras_Proibidas" 
http_access deny Palavras_Proibidas 
##Palavras chave no final da URL
acl Palavras_Proibidas_Final urlpath_regex -i "/etc/proxy/squid/arquivos_sites/Palavras_Proibidas"
http_access deny Palavras_Proibidas_Final 
####BLOQUEANDO DOWNLOADS DE DETERMINADAS EXTENSÕES ###
#Bloqueando downloads de arquivos por extensão 
#acl extensoes_bloqueadas url_regex -i "/etc/proxy/squid/arquivos_sites/download_block" 
#http_access deny extensoes_bloqueadas 
#O arquivo com as extensões deve conter uma extensão por linha no formato \.exe 
###########SEÇÃO EXEMPLO, SE QUISERMOS CRIAR NOVAS REGRAS COPIAR MODELOS AQUI####
###Liberando acesso total para o usuario teste
#acl access_granted proxy_auth teste
#http_access allow access_granted
#Regra com horario 
#acl libera time 10:00-10:40 
#http_access allow libera 
###LIBERAR ACESSO A SITES QUE ESTEJAM SENDO BLOQUEADOS POR ENGANO####
#acl Sites_Liberados url_regex -i "/etc/proxy/squid/arquivos_sites/Sites_Liberados"
#http_access allow Sites_Liberados
#Bloquando por dominio 
#acl Sites_Bloqueados dstdomain 
www.bigbusca.com.br 
#http_access deny Sites_Bloqueados 
#Bloquando por dominios carregados de um arquivo 
#acl bloqueados url_regex -i "/etc/proxy/squid/arquivos_sites/download_block" 
#http_access deny bloqueados 
#Bloqueando por ips (uol no exemplo) 
#acl ip_block dst 200.147.67.142 200.221.2.45 
#http_access deny ip_block 
#Bloqueando por palavras chave na URL carregadas de um arquivo 
#acl bloqueio_palavras dstdom_regex "/etc/squid3/palavrasproibidas" 
#http_access deny bloqueio_palavras 
#Bloqueando downloads de arquivos por extensão 
#acl extensoes_bloqueadas url_regex -i "/etc/squid3/extensoesproibidas" 
#http_access deny extensoes_bloqueadas 
#O arquivo com as extensões deve conter uma extensão por linha no formato \.exe 
########################################################## 
 
http_access allow manager localhost 
http_access deny manager 
http_access allow purge localhost 
http_access deny purge 
http_access deny !Safe_ports 
http_access deny CONNECT !SSL_ports 
acl redelocal src 192.168.1.0/24
http_access allow localhost 
http_access allow redelocal
http_access deny all 
#####################Definindo configurações de cache########################## 
###############Cache em RAM########## 
#Definindo tamanho da cache na memória 
cache_mem 2048 MB 
#Definindo o tamanho máximo dos arquivos que vão para a memória RAM 
maximum_object_size_in_memory 2048 KB 
##############Cache em HD############ 
#Tamanho máximo dos arquivos no cache em disco 
maximum_object_size 2048 MB 
#Tamanho mínimo dos arquivos no cache em disco 
minimum_object_size 0 KB 
#Definindo percentagem aceitável de preenchimento do cache 
cache_swap_low 90 
#Definindo a percentagem máxima de preenchimento do cache, quando o servidor vai começar a apagar arquivos antigos até alcançar a percentagem aceitável 
cache_swap_high 95 
#Definindo a pasta onde o cache será salvo, o tamanho em disco (em MB) e a quantidade de pastas (16) e subpastas (256) 
cache_dir ufs /media/CacheProxy/cache 256000 16 256 
#Definindo onde o arquivo de log do squid será salvo 
cache_access_log /media/CacheProxy/squid.log
access_log /media/CacheProxy/squid_access.log 
#Definindo o tempo minimo e maximo em minutos que o squid começa a verificar atualização dos arquivos q fez cache 
refresh_pattern ^ftp: 15 20% 2280 
refresh_pattern ^gopher: 15 20% 2280 
refresh_pattern . 15 20% 2280