sábado, 14 de junho de 2014

Configurando Um proxy Squid com autenticação parte II ( mãos a obra)

Olha eu postando novo.
Neste post, mostrarei  passo a passo como se configura um proxy Squid com autenticação tipo NCSA  o mesmo tipo que o apache  servidor WEB usa.

Aqui, vou presumir que você seguiu os passos de instalação do tutorial anterior. Depois mostrarei outras formas de autenticação no Squid.
Vamos relembrar as cores das linhas do arquivo de configuração squid.conf abaixo para fins didáticos.
As linhas em  azul são comentários.
As linhas em vermelho são as configurações adicionadas por mim no tutorial anterior.
As linhas em verde são as que contém, as configurações necessárias para a autenticação deste how-to funcionar. 

Nossa configuração é recomendada para um cenário de uma rede pequena. Onde a maquina com o Squid está configurada como gateway de nossa rede.  Porém, vale lembrar que para rede maiores, geralmente é indicada a configuração do Squid com integração domínio, base de dados LDAP ou base de dados SQL. 


Para utilizarmos a autenticação NCSA no Squid, além do Squid, precisaremos instalar o pacote apache2-utils. Ele nos fornecera o comando htpasswd  com o qual, criaremos os usuários. Este pacote que gera o arquivo criptografado que conterá os usuários. Instalamos o pacote apache2-utils com o comando:

# apt-get install apache2-utils


Vemos mais abaixo, o arquivo de configuração do Squid e os passos adicionais de configuração. Caso não queira ler o post anterior ensinando como instalar o Squid  ou já saiba como. Pule a etapa abaixo:
instalamos o Squid da mesma maneira que ensinando anteriormente com o comando abaixo:
 
# apt-get install squid3

Não podemos esquecer de habilitar o repasse de pacotes como demonstrado abaixo. Editar o arquivo /etc/sysctl.conf:


# vi /etc/sysctl.conf

Encontrar e descomentar a linha contendo:

net.ipv4.ip_forward=1
Aqui, lanço novamente uma observação, para evitar que os usuários burlem seu proxy, devemos usar regras de iptables. Essas regras e suas explicações, eu postarei explicando mais a frente.
 
Agora com o Squid já instalado, o repasse devidamente  habilitado, criaremos o arquivo que contém as senhas e os usuários.  Faremos isso com o comando abaixo:

# htpasswd -c passwd ribeiro

Ao digitar o comando a cima o comando pede a senha e sua confirmação.
você pode digita a senha que  você quiser neste caso teste01

Notemos que passwd aqui, não é o comando passwd e sim, o nome do nosso arquivo de senhas. Poderíamos chamar ele com o nome que quisermos, basta editarmos esta linha no arquivo de configuração do Squid:

acl usuarios proxy_auth "/etc/squid3/passwd"

Poderíamos mudar o nome do seu arquivo para alcatra por exemplo
(Sempre detestei exemplos  com nome de vegetais rs).
para isso teríamos que criar nosso arquivo com o seguinte comando:

# htpasswd -c alcatra ribeiro
 
Nossa ACL ficaria assim:

acl usuarios proxy_auth "/etc/squid3/alcatra"


Obs: O comando htpasswd, cria o arquivo no diretório corrente, ou seja
no diretório onde estamos trabalhando na hora que ele é executado.
Por uma questão de organização o eu criei o arquivo do diretório /etc/squid3/


 Agora vamos dar uma verificada no conteúdo do arquivo criado.


root@squidteste:~# cat /etc/squid3/passwd
ribeiro:$apr1$vPDVWkqe$QeTVr3EMnXSO3P.5D//Qg.
diaadia:$apr1$UTcDf0yv$o6XeTu750xWDm4B/MpFu5/
Notamos as senhas em vermelho estão criptografas. Isto resolve um pouco do nosso problema de segurança. Temos maneiras melhores e mais eficazes de guardar as senhas. Estas, serão demostradas em outros posts.

Para adicionarmos mais usuários, usamos o mesmo comando sem a opção -c. Pois se usarmos ela de novo, destruiremos o arquivo e seu conteúdo.

Com o comando abaixo criamos novos usuarios:

# htpasswd  passwd diaadia

Digitamos o comando acima, agora para criar mais usuários.  O comando novamente pedira a senha do usuário  e sua confirmação.
você pode digita a senha que  você quiser neste caso linux.(recomendo uma senha melhor).
Agora já criamos os usuários. Então, vamos  trabalhar com o Squid propriamente dito.
Vamos editar o arquivo de configuração do Squid, usando nosso editor favorito. Em meu caso o vi. caso não quera copiar e colar o conteúdo, basta  baixar o arquivo aqui.
 Não vamos esquecer que as configurações referentes a sua rede você deve alterar com seu IP, mascara e etc.. 

# vi  /etc/squid3/squid.conf

# porta padrão do squid onde o proxy escutará
http_port 192.168.101.1:3128
# No meu caso 192.168.101.1 a porta padrão do squid é a 3128 mas você pode substitui-la por qualquer # outra de sua preferência como por exemplo a 8080
######## linhas referentes autenticação  por usuários  ############
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
auth_param basic children 5
auth_param basic realm Digite sua senha
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive on
########################################################################
# opções de cache e outras
coredump_dir /var/spool/squid3
cache_mem 1024 MB
# tamanho do cache de memoria RAM usado pelo squid lembrese quanto mais memoria para cache melhor # mas devemos respeitar os limites do hardware
cache_dir ufs /var/spool/squid3 5120 64 64
# diretório e quantidades de subdiretórios do squid
maximum_object_size_in_memory 64 KB
maximum_object_size 700 KB
minimum_object_size 0 kB
#  tamanhos máximo e mínimo de objetos no cache do squid
# limite minimo de ocupação do cache
cache_swap_low 85
# limite maximo de ocupação do cache
cache_swap_high 95
# opções diversas  sobre refresh  em outros protocolos explicarei em outra oportunidade
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

# definições da rede na qual o servidor proxy ira trabalhar
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Log de acesso a paginas
access_log /var/log/squid3/access.log

#Diretório de Paginas de erros
error_directory /usr/share/squid3/errors/Portuguese
# você pode personalizar as sua paginas de erro sempre uma ótima opção
#Portas consideradas seguras pelo servidor proxy
acl SSL_ports port 443
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
############# ACLS Autenticação #####################
acl usuarios proxy_auth REQUIRED
acl usuarios proxy_auth "/etc/squid3/passwd"
############ Fim ###############################
acl CONNECT method CONNECT
acl lan src 192.168.101.0/26
# acls Básicas do squid
# aqui vai uma dica muito importante  a ordem das ACLs é fundamental uma vez que o squid 
# interpreta as ACLs de cima para baixo ou seja se a anterior bloqueia um coisa não adianta #embaixo libera-la que ela ainda estará bloqueada
# ACL que libera o acesso para  os usuários autenticados na rede
http_access allow usuarios
################### FIM #################################################
http_access allow manager localhost
http_access allow localhost
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access deny manager

#   A ACL abaixo é muito importante pois ela nega o acesso a quem não se enquadrar nas
#  condições anteriores ela é muito importante quando o assunto é segurança. explicarei o
#  porque depois
http_access deny all
############################# Fim do arquivo ###############################

Agora só basta reinicializar o Squid com o comando abaixo:

# service squid3 restart



Agora e só testar e configuramos nosso navegador para acessar a internet através do proxy. Como podemos ver nas figuras abaixo:

1º Configuramos o navegador para acessar através do proxy.















 2º  Agora se tudo correu bem ao acessar qualquer pagina o navgador solicitará seu usuário e senha. Como podemos ver nas 3 figuras abaixo:














































Se tudo deu certo é só correr pro abraço.
Espero que este tutorial tenha ajudado.
Referências:
Linux manpages
Arquivo de configuração do Squid.






























Nenhum comentário:

Postar um comentário

Olá, agradeço por seu comentário aqui é o seu espaço para publicar
suas críticas desde já agradeço.