Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > UnderLinux Wiki
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Ferramentas pessoais
Publicidade

From UnderLinux Wiki

Configurando o Squid



Tabela de conteúdo

Introdução

Olá, resolvi escrever esse howto, devido a algumas dúvidas do pessoal com relação a configuração do SQUID.

- Proxy

O que é o SQUID?

O SQUID é um dos Servidores PROXY mais utilizados em todo o mundo, por ele ser seguro, rápido e o principal FREEWARE, servidor PROXY nada mais é do que um servidor que vai distribuir a internet na sua rede, ou seja, todas as máquinas que você quiser vão estar acessando a internet através do seu servidor PROXY, e registrando LOGS, ou seja, você saberá tudo sobre os sites que o pessoal está acessando.



Instalação

Primeiramente, devemos obter o squid, pode ser feito o download através da seguinte URL: www.squid-cache.org/Versions/v2/2.4/, neste howto, eu irei utilizar a seguinte versão: squid-2.4-200205292300.

Após baixar o SQUID, crie um diretório no seguinte caminho: /usr/packages, e copie o SQUID para lá.

Depois, digite o seguinte comando:

# tar xvfz squid-2.4-200205292300.tar.gz.

Entre no diretório que foi descompactado:

# cd squid-2.4-200205292300.

Agora vai depender muito do que vc quer fazer:

Se você quer apenas um proxy, digite o comando:

# ./configure --prefix=/usr/local/squid

Se você quer ter um aumento de performance de até 70%, você vai utilizar além do SQUID mais uma ferramenta chamada DISKD, a primeira coisa a se fazer é recompilar o kernel do seu sistema com algumas opções:

options SYSVMSG
options MSGMNB=16384
options MSGMNI=41
options MSGSEG=2049
options MSGSSZ=64
options MSGTQL=512
options SHMSEG=16
options SHMMNI=32
options SHMMAX=2097152
options SHMALL=3096

Obs: Se você ainda não sabe como recompilar o kernel, aguarde, logo estarei disponibilizando aqui um howto, descrevendo como recompilar seu kernel.

Essas linha foram utilizadas para a seguinte configuração:

  • Dual Pentium III/450MHz
  • 512MB

Analise-as e adeque a configuração do seu servidor.

Quando você for configurar o SQUID, você vai adicionar seguinte opção:

- ./configure --prefix=/usr/local/squid --enable-storeio=diskd.

Com a opção --enable, você está utilizando apenas para habilitar o DISKD.

Após configurar o SQUID, vamos compilá-lo, digitando os seguintes comandos:

# make all 

(Este comando, irá compilar o SQUID propriamente dito).

Quando terminar, digitamos:

# make install 

Este comando irá copiar os binários para os seus devidos lugares.

A próxima coisa a se fazer é configurar o arquivo de configuração, para isso, vamos editar o arquivo /usr/local/squid/etc/squid.conf.


Configuração

Vamos alterar as seguintes opções:

  • http_port : Essa linha irá determinar a porta onde o serviço será utilizado, o default é 3128, mas se você quiser, pode mudar.
  • icp_port : Essa linha, irá determinar a porta de um serviço que pode ser utilizado para fazer uma hierarquia de proxy, a porta default dele é a 3130.
  • cache_mem : Essa linha serve para você determinar quanto em MB você quer que o squid armazene em cache dos sites que foram acessados.
  • cache_dir : Nesta configuração, depende do que você fez lá em cima.

Se você está utilizando apenas o proxy, coloque o seguinte:

cache_dir ufs /usr/local/squid/cache/ 100 16 256.

Se você está utilizando o proxy com o DISKD, coloque o seguinte comando:

cache_dir diskd /usr/local/squid/cache/ 256 16 256 Q1=64 Q2=72.
  • maximum_object_size : Coloque nesta linha a seguinte sintaxe: maximum_object_size 2048 KB.
  • emulate_httpd_log on : Com essa linha você habilita o log do proxy, os logs serão gravados no seguinte arquivo: usr/local/squid/logs/access.log.
  • cache_mgr : Nesta linha, você coloca o e_mail do Administrador, qualquer problema com o servidor, aparecerá esse e-mail, o qual o usuário poderá avisar o Administrador de qualquer problema.
  • visible_hostname : Nesta linha você irá colocar o primeiro nome do seu servidor + o seu domínio, ex: surf.bsd-unix.com.br, essa informação apareerá nas telas de erro, (Quando o endereço não for achado, quando o site estiver bloqueado, quando der timeout, etc).
  • cache_effective_user nobody e cache_effective_group nogroup: nestas duas linha, você deve colocar o nome e o grupo do usuário que vão ser responsáveis pelo funcionamento do serviço, inclusive gravar logs, acessar a cache, etc.

