Configurando proxy/cache Squid com autenticação

Publicado por jose claudio em 27/10/2009

[ Hits: 21.638 ]

 


Configurando proxy/cache Squid com autenticação



Bem pessoal, vou configurar um proxy/cache Squid bem simples, mas bem seguro.

Este tutorial é destinado às derivações do Debian e Ubuntu. Vamos colocar a mão na massa!

Atualizando o distro:

# aptitude update

Atualizando o sistema:

# apt-get dist-upgrade

Instalando o Squid 2.7:

# apt-get install squid

O Squid foi instalado e configurado com suas configurações padrões.

Testando o Squid:

# squid -k reconfigure
ok

Agora vamos até o arquivo de configuração do Squid, onde todas as configurações serão feitas.

# cd /etc/squid
# vim squid.conf


### WELCOME TO SQUID 2.7.STABLE4 (claudio.linux@uol.com.br)###

###############
############### Autenticação do usuário

# Aqui será feita a autenticação dos usuários para o acesso a rede pública

auth_param basic program /usr/bin/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Digite seu login LAN-HOUSE
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

##############
############## Porta padrão, Host Name e acl

# Aqui determinamos as portas padrões a serem usadas por todos usuários

http_port 3128
visible_hostname proxy-web claudio.linux@uol.com.br
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # 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

#############
############# Página de erro do squid em acessos bloqueados

# Determinamos que a página de erro do Squid será em português, veja no exemplo abaixo:

error_directory /usr/share/squid/errors/Portuguese

############
############ Bloqueio de sites

# Acl que irá bloquear url e palavras. Ex.: orkut qualquer site com a palavra orkut será barrado.

acl proibir_sites dstdomain "/etc/squid/sites"
acl proibir_palavras url_regex -i "/etc/squid/palavras"

##########
########## Acl password proxy

# Acl de autenticação - esta acl solicitará ao usuário login e senha

acl password proxy_auth REQUIRED

#########
######### Liberação e bloqueio das ACLs

# Neste momento liberamos acessos e bloqueamos acessos, allow libera e deny bloqueia

http_access deny proibir_palavras
http_access deny proibir_sites
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
http_access allow password
http_access allow localhost
http_access allow localnet
http_access deny all
icp_access allow localnet
icp_access deny all
hierarchy_stoplist cgi-bin ?

########
######## Arquivo de log do Squid

# Arquivo de log do Squid, todos os logs de usuários ficam neste arquivo

access_log /var/log/squid/access.log squid

#########
######### Refresh na página

# Determinado de quanto em quanto tempo iremos limpar o cache

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#########
######### Evitando conflito com o Apache

# Evitando conflito com o Apache, pois utilizaremos o Apache

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squid

Agora criaremos as pastas de bloquear sites por palavras:

# cd /etc/squid

O comando touch cria arquivos:

# touch palavras
# touch sites


O comando vim edita um arquivo:

# vim palavras

playboy

A sequência de teclas :wq! salva e sai do vim.

Faça o mesmo para "sites":

# vim sites

www.uol.com.br

:wq!

Reinicie o Squid:

# /etc/init.d/squid stop
# /etc/init.d/squid start


Ou:

# squid -k reconfigure

Agora instalaremos o Apache para criar os usuários do Squid:

# apt-get install apache2

Testando o Apache:

De qualquer máquina da rede digitar o IP do servidor que foi instalado o Apache e o Squid e a seguinte mensagem deverá aparecer:

It works!

Sendo assim, Apache instalado com sucesso!

Depois do Apache instalado, vamos criar os usuários do Squid:

# cd /etc/squid

Criando o usuário root, que será o primeiro usuário do nosso Squid:

# htpasswd passwd -c root
Senha: 123
Repetir: 123

Após o root, crie os demais usuários é só:

# htpasswd passwd usuário
Senha: 1234
Repetir: 1234

Lembrado que o comando ncsa_auth deve estar em /usr/bin.

Após estas configurações é só reiniciar o Squid e configurá-los nos terminais clientes.

Reiniciando o Squid:

# /etc/init.d/squid stop
#/etc/init.d/squid start


Nos terminais clientes, no navegador vá em:

Ferramentas > Opções da internet > Conexões > Configuração de lan

Usar o endereço de proxy igual ao IP da máquina que está rodando o Squid. A porta será a que determinamos em nosso Squid, no caso 3128.

E pronto! Seu proxy/cache está funcionando.

Abraços.

.
Outras dicas deste autor

Upgrade na senha de root

Entendendo as permissões de arquivos no Linux

Samba como controlador de domínio + PDC

Conversão de Arquivo TXT em PHP

Configurando IP estático em uma placa de rede

Leitura recomendada

Firefox não está em pt-BR no Funtoo [Resolvido]

Nano com syntax highlighting

Frostwire e Limewire não abrem?

Teclas de função no Xfce para comandar o volume

VNC como alternativa de login X (para servidores multi-usuários)

  

Comentários
[1] Comentário enviado por manoserpa em 02/01/2011 - 14:44h

Legal o artigo, bastante simples e fácil de entender.

Estou juntando vários artigos e montando um .conf bem completo.

Um abraço.

[2] Comentário enviado por renato_hateen em 31/10/2012 - 11:18h

obrigado pela dicas mais uma pegunta no caso eu gostaria que o usuario fosse o obrigado a fazer a autenticação se não ele não navega de maneira nenhuma mesmo sem precisar configurar o navegador

[3] Comentário enviado por linuxtec em 31/10/2012 - 11:59h

Até onde eu sei, não existe maneira nenhuma de configurar um proxy cache autenticado sem informar o endereço do proxy no navegador, mais existe formas de otimizar este processo:

Vamos imaginar que você utiliza em sua rede interna um SAMBA PDC ou Domain controler em ( Linux ) ou então um Active DIrectory ( Ruinwindows )

Em ambos existe um cara chamado Netlogon, ele é o responsavel de subir seus mapeamentos ou até mesmo scripts e DLLS, sabendo disso mão na massa.


1: Adicione uma regra em seu Script de iptables, jogando todo trafego na porta 80 para a porta do squid 3389

vc deve configurar seu squid nao importa como vc vai proceder se e com proxy transparente ou nao....aki no meu caso na empresas que ja relaizei serviços sempre utilizo proxy onde meus cliente tenham que fazer login, com USER E PASSWORD..., e uso IPTABLES para redirecionar tudo que vim da placa de rede que fala com a internet na porta 80, redireciono para a porta 3128, isso pq se tiver algun funcionario que sacar um pouco de internet, mesmo se ele for la nas propriedades do I.E e tirar as confg do proxy ele nao acessa internet....
e como fazer isso????

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




2: Para não ter que informar o endereço do server + portas no internet explore:

Cria uma GPO se for Ad, ou Adcione uma entrada em seu netlogon, e crie 2 PASSWORD no WINDOWS

1: Vai setar o endereço proxy automático no IE
2: Vai desabilitar a opção ferramentas >> opções >> configuração de LAN etc etc etc .... isso vai inibir o usuário de mudar configurações no navegador.


Procure como fazer estes regedit que entenderá, tenho essas politicas prontas no meu AD, depois qualquer coisa de ensino, add ae no MSN



claudio@linuxtec.com.br



Contribuir com comentário