O Squid é uma popular ferramenta para a criação de proxy e cache de web e ftp, permitindo que as máquinas de sua rede local compartilhem o acesso à internet controlado por um servidor central, mesmo que elas não tenham acesso direto à Internet. Entre os recursos do Squid, estão a possibilidade de definir listas de controle de acesso, ou seja, determinar quem poderá acessar o quê.
Geralmente este controle de acesso é feito por máquina (mais exatamente, por endereço IP). Entretanto, o Squid tem acesso a permissões por usuário, onde cada pessoa que tentar acessar a web é obrigada a fornecer login e senha (através do browser) para verificação. A verificação pode ser feita de muitas maneiras: através de um arquivo passwd tradicional, ou no formato NCSA (geralmente associado ao utilitário htpasswd), ou ainda através de um servidor LDAP, um PDC de domínio Windows NT, Windows 2003 Server ou módulos PAM.
Para utilizar estas formas de autenticação, você deve compilar o Squid com os módulos de suporte adequados (ou utilizar o que vem em sua distribuição de Linux favorita, caso ele tenha este suporte). Mas uma vez que você tenha compilado, a configuração é simples, como veremos a seguir neste exemplo de autenticação em um domínio Windows 2003 Server.
Autenticando em um Windows 2003 Server
Muitas organizações dispõem de domínios baseados em Windows 2003 Server, onde os usuários de estações de trabalho rodando várias versões de Windows se autenticam. Se for o seu caso, siga as instruções de compilação do Squid e compile o módulo smb_auth, e em seguida copie-o para o local mais apropriado (no nosso exemplo, /usr/local/squid/smb_auth).
Uma vez que todos os arquivos estejam compilados e adequadamente copiados para os locais corretos, está na hora de informar ao Squid onde você colocou o programa autenticador, e os parâmetros com os quais ele deve ser chamado.
No exemplo, vamos considerar que o PDC do domínio Windows tem o endereço IP 192.168.0.1, e o nome do domínio é EXEMPLO. Neste caso, a linha seria como a que segue, retirada diretamente do squid.conf:
authenticate_program /usr/local/squid/smb_auth -W EXEMPLO -U 192.168.0.1
A documentação do smb_auth informa que precisamos incluir um arquivo \netlogon\proxyauth no PDC. Peça ao administrador do seu AD (caso não seja você mesmo) que localize o compartilhamento netlogon do seu servidor, e crie nele um arquivo texto com o nome de proxyauth (e não proxyauth.txt!) contendo simplesmente a palavra allow. Em seguida, dê permissão de Leitura a este arquivo para todos os usuários do domínio que deverão ter acesso à web através do Squid.
Agora só temos que criar as listas de controle de acesso, ou ACLs do Squid. Vamos a alguns exemplos :
1: acl geral proxy_auth REQUIRED
2: acl restritos proxy_auth didi dede mussum zacarias
3: acl horario_coml time 08:00-18:00
4: acl todos src 0/0
5: http_access allow restritos
6: http_access allow geral horario_coml
7: http_access deny todos
A primeira linha define uma ACL chamada geral, do tipo proxy_auth (ou seja, exigência de autenticação utilizando o authenticate_program que definimos acima). O parâmetro REQUIRED indica que qualquer usuário será aceito, desde que ele tenha uma senha no domínio.
A linha 2 cria uma ACL chamada restritos, também do tipo proxy_auth, mas desta vez definindo os nomes de 4 usuários que terão tratamento diferenciado.
As linhas 3 e 4 não têm relação com autenticação - elas definem uma acl chamada horario_coml, como sendo as horas entre 08:00 e 18:00, e outra chamada todos, baseada em endereço IP, e abrangendo todos os endereços de origem (src) possíveis.
As linhas de 5 a 7 definem as regras de acesso, pela ordem:
A linha 5 dá acesso aos componentes da ACL restritos, sem nenhum qualificativo adicional: didi, dede, mussum e zacarias vão poder utilizar a proxy quando quiserem, desde que informem a senha corretamente.
A linha 6 define que os integrantes da ACL geral podem acessar a proxy apenas durante a vigência da ACL horario_coml - ou seja, qualquer usuário autenticado (exceto os da ACL restritos, já cobertos pela regra anterior) só poderá usar a proxy durante o dia - nada de downloads programados para a madrugada!
A linha 7 nega acesso a todos. Assim, se um usuário não caiu nas duas regras anteriores, ele simplesmente não poderá usar a proxy.
Para o exemplo ficar ainda mais realista, vamos imaginar que exista um site (www.proibido.net) que só deve ser acessado pelo usuario diretor. Para acrescentar esta regra, basta inserir as linhas abaixo entre a linha 4 e a linha 5:
acl proibido dstdomain proibido.net
acl privilegiado proxy_auth diretor
http_access allow privilegiado proibido
http_access deny proibido
Após efetuar as alterações no arquivo de configurações, faça o Squid reler o arquivo de acordo com as instruções de sua distribuição com o comando: /etc/init.d/squid restart.
Usando o módulo MSNT
Outra forma de abordagem de como instalar, e configurar o SQUID para autenticar os usuários no Controlador de Domínio (Active Directory), no Windows 2000/2003, usando o módulo MSNT.
Outra forma de abordagem de como instalar, e configurar o SQUID para autenticar os usuários no Controlador de Domínio (Active Directory), no Windows 2000/2003, usando o módulo MSNT.
Ambiente
Domínio: linuxit
Nome do Servidor: servidor
IP do Servidor: 192.168.0.1
IP do Proxy: 192.168.0.2
Mão na massa
Primeiramente faça o download do squid:http://www.squid-cache.org/Versions/v2/2.5/
Agora descompacte e compile no diretório /usr/local/squid e com erros/notificação em português.
# tar -xvzf squid-2.5.STABLEX.tar.gz
# cd squid-2.5.STABLEX
# ./configure
# make && make install
Será criado o diretório /usr/local/squid, com os principais arquivos do SQUID.
Dentro do diretório serão criados os seguintes sub-diretórios:
# Diretórios de Configurações e erros
/usr/local/squid/etc
/usr/local/squid/share
# Diretórios dos Binários e Libs
/usr/local/squid/sbin
/usr/local/squid/bin
/usr/local/squid/libexec
# Diretórios de Armazenamento do Cache e Log
/usr/local/squid/var/
/usr/local/squid/var/cache/
/usr/local/squid/var/logs/
Após ter compilado é importante que o SQUID não seja executado com o root, Por motivos de segurança sempre crie um usuário/grupo para ser responsável pelo squid.
# groupadd squid
# adduser squid -g squid -s /bin/false
Agora basta atribuir a permissão do usuário e grupo:
# chown -R squid.squid /usr/local/squid/
Feito isso agora vamos criar o link do binário para o SQUID e iniciar
# ln -s /usr/local/squid/sbin/squid /usr/bin/squid
Agora inicie o SQUID com a opção -z para criar os subdiretórios do cache:
# squid -z
# /usr/local/squid/bin/RunCache &
Se estiver tudo correto o SQUID será executado, e gerará um arquivo chamado squid.out, Este arquivo é apenas um log do processo de inicialização do SQUID, que pode ser visualizado.
bash-2.05b
# tail -f /usr/local/squid/var/squid.out2004/10/04 13:36:14 Squid is already running!
Process ID 17042Startup: Mon Oct 4 13:36:24 BRT 20042004/10/04 13:36:24 Squid is already running!
Process ID 17042Startup: Mon Oct 4 13:36:34 BRT 20042004/10/04 13:36:34 Squid is already running!
Process ID 17042Startup: Mon Oct 4 13:36:44 BRT 20042004/10/04 13:36:44 Squid is already running!
Process ID 17042Startup: Mon Oct 4 13:36:54 BRT 20042004/10/04 13:36:54 Squid is already running!
Process ID 17042Startup: Mon Oct 4 13:37:35 BRT 2004
Recomendo que o arquivo squid.out tenha como dono o usuário squid, para acompanhar caso tenha futuros problemas.
# chown squid /usr/local/squid/var/squid.out
Iniciando o Squid Automático
Agora vamos configurar o SQUID iniciar automático, no slackware basta colocar no /etc/rc.local (Slackware).
Para finalizar a instalação e iniciar o SQUID a partir do boot de um servidor Linux, coloque a seguinte linha de comando no /etc/rc.d/rc.local:
su squid /usr/local/squid/bin/./RunCache&
Sendo assim o squid não precisará mais ser iniciado manualmente toda vez que o sistema for religado.
Formas de iniciar, parar e checar o Squid Veja as formas que o Squid pode ser iniciado, reiniciado, checado ou parado.
Para iniciar o squid automático no Debian basta criar um link simbólico:
ln -s /usr/local/squid/sbin/squid /etc/rc2.d/S99squid
O comando squid tem uma série de parâmetros, veja alguns interessantes.
squid -k
{reconfigure/rotate/shutdown/interrupt/kill/debug/check}
reconfigure: Faz com que o squid releia os arquivos de configuração
rotate: Faz com que o squid de o "rotate log"
shutdown: Derruba o squid de uma maneira graciosa, espera as conexões fecharem
interrupt: Derruba o squid sem esperar o fim das conexões
kill: Derruba o squid sem esperar as conexões fecharem nem os logs, só usar em ultimo caso
debug: Ordena o squid a gerar log de depuração máximo ate que seja enviado de novo
check: Verifica se existe uma cópia do squid em execução.
Compilando e Configurando o MSNT
Esse módulo MSNT é para quem deseja usar o SQUID, e autenticação usuário em um controlador de domínio no Windows 2000/2003.
Compilando o MSNT
Entre no diretório /dir/squid-2.5.STABLEX/helpers/basic_auth/MSNT, e agora vamos compilar o MSNT.
# make
# make install
# make clean
Após a compilação será criado os seguintes arquivos no diretório "/usr/local/squid/etc/":
msntauth.conf
msntauth.conf.default
Veja abaixo o conteúdo do arquivo msntauth.conf
# Sample MSNT authenticator configuration file
# Antonino Iannella, Stellar-X Pty Ltd
# Sun Sep 2 15:52:31 CST 2001
# NT hosts to use. Best to put their IP addresses in /etc/hosts.
server PDC BDC dominio
server outro_PDC outro_BDC outro_dominio
# Denied and allowed users. Comment these if not needed.
#denyusers /usr/local/squid/etc/msntauth.denyusers
#allowusers /usr/local/squid/etc/msntauth.allowusers
Entenda as sintaxes acima:
PDC = Nome do Controlador de Domínio Primário.
BDC = Nome do Controlador de Domínio Secundário, caso não tenha coloque o nome do primário.
dominio = Nome do domínio
outro_PDC = Nome do Controlador de Domínio Primário, caso tenha outro AD na rede.
outro_BDC = Nome do Controlador de Domínio Secundário, caso não tenha coloque o nome do primário, e caso tenha outro AD na rede.
outro_dominio = Nome do outro domínio na rede.
Por padrão não cria esses arquivos, mas não tem problema basta criar.
Essa linha abaixo é para bloquear acesso de usuários, basta colocar o login do usuário por linha.
denyusers /usr/local/squid/etc/msntauth.denyusers
Já na linha abaixo é para os usuários que deseja liberar, caso não use esse recurso basta comentar.
allowusers /usr/local/squid/etc/msntauth.allowusers
Agora vamos configurar a rede conforme ambiente citado acima. Veja abaixo como ficaria o arquivo msntauth.conf:
# Sample MSNT authenticator configuration file
# Antonino Iannella, Stellar-X Pty Ltd
# Sun Sep 2 15:52:31 CST 2001
# NT hosts to use. Best to put their IP addresses in /etc/hosts.
server servidor servidor linuxit
#denyusers /usr/local/squid/etc/msntauth.denyusers
#allowusers /usr/local/squid/etc/msntauth.allowusers
Após ter configurado o MSNT, edite o arquivo /etc/hosts colocando o nome do servidor e ip:
192.168.0.1 servidor
Agora basta configurar o SQUID, edite o arquivo squid.conf conforme abaixo:
http_port 192.168.0.2:3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
cache_mem 64 MB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /usr/local/squid/var/cache 100 16 256
cache_access_log /usr/local/squid/var/logs/access.log
cache_log /usr/loca/squid/var/logs/cache.log
cache_store_log /usr/loca/squid/var/logs/store.log
pid_filename /usr/local/squid/var/logs/squid.pid
ftp_user Squid@
ftp_passive on
auth_param basic program /usr/local/squid/libexec/msnt_auth
auth_param basic children 5
auth_param basic realm Proxy - Usuario e Senha
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl usuarios proxy_auth REQUIRED
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 SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow usuarios
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_user squid
cache_effective_group squid
visible_hostname proxy
logfile_rotate 7
error_directory /usr/local/squid/share/errors/Portuguese
coredump_dir none
Após ter feita a configuração, reinicie o squid
# squid -k reconfigure
E se tudo estiver ok, será solicitado o login e senha do usuário cadastro no Controlador de Domínio.
FONTES:
0 comentários:
Postar um comentário