- Crie a seguinte sintaxe:

acl localnet src 172.20.40.0/255.255.252.0

Nesse caso, você está especificando sua classe de IP, e está armazenando dentro da acl LOCALNET (esse nome, eu defini, você pode colocar qualquer outro que você queira...).

- Crie mais essa sintaxe:

http_access allow localnet'''

Neste caso, você está dando acesso a todos que estão dentro da acl localnet.

Com isso, terminamos a configuração do SQUID, agora vamos a inicialização do serviço.

Primeira coisa a se fazer, é dar permissão ao usuário:

Crie o diretório de cache

# mkdir /usr/local/squid/cache

Dê permissão de gravação no diretório de cache

# chmod 777 /usr/local/squid/cache

Dê permissão de gravação no diretório de logs

# chmod 777 /usr/local/squid/logs

Dê permissão de gravação no diretório de erros, importante para verificar quando der algum problema com o serviço...

chmod 777 /usr/local/squid/etc/errors

Comando para mudar o dono do seguinte diretório

chwon nobody.nogroup /usr/local/squid/cache

Com esse comando ele irá criar os SWAP DIRECTORY

/usr/local/squid/bin/squid -z

Com esse comando, você está habilitando o serviço e também desabilitando o teste de DNS, esse parametro -D deve ser utilizado apenas na primeira vez que é executado, depois as próximas, é utilizado apenas: /usr/local/squid/bin/squid.

/usr/local/squid/bin/squid -D

Para testar, digite telnet localhost 3128.


Proxy Transparente

Depois de fazer todas as configurações que acabamos de fazer, para que o TRANSPARENT PROXY funcione, precisamos recompilar o kernel com as seguinte options:

  • options IPFILTER
  • options IPFILTER_LOG

Temos que entrar no diretório de instalação do SQUID: /usr/packages/squid-2.4-200205292300

Digitamos o comando para configurar o SQUID com o Proxy Transparente:

- ./configure --prefix=/usr/local/squid --enable-storeio=diskd --enable-ipf-transparent
  • ./configure - Comando utilizado para configurar o squid
  • --prefix=/usr/local/squid - Com esse parametro, você força ele a instalar o SQUID neste diretório.
  • --enable-storeio=diskd - Com esse parametro, você está habilitando a ferramenta DISKD (Utilizada para aumentar a performance do cache).
  • --enable-ipf-transparent - Com essa opção, você está habilitando o proxy transparente, mas não é só isso, temos que fazer mais algumas coisas.
  • make - Comando para compilar o SQUID.
  • make install - Com esse comando ele irá copiar todos os binários e executáveis para os seus devidos lugares.


Após isso, edite o arquivo /usr/local/squid/etc/squid.conf e adicione as seguinte linhas:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Após executar essas alterações no arquivo de configuração do proxy devemos configurar o IPFILTER.

pico /etc/ipf.conf 

Com esse comando ele irá criar o arquivo ipf.conf.

Coloque o seguinte conteúdo:

pass in all

Agora devemos configurar o IPNAT

pico /etc/ipnat.rules

Coloque o seguinte conteúdo:

rdr rl0 0.0.0.0/0 port 80 -> 200.250.43.17 port 3128 tcp

No lugar do IP 200.250.43.17, coloque o IP do seu servidor Proxy

Agora vá ao seguinte diretório: /usr/local/etc/rc.d

Crie o arquivo inicia.sh com o seguinte conteúdo:

#!/bin/sh
ipf -Fa -E -f /etc/ipf.conf
ipnat -CF -f /etc/ipnat.rules

Salve o arquivo e de a seguinte permissão para ele:

chmod 755 inicia.sh

Agora vamos executar o Proxy, digite o seguinte comando:

/usr/local/squid/bin/squid

Vamos agora iniciar o IPFILTER com o seguinte comando:

ipf -Fa -E -f /etc/ipf.conf

Por último temos que iniciar o IPNAT, que pode ser feito através do seguinte comando:

ipnat -CF -f /etc/ipnat.rules

Importante: Não esqueça de apontar o default gateway das máquinas cliente para o IP do servidor Proxy.

Se você ainda quiser ganhar mais ainda em performance, não perca o howto sobre SOFTUPDATES, que logo estará disponível.


Hierarquia de Proxy

Para você configurar uma hierarquia de proxy é muito simples, isso é feito através da seguinte linha: cache_peer.

  • cache_peer : Comando utilizado para fazer a hierarquia.
cache_peer 200.250.43.17 parent 3128 3130 no-digest no-query no-netdb-exchange

Logo após vem o IP do Servidor por onde você quer passar.

  • 3128 : http_port do servidor Proxy.
  • 3130 : icp_port do servidor Porxy.

Depois vem as options.

Depois é só reiniciar o serviço, digitando os seguinte comandos:

- killall squid
- killall squid
- /usr/local/squid/bin/squid


Bloqueando sites e restringindo horários de acesso

Todas as restrições e bloqueios são feitos no próprio arquivo de configuração: /usr/local/squid/etc/squid.conf

Para bloquearmos domínios, devemos proceder da seguinte maneira:

Editar o arquivo e digitar:

acl pro_domain dstdomain "/usr/local/squid/block/pro_domain"

Nesta linha você estará definindo o arquivo onde estará os domínios que serão bloqueados.

http_access deny pro_domain

Essa linha tem que vir antes da http_access allow localnet

Salve o arquivo e crie o seguinte diretório: mkdir /usr/local/squid/block

Edite o arquivo pro_domain para colocarmos os domínios bloqueados.

.cade.com.br
.bol.com.br

Não esqueça de reinicar o SQUID.

Para bloquear URL´s (Palavras chaves) iremos fazer assim:

acl pro_url url_regex "/usr/local/squid/block/pro_url"

Nesta linha você estará definindo o arquivo que contém as palavras chaves definidas.

http_access deny pro_url

Essa linha tem que vir antes da http_access allow localnet

Edite o arquivo pro_url

chat
sexo

Agora é só reiniciar o SQUID.

Se você quiser proibir alguma máquina da sua rede de acessar a internet, você deve proceder da seguinte maneira.

acl pro_url src "/usr/local/squid/block/pro_ip"

Nesta linha você estará definindo o arquivo que contém o ip das máquinas proibidas de acessar a internet.

http_access deny pro_ip

Essa linha tem que vir antes da http_access allow localnet

Edite o arquivo pro_ip

172.20.42.59
172.20.42.106

Agora é só reiniciar o SQUID.

Para restringir horários de acesso, basta você adicionar a seguinte linha no seu arquivo de configuração:

Edite o arquivo de configuração do SQUID e adicione a seguinte linha:

acl horario_restrito time SMTWHFA 12:00-15:00
http_access allow localnet horario_restrito

Reinicie o SQUID

url_rewrite

Em breve.

Autenticação de Usuários

Usando Autenticacão em Servidor NT/AD (NTLM)

Esse tipo de autenticacao é conhecida como NTLM .
O servidor faz a requisicao direta do usuario que esta logado na maquina , sendo assim não é necessário nenhuma validacão de senha vinda do usuário .

Pacotes necessários

samba-3.0.14a-2
samba-common-3.0.14a-2
samba-client-3.0.14a-2

Obs.: As versões nao precisam ser especificamente estas ,

Configurando o Samba

Após ter instalado o samba , vamos configurá-lo!
/etc/samba/smb.conf

[global]
# Nome do dominio Windows
workgroup = nome_do_dominio 
# Nome da maquina que voce quer adicionar no domínio
netbios name = nome_da_maquina_proxy
# Identificacao do Server - Pode ser qualquer coisa !
server string = Samba Server - Nome
# Arquivo de log por usuario   
log file = /var/log/samba/%m.log
# Tamanho do Log
max log size = 50
# Fala pro samba que esta maquina vai ser um membro do dominio
security = domain
# Os servidores de autenticacao , em ordem , Primario Secundario
password server = 192.168.0.8 192.168.0.4
# Alguns Tweaks
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# 
local master = no
# Faz a maquina nao ser um domain master
domain master = no
# 
preferred master = no
# Nao resolve nomes pelo server WINS   
dns proxy = no



/etc/samba/winbind.conf

# Dominio
workgroup = domain_name
# Nome da maquina
netbios name = name
# Servidores de Autenticão 
password server = 192.168.0.8 192.168.0.4
# Nossa máquina vai ser um domain member
security = domain
# Informa o range de uid (user ID) e gid (group ID) a ser usado. 
winbind uid = 10000-20000
winbind gid = 10000-20000
# Usar sempre o domínio o qual a máquina foi inserida
winbind use default domain = yes


Adicionando a Maquina no Dominio

Para adicionar a maquina no dominio tenha certeza que o firewall libera conexão entre o Server do Samba e os servidores de autenticacão :

----
Estamos levando em conta que :
Temos 2 servidore de autenticacão ($_AUTH_1 - $_AUTH_2);
A máquina do samba é a mesma do squid e do firewall ;
As interfaces de entrada e saida sao as mesmas ;
----

for SRV_NTLM in $_AUTH_1 $_AUTH_2 ; do
   while read PORT PROTO ; do
      iptables -A OUTPUT -o $D2  -d $SRV_NTLM -p $PROTO --dport $PORT -j ACCEPT
      iptables -A INPUT  -i $D2  -s $SRV_NTLM -p $PROTO --sport $PORT -j ACCEPT
   done <<EOF
137 UDP
138 UDP
139 TCP
445 TCP
EOF
done






Para adicionar a maquina vamos usar a ferramenta NET :

net rpc join -S SERVIDOR -U USUARIO -w DOMINIO -d4


A unica opcão diferente é a '-d4' , que define degub como 4 .

Caso a mensagem de retorno seja :
Joined domain NOME_DO_DOMINIO.
Então tudo ocorreu como esperado .
Caso ele retorne uma mensagem de erro , aumente o DEBUG e veja o que aconteceu .






Para vermos se tudo ocorreu bem , usamos outro comando , o wbinfo

wbinfo -t


Esperamos a saída :
checking the trust secret via RPC calls succeeded
Caso contrário , insira a máquina no domínio outra vez e tente denovo .


Modificando o Squid.conf


No nosso squid.conf basta adicionarmos as seguintes entradas :

auth_param ntlm  program /usr/bin/ntlm_auth --debuglevel=1 -s /etc/samba/winbind.conf --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm  children 64
auth_param ntlm  max_challenge_reuses 5
auth_param ntlm  max_challenge_lifetime 10 minutes

acl password proxy_auth REQUIRED
http_acess allow minha_rede password

Lembretes

Não esqueca de colocar os servicos do samba e do winbind para iniciarem no boot da máquina


NCSA

A autenticação de usuários é feita através de um software a parte chamado NCSA.

Primeiramente devemos copiar o executável o software de autenticação para /usr/bin, ou seja para que você possa digitar o comando diretamente.

Para isso digite o seguinte comando:

# cp /usr/lib/squid/ncsa_auth /usr/lib

Para gerar a primeira senha, você deve digitar o seguinte comando:

# htpasswd -c /usr/local/squid/etc/passwd marcus

Para gerar as demais, digite:

# htpasswd /usr/local/squid/etc/passwd joao

A diferença além do usuário é a opção -c, que serve para que seja criado o arquivo de senhas.

Em seguida, insira a seguinte linha na configuração so proxy

# pico /usr/local/squid/etc/squid.conf

Adicione estas duas linhas:

authenticate_program /usr/bin/ncsa_auth /usr/local/squid/etc/passwd - Adicione essa linha
acl password proxy_auth REQUIRED - Adicione mais essa linha

Mude a seguinte linha:

http_access allow localnet

para

http_access allow localnet password

Ou seja, você está dando acesso a sua rede local a internet mas pedindo autenticação.


Epílogo

Bom pessoal acho que é isso, logo estarei disponibilizando mais how-tos, espero ter ajudado....

Por Marcus Vinicius Ribeiro

Comentários

Re: Configurando o Squid (Pontos: 1)

por vonlinkerstain (dirceu@vonlinkerstain.com.br) em Segunda, 13 junho 2005 @ 12:06:08

- Show de bola o teu artigo cara, adorei, parece-me que finalmente eu vou configurar um squid redondinho...


Re: Configurando o Squid (Pontos: 1)

por maiconovic (maicon@redematrix.com.br) em Segunda, 05 setembro 2005 @ 10:46:19

Informações do usuário: http://www.redematrix.com.br

- Marcus Vinicius Ribeiro, eu estou com uma só duvida e é um probleminha para mim, mim dar um dica eu uso o Squid Version 2.5.STABLE4 do Red Rat 9.0. esta rodando perfeita mente. Mais quando eu temto abrir minha paginas da esse erro aquir, eu sei que é minha porta WEB que esta bloqueada mais como eu disbloquio isso.?

While trying to retrieve the URL: http://www.minhapagina.com.br/ [www.minhapagina.com.br]

The following error was encountered:

    * Access Denied.
      Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.

Your cache administrator is root.

Generated Mon, 05 Sep 2005 12:53:53 GMT by meus.server.com.br (squid/2.5.STABLE1)


Créditos

Tutorial no underlinux: http://underlinux.com.br/noticia4295.html

Este tutorial foi desenvolvido por Marcus Vinicius Ribeiro e migrado para o wiki por Duca.


Imagem:Avatar olhos spawn 2.jpg --Duca 16:03, 12 Janeiro 2006 (BRDT)

Horários baseados na GMT -3. Agora são 7:25.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.