volcom
(usa Debian)
Enviado em 14/04/2009 - 16:49h
Estou preparando um artigo, mas para Debian...que deve servir também para o seu caso!
# apt-get install squid
Primeiro faça uma cópia de backup, sugiro que faça isso com todos os arquivos de configuração, pois se algo der errado temos como reverter usando a versão original do conf, por exemplo:
# cp /etc/squid/squid.conf /etc/squid/squid.conf.bkp
Editando:
# vi /etc/squid/squid.com
O arquivo squid.conf é enorme e muito bem comentando e exemplificado, mas as seguintes linhas já são o bastante para iniciarmos:
# Inicio do arquivo de configuração do Squid
# indica a porta que o Squid usa e habilita a o modo transparente
http_port 3128 transparent
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl localnet src 192.168.1.0/24 # RFC1918 possible internal network
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 purge method PURGE
acl CONNECT method CONNECT
# Minhas Regras
# Consulta o arquivo /etc/squid/direto para a ACL
acl sem_cache url_regex -i "/etc/squid/direto"
# Consulta o arquivo /etc/squid/blockmsn para a ACL
acl bloqueia_msn url_regex -i "/etc/squid/blockmsn"
# # Consulta o arquivo /etc/squid/nega_extensao para a ACL
acl evita_arquivo urlpath_regex -i "/etc/squid/nega_extensao"
#
acl msn dstdomain loginnet.passport.com
#
acl msnmessenger url_regex -i gateway.dll
#
acl msnn req_mime_type -i ^application/x-msn-messenger$
# Consulta o arquivo /etc/squid/lista para a ACL
acl lista_urls_negadas url_regex -i "/etc/squid/lista"
# Consulta o arquivo /etc/squid/listapermitida para a ACL
acl lista_urls_permitidas url_regex -i "/etc/squid/listapermitida"
### ACLs Colaboradores
# Lista dos IPs
# 192.168.1.66 - Colaborador1
# 192.168.1.30 - Colaborador2
# 192.168.1.31 - Colaborador3
# 192.168.1.37 - Colaborador4
# 192.168.1.129 - Colaborador5
# 192.168.1.171 - Colaborador6
# 192.168.1.68 - Colaborador7
# IPs que devem ter acesso ao MSN
acl liberamsn src 192.168.1.66 192.168.1.30 192.168.1.31 192.168.1.37 192.168.1.129 192.168.1.171 192.168.1.68 192.168.1.190
# ACL + NOME_DA_ACL + TIPO + IP
acl Colaborador1 src 192.168.1.68
acl Colaborador2 src 192.168.1.31
acl Colaborador3 src 192.168.1.37
acl Colaborador4 src 192.168.1.30
acl Colaborador5 src 192.168.1.32
acl Colaborador6 src 192.168.1.171
acl Colaborador7 src 192.168.1.154
acl Colaborador8 src 192.168.1.111
acl Colaborador9 src 192.168.1.129
acl Colaborador10 src 192.168.1.45
acl Colaborador11 src 192.168.1.188
acl Colaborador12 src 192.168.1.64
#acl Colaborador13 src 192.168.1.21
# Habilitando as ACLs
# NEGAR acesso ao conteúdo da ACL lista_urls_negadas, exceto as acls precedidas por "!"
http_access deny lista_urls_negadas !lista_urls_permitidas !elizarosilva !bete !jaime !ricardo !marcia !mcpolifemi !marcospereira !itamar !alexandre !julie !gina
# NEGAR acesso ao conteúdo da ACL bloqueia_msn !liberamsn, exceto as acls precedidas por "!"
http_access deny bloqueia_msn !liberamsn
# NEGAR acesso ao conteúdo da ACL evita_arquivo, exceto as acls precedidas por "!"
http_access deny evita_arquivo
# PERMITIR acesso para localnet
http_access allow localnet
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
#
no_cache deny sem_cache
# PERMITIR acesso para a rede local
http_access allow localhost
# NEGAR TUDO que não foi declarado acima para acesso HTTP
http_access deny all
#PERMITIR acesso ICM para rede local
icp_access allow localnet
icp_access allow all
#icp_access deny all
# Diretório onde estão armazenadas as páginas de ERRO/BLOQUEIO exibidas ao usuário
error_directory /usr/share/squid/errors/Portuguese
# FIM DO ARQUIVO DE CONFIGURAÇÃO
Depois disso crie um arquivo de Firewall:
# vi /etc/firewall.sh
Com o seguinte conteúdo:
#!/bin/sh
#
# Script formatado por Daniel Fernandes - São Paulo - SP - Brasil
# E-mail: danwebmail@gmail.com
#
www.vivaolinux.com.br/~volcom">
www.vivaolinux.com.br/~volcom
# Fonte principal:
www.vivaolinux.com.br
# 14/04/2009
#
########## Mensagem de Inicialização do script
echo 'Iniciando a aplicação das Regras do Iptables...'
# Levando em consideração que eth0 = rede externa e eth1 = rede interna
########## Ativa roteamento
echo 1 > /proc/sys/net/ipv4/ip_forward
########## Limpa Regras nas tabelas Filters e NAT
iptables -F
iptables -F -t nat
########## Bloqueia Todas Entradas e Saidas
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
########## Permite ssh para o firewall na rede interna
iptables -A INPUT -p tcp -i eth1 -s 192.168.1.0/24 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth1 -d 192.168.1.0/24 --sport 22 -j ACCEPT
iptables -A FORWARD -p tcp -i eth1 -s 192.168.1.0/24 --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp -o eth1 -d 192.168.1.0/24 --sport 22 -j ACCEPT
########## Cria mascaramento da rede interna com a Internet
iptables -A INPUT -d 192.168.1.4 -p tcp --dport 3128 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
######### Modulos para permitir uso de FTP
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 20:21 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 20:21 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 20:21 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
iptables -A FORWARD -p udp -s 0/0 -i eth0 --sport 20:21 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
# Essas duas linhas agradeço a ajuda do elgio (http://
www.vivaolinux.com.br/perfil/verPerfil.php?login=elgio)
modprobe ip_nat_ftp
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
########## Permite comunicação com servidores DNS
iptables -A FORWARD -p udp -s 192.168.1.0/24 --sport 1024: -d 0/0 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 0/0 --sport 53 -d 192.168.1.0/24 --dport 1024: -j ACCEPT
########## Permite comunicação com protocolo HTTP
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 80 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicação com protocolo HTTPS
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 443 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicação com protocolos 3DES, SHA1
iptables -A FORWARD -p udp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 40002 -j ACCEPT
iptables -A FORWARD -p udp -s 0/0 -i eth0 --sport 40002 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 40003 -j ACCEPT
iptables -A FORWARD -p udp -s 0/0 -i eth0 --sport 40003 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 40004 -j ACCEPT
iptables -A FORWARD -p udp -s 0/0 -i eth0 --sport 40004 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicaç com SERASA Porta 3006
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 3006 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 3006 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicação com Terminal Server
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 3389 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 3389 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite a Rede Local pingar na Internet
iptables -A FORWARD -p icmp --icmp-type ping -s 192.168.1.0/24 -i eth1 -d 0/0 -o eth0 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type pong -s 0/0 -i eth0 -d 192.168.1.0/24 -o eth1 -j ACCEPT
########## Permite a Rede Local acessar um servidor POP3 na Internet
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 110 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite a Rede Local acessar um servidor ESPECIFICO SMTP na Internet
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 201.XXX.XXX.XXX -o eth0 --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s 201.XXX.XXX.XXX -i eth0 --sport 25 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
# Libera TUDO para um determinado IP da rede
# -s 192.168.1.20 = Ip da rede
# -d 192.168.1.4 = Ip do Proxy
iptables -A INPUT -s 192.168.1.20 -d 192.168.1.4 -j ACCEPT
iptables -A INPUT -s 192.168.1.4 -d 192.168.1.20 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.20 -d 192.168.1.4 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.4 -d 192.168.1.20 -j ACCEPT
iptables -A FORWARD -s 192.168.1.20 -d 192.168.1.4 -j ACCEPT
iptables -A FORWARD -s 192.168.1.4 -d 192.168.1.20 -j ACCEPT
########## Permite comunicacao completa de um IP interno da rede para um determinado IP na Internet
########## IP 1
iptables -A FORWARD -s 192.168.1.20 -i eth1 -d 201.XXX.XXX.XXX -o eth0 -j ACCEPT
iptables -A FORWARD -s 201.XXX.XXX.XXX -i eth0 -d 192.168.1.20 -o eth1 -j ACCEPT
########## IP 2
iptables -A FORWARD -s 192.168.1.21 -i eth1 -d 201.XXX.XXX.XXX -o eth0 -j ACCEPT
iptables -A FORWARD -s 201.XXX.XXX.XXX -i eth0 -d 192.168.1.21 -o eth1 -j ACCEPT
########## Permite comunicacao da rede interna com MySQL
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 3306 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 3306 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicacao da rede interna com VNC
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 5900 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 5900 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicacao com servidor SQL
iptables -A FORWARD -p tcp --sport 1433 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1433 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1433 -j DNAT --to-destination 192.168.1.6
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1433 -j DNAT --to-destination 192.168.1.6
########## Permite conexao com Banco Indusval na porta 1414
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 1414 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 1414 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicacao com Banco Rural na porta 8444
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 8444 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 8444 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
########## Permite comunicacao completa para Sabre
iptables -A FORWARD -s 0/0 -i eth1 -d 151.193.180.231 -o eth0 -j ACCEPT
iptables -A FORWARD -s 151.193.180.231 -i eth0 -d 0/0 -o eth1 -j ACCEPT
iptables -A FORWARD -s 0/0 -i eth1 -d 151.193.180.227 -o eth0 -j ACCEPT
iptables -A FORWARD -s 151.193.180.227 -i eth0 -d 0/0 -o eth1 -j ACCEPT
iptables -A FORWARD -s 0/0 -i eth1 -d 151.193.141.254 -o eth0 -j ACCEPT
iptables -A FORWARD -s 151.193.141.254 -i eth0 -d 0/0 -o eth1 -j ACCEPT
iptables -A FORWARD -s 0/0 -i eth1 -d 201.53.42.140 -o eth0 -j ACCEPT
iptables -A FORWARD -s 201.53.42.140 -i eth0 -d 0/0 -o eth1 -j ACCEPT
########## Permite comunicacao com ReceitaNet
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 --sport 1024: -d 0/0 -o eth0 --dport 3456 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 -i eth0 --sport 3456 -d 192.168.1.0/24 -o eth1 --dport 1024: -j ACCEPT
######## Direciona o Acesso remoto pra IP interno
iptables -A FORWARD -p tcp --sport 3389 -j ACCEPT
iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.87
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3389 -j DNAT --to-destination 192.168.1.87
#######################################################################################
########## Redireciona os pacotes para porta 80 para a 3128
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -i eth1 -d 0/0 --dport 80 -j REDIRECT --to-port 3128
########## Redireciona os pacotes para porta 8080 para a 3128
########## iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -i eth1 -d 0/0 --dport 8080 -j REDIRECT --to-port 3128
########## Redireciona os pacotes para porta 443 para a 3128
########## iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -i eth1 -d 0/0 --dport 443 -j REDIRECT --to-port 3128
########## Permite a entrada de pacotes para a porta 3128
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -p tcp --dport 3128 -j ACCEPT
########## Permite a Rede Local enviar pacotes para a porta 80 na Web
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
########## Permite a Rede Local enviar pacotes para a porta 443 na Web
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 443 -j ACCEPT
########## Libera o PROXY, que está dentro do firewall pesquisar na web
iptables -A OUTPUT -p tcp -o eth0 -d -0/0 --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -s -0/0 --sport 443 -j ACCEPT
########## Libera o PROXY, que está dentro do firewall pesquisar DNS
iptables -A OUTPUT -p udp -o eth0 -d -0/0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 -s -0/0 --sport 53 -j ACCEPT
########## Libera o retorno do pacotes do PROXY para a rede local
iptables -A OUTPUT -d 192.168.1.0/24 -o eth1 -p tcp --sport 3128 -j ACCEPT
########## Libera o trafego interno da loopback com ela mesma
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
########## Mensagem de finalização do script
echo 'As regras do Firewall Iptables foram atualizadas!'
Altere as permições:
chmod +x /etc/firewall.sh
Copie o arquivo para rodar na inicialização do sistema:
cp /etc/firewall.sh /etc/init.d/firewall.sh
Algumas alterações devem ser feitas de acordo com seu ambiente, qualquer dúvida, pesquise um pouco na internet (Google por exemplo) e quando precisar postar algo por aqui, deixe o m´[aximo de detalhes e informações possíveis!
Abraço e boa sorte!