Linux: Instalação de um proxy transparente com Squid

Para configurar Squid e iptables eu vou mostrar abaixo um passo a passo bem simples de fazer.

Este proxy é transparente a fim de facilitar a navegação do usuário sem que ele precise se autenticar no navegador.

Minha configuração:
– System: HP dual Xeon CPU system with 8 GB RAM (good for squid).Sistema: sistema de CPU dual Xeon HP com 8 GB de RAM (bom para squid).
– ii) Eth0: IP:192.168.1.1Eth0: IP: 192.168.1.1
– iii) Eth1: IP: 192.168.2.1 (192.168.2.0/24 network (around 150 windows XP systems))Eth1: IP: 192.168.2.1 (192.168.2.0/24 rede (cerca de 150 sistemas Windows XP))
– iv) OS: Red Hat Enterprise Linux 4.0 (Following instruction should work with Debian and all other Linux distros)Sistema: Red Hat Enterprise Linux 4.0 ou acima (sequência de instruções deve trabalhar com Debian e todas as outras distribuições Linux)

Configuração do servidor

  • Step #1 : Squid configuration so that it will act as a transparent proxy Etapa # 1: configuração do Squid para que ele vai agir como um proxy transparente
  • Step #2 : Iptables configuration Etapa # 2: Configuração Iptables
    • a) Configure system as router a) Sistema Configure como router
    • b) Forward all http requests to 3128 (DNAT) b) Encaminhar todas as solicitações HTTP para 3128 (DNAT)
  • Step #3: Run scripts and start squid service Etapa # 3: Execute scripts e iniciar o serviço squid

Para instalação em sistemas baseados em RED HAT por exemplo Centos use o YUM

Yum install squid

Para instalação em sistema baseados em Debian use o apt-get ou aptitude

Apt-get ou aptitude install squid

Bom depois de instalado o Squid vamos para os arquivos de configuração do squid.

Tanto nos sistemas baseados em Redhat e no Debian os arquivos ficam em /etc

Va em

# Vi /etc/squid/squid.conf

É esperto ou nube como chamam por ai, então faça o backup antes

cp squid.conf para squid.conf.datadobackup

Beleza? Agora que sabe fazer backup dos arquivos de conf. Vamos no squid.conf

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan
  • httpd_accel_host virtual: Squid como acelerador httpd
  • httpd_accel_port 80: 80 é a porta que você deseja atuar como um proxy
  • httpd_accel_with_proxy em: ato Squid tanto como um acelerador httpd local e como um proxy.
  • httpd_accel_uses_host_header em: Header está ligado, que é o nome do host da URL.
  • acl lan src 192.168.1.1 192.168.2.0/24: lista de controle de acesso, só permitem que computadores da rede local para usar squid
  • http_access allow localhost: acesso Squid para LAN e localhost ACL única
  • http_access allow lan: – mesmo que acima –

Aqui está a lista completa de squid.conf para sua referência (grep irá remover todos os comentários e sed irá remover todas as linhas vazias, graças a David Klein para a dica rápida):

# Grep -v “^ #” /etc/squid/squid.conf | sed -e ‘/ ^ $ / d’

OR, experimentar sed (graças a Kotnik para pequeno truque sed)

O resto da configuração:

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
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 to_localhost dst 127.0.0.0/8
acl purge method PURGE
acl CONNECT method CONNECT
cache_mem 1024 MB
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 lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname myclient.hostname.com
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
coredump_dir /var/spool/squid

Configuração de iptables

Em seguida, eu tinha adicionado seguindo regras para encaminhar todas as solicitações HTTP (que vêm para a porta 80) para a porta do servidor Squid 3128:

iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.1:3128

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

Um script maneiro montado em sh para rodar no iptables bem simples

#!/bin/sh
# squid server IP
SQUID_SERVER=”192.168.1.1″
# Interface connected to Internet
INTERNET=”eth0″
# Interface connected to LAN
LAN_IN=”eth1″
# Squid port
SQUID_PORT=”3128″
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state –state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables –table nat –append POSTROUTING –out-interface $INTERNET -j MASQUERADE
iptables –append FORWARD –in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp –dport 80 -j DNAT –to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp –dport 80 -j REDIRECT –to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG

Salve shell script. Executar o script para que o sistema irá funcionar como um roteador e encaminhar as portas:

# chmod +x /etc/fw.proxy
# /etc/fw.proxy
# service iptables save
# chkconfig iptables on

Start ou restart squid:

# /etc/init.d/squid restart
# chkconfig squid on

Desktop / configuração do computador cliente

Apontar todos os clientes de desktop para o seu endereço IP eth1 (192.168.2.1) como Router / Gateway (uso DHCP para distribuir esta informação). Você não tem de configurar-se navegadores individuais para trabalhar com proxies.

Como posso testar o meu proxy Squid está funcionando corretamente?

Veja /var/log/squid/access.log arquivo de log de acesso:

/var/log/squid/access.log # tail -f

O comando acima irá acompanhar todos os pedidos de entrada e log para var log / squid / arquivo / / access_log. Agora, se alguém acessar um site através do navegador, vai registrar informações.

Agora ficou facil, leia atentamente e estude o arquivo, o log é um cara para você analisar seus própruos erros e vai apontar as correções.

Eu espero que tenha ajudado.

Sobre Fabio Silva - MVP Reconnect

MVP Reconnect Microsoft Azure - Entusiasta Office 365 Profissional apaixonado por tecnologia. Perfil generalista mas com profundo conhecimento em varias tecnologias. Mais de 10 anos de skill em ambientes Linux Analista Senior realizando trabalhos: Comunicação unificada Lync 2013, Sharepoint 2013, Exchange 2013, Vmware e Windows 2012 preparado para nuvem, hibrida e on-premisses. Comunicação unificada Lync 2013, Sharepoint 2013, Exchange 2013, Vmware e Windows 2012 preparado para nuvem, hibrida e on-premisses. Implantação de comunicação unificada e mensageria Lync 2013 e Exchange 2013 na empresa Penso Tecnologia. Itcore Consultor Senior em todas soluções Microsoft e Virtualização. Consultor Microsoft e Linux Senior De Julho de 2012 a Março de 2013 Consultor Microsoft e Linux Senior De Maio de 2012 a Setembro de 2012 Tecban (Técnologia Bancaria) Auditor de Sistemas Pleno Março de 2012 a Maio de 2012 Analista de TI Senior Março de 2011 a Março de 2012 Analista de infra-estrutura de redes e desenvolvimento Maio 2007 a Março de 2011 Analista de Redes Março de 2005 a Maio de 2007 Integradora THS Área de Suporte CPD Janeiro de 2004 a Janeiro de 2005 Especializações: Certificado Microsoft Windows 2003, Certificado Zimbra Network Edition, Certificado Sonicwall. Especialização em Messageria Exchange 2007 e 2010. Especialização em Linux

Publicado em 26 de abril de 2016, em Linux e marcado como . Adicione o link aos favoritos. 2 Comentários.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Project THOR

Technical and Human infrastructure for Open Research

randieri.com

Il blog di Cristian Randieri

TEC OFFICE PRODUTIVO

Tec Office Produtivo é um grupo de treinamentos, dicas e tutorias de informática sobre aplicativos utilizados em escritórios.

Gold Recipes

Gols Recipes

Escadas Especiais

Projetos, fabricação e instalação de escadas em geral

Jaqueline Ramos

Devops & Cloud

Blog do Douglas Romão

MVP Office Apps and Services | Modern Workplace and Business Applications Expert

%d blogueiros gostam disto: