Configurando proxy/cache Squid com autenticação

Publicado por jose claudio em 27/10/2009

[ Hits: 23.210 ]

 


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

Autenticando máquinas Windows 7 no Samba

Configurando IP em uma placa de rede

Configurando IP estático em uma placa de rede

Configurando alias em placa de rede

Entendendo as permissões de arquivos no Linux

Leitura recomendada

Numix no Arch Linux

Corrigindo permissões de partição VFAT

Criar um pendrive de boot do Linux (Live USB) via terminal

Configurando o Debian de uma forma simples

Arch Linux fácil

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts