Squid3 - Autenticar Usuários com PHP e MySQL [RESOLVIDO]

1. Squid3 - Autenticar Usuários com PHP e MySQL [RESOLVIDO]

Jorge Augusto Rabello Pinto
jorgerabello

(usa Ubuntu)

Enviado em 11/10/2015 - 17:34h

Boas, tudo bem pessoal ?
Estou com o seguinte cenário:
Necessidade: Autenticar usuários do squid por meio de um script php com banco de dados mysql
Distribuição: Debian 8
Servidor Proxy: squid3
Firewall configurado com iptables
Servidor LAMP
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Consegui fazer o proxy funcionar no modo transparente, mas preciso que os usuários autentiquem no mysql por meio de uma interface php, após se cadastrarem, o cadastro de usuários já está funcionando, preciso apenas saber como faço o squid ler o programa php que traz os usuarios do banco e autenticar ou não os usuários.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Meu squid.conf está assim:
#Aqui definimos a porta que o servidor utilizara e que o acesso sera transparente
http_port 3128 transparent

#Aqui definimos o nome do host na rede
visible_hostname localhost

#Aqui definimos o email do administrador de rede
cache_mgr jorge.pinto@sp.senai.br

#Aqui definimos o diretorio que contem as mensagens de erros em portugues
error_directory /usr/share/squid3/errors/Portuguese

#Define palavras que se for encontradas na url, a pagina sera ser carregada direto do cache.
hierarchy_stoplist cgi-bin ?

#Define a quantidade de memoria que o servidor ira usar para o cache.
cache_mem 256 MB
#Define o tamanho máximo do objeto que poderá ser armazenado na memória, senão será armazenado no disco rígido.
maximum_object_size_in_memory 2 MB
#Define o tamanho máximo do objeto que poderá ser armazenado no disco rígido, senão será descartado o objeto.
maximum_object_size 8 MB
#Especifica o diretório do cache, aonde será armazenado os objetos
#cache_dir [sistema_arquivos] [diretorio] [tamanho cache] [qtde_diretorios] [qtde_subdoretorios]
cache_dir ufs /var/spool/squid3 256 128 256

#Define o tempo de vida dos objetos no cache, para que sempre o squid for verificá-los e saber se é necessário atualizá-los ou não.
#refresh_pattern [objeto] [tempo em minutos] [porcentagem de alteracao] [tempo em minutos]
refresh_pattern ^ftp: 360 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#Define o caminho para o log de acessos
access_log /var/log/squid3/access.log

#Define o caminho para o log do cache
cache_log /var/log/squid3/cache.log

#Define duas acl (localhost e minharede) do tipo src (IP de origem) e adiciona o ip do servidor e o ip da rede
acl all src all
acl localhost src 127.0.0.1/32
acl minharede src 10.0.0.0/8

#Crie uma acl (manager) com o tipo proto (protocolo) e adicione o protocolo "cache_object"
#O protocolo "cache_object" é usado para obter informações sobre o estado do Squid.
#acl manager proto cache_object

#Permite que apenas o servidor tenha acesso a informacoes do servidor
http_access allow manager localhost
#Nega o acesso aos demais
http_access deny manager

#Cria uma acl do tipo method (método de requisição) e adicione o método PURGE
#O método de requisição PURGE serve para limpar/excluir objetos armazenados no cache.
acl purge method PURGE

#Configura para que apenas o servidor tenha permissao de excluir objetos do cache
http_access allow purge localhost
#Nega a exclusao de objetos do cache aos demais
http_access deny purge

#Cria uma acl do tipo port (porta) e adicione as portas que serão liberadas:
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 80 # http
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 563 # nntps
acl Safe_ports port 591 # filemaker
acl Safe_ports port 631 # cups
acl Safe_ports port 777 # multiling http
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # unregistered ports

#Bloqueia o acesso em portas que não foram liberadas
http_access deny !Safe_ports

#Cria uma acl do tipo method (método de requisição) e adicione o método CONNECT, que permite fazer conexão direta:
acl connect method CONNECT

#Crie uma acl do tipo port (porta) e adiciona as portas dos protocolos com SSL
acl SSL_ports port 443 # https
acl SSL_ports port 563 # nntps
acl SSL_ports port 873 # rsync

#Bloqueia o acesso em portas que não foram liberadas para conexão direta,
http_access deny connect !SSL_ports

#ACLS DE CONTROLE DE ACESSOS#
#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao bloqueados

#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao liberad os
acl ips_liberados src "/etc/squid3/restricoes/ips_liberados"

acl ips_bloqueados src "/etc/squid3/restricoes/ips_bloqueados"

#Cria uma acl do tipo url_regex (expressão regular na url) que sera utilizad a para bloquear palavras
acl palavras url_regex -i "/etc/squid3/restricoes/palavras"

#A acl do tipo urlpath_regex é semelhante a url_regex, só que é ignorado o d omínio e protocolo
#Vamos utilizar para bloquear extensoes de arquivos
acl download_bloqueado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"
acl download_liberado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"

#Cria uma acl (sites_liberados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_liberados dstdomain "/etc/squid3/restricoes/sites_liberados"

#Cria uma acl (sites_bloqueados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_bloqueados dstdomain "/etc/squid3/restricoes/sites_bloqueados"

#Permite o acesso irrestrito aos ips bloqueados
http_access allow ips_liberados

#Nega o acesso aos ips bloqueados
http_access deny ips_bloqueados

#Nega o acesso a acl download bloqueado
http_access deny download_bloqueado

#Permite o acesso a acl download_liberado
http_access allow download_liberado

#Nega o acesso a acl sites_bloqueados
http_access deny sites_bloqueados

#Permite o acesso a acl sites_liberados
http_access allow sites_liberados

#Nega o acesso as palavras da acl palavras
http_access deny palavras

#Permite que somente a rede e o servidor acessem a internet pelo proxy
#Essa regra tem de estar sempre no final do arquivo de configuracao
http_access allow minharede
http_access allow localhost
#Nega os demais
http_access deny all
---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Valeu Galera ! XD


  


2. Re: Squid3 - Autenticar Usuários com PHP e MySQL

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 11/10/2015 - 19:39h

jorgerabello escreveu:

Boas, tudo bem pessoal ?
Estou com o seguinte cenário:
Necessidade: Autenticar usuários do squid por meio de um script php com banco de dados mysql
Distribuição: Debian 8
Servidor Proxy: squid3
Firewall configurado com iptables
Servidor LAMP
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Consegui fazer o proxy funcionar no modo transparente, mas preciso que os usuários autentiquem no mysql por meio de uma interface php, após se cadastrarem, o cadastro de usuários já está funcionando, preciso apenas saber como faço o squid ler o programa php que traz os usuarios do banco e autenticar ou não os usuários.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Meu squid.conf está assim:
#Aqui definimos a porta que o servidor utilizara e que o acesso sera transparente
http_port 3128 transparent

#Aqui definimos o nome do host na rede
visible_hostname localhost

#Aqui definimos o email do administrador de rede
cache_mgr jorge.pinto@sp.senai.br

#Aqui definimos o diretorio que contem as mensagens de erros em portugues
error_directory /usr/share/squid3/errors/Portuguese

#Define palavras que se for encontradas na url, a pagina sera ser carregada direto do cache.
hierarchy_stoplist cgi-bin ?

#Define a quantidade de memoria que o servidor ira usar para o cache.
cache_mem 256 MB
#Define o tamanho máximo do objeto que poderá ser armazenado na memória, senão será armazenado no disco rígido.
maximum_object_size_in_memory 2 MB
#Define o tamanho máximo do objeto que poderá ser armazenado no disco rígido, senão será descartado o objeto.
maximum_object_size 8 MB
#Especifica o diretório do cache, aonde será armazenado os objetos
#cache_dir [sistema_arquivos] [diretorio] [tamanho cache] [qtde_diretorios] [qtde_subdoretorios]
cache_dir ufs /var/spool/squid3 256 128 256

#Define o tempo de vida dos objetos no cache, para que sempre o squid for verificá-los e saber se é necessário atualizá-los ou não.
#refresh_pattern [objeto] [tempo em minutos] [porcentagem de alteracao] [tempo em minutos]
refresh_pattern ^ftp: 360 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#Define o caminho para o log de acessos
access_log /var/log/squid3/access.log

#Define o caminho para o log do cache
cache_log /var/log/squid3/cache.log

#Define duas acl (localhost e minharede) do tipo src (IP de origem) e adiciona o ip do servidor e o ip da rede
acl all src all
acl localhost src 127.0.0.1/32
acl minharede src 10.0.0.0/8

#Crie uma acl (manager) com o tipo proto (protocolo) e adicione o protocolo "cache_object"
#O protocolo "cache_object" é usado para obter informações sobre o estado do Squid.
#acl manager proto cache_object

#Permite que apenas o servidor tenha acesso a informacoes do servidor
http_access allow manager localhost
#Nega o acesso aos demais
http_access deny manager

#Cria uma acl do tipo method (método de requisição) e adicione o método PURGE
#O método de requisição PURGE serve para limpar/excluir objetos armazenados no cache.
acl purge method PURGE

#Configura para que apenas o servidor tenha permissao de excluir objetos do cache
http_access allow purge localhost
#Nega a exclusao de objetos do cache aos demais
http_access deny purge

#Cria uma acl do tipo port (porta) e adicione as portas que serão liberadas:
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 80 # http
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 563 # nntps
acl Safe_ports port 591 # filemaker
acl Safe_ports port 631 # cups
acl Safe_ports port 777 # multiling http
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # unregistered ports

#Bloqueia o acesso em portas que não foram liberadas
http_access deny !Safe_ports

#Cria uma acl do tipo method (método de requisição) e adicione o método CONNECT, que permite fazer conexão direta:
acl connect method CONNECT

#Crie uma acl do tipo port (porta) e adiciona as portas dos protocolos com SSL
acl SSL_ports port 443 # https
acl SSL_ports port 563 # nntps
acl SSL_ports port 873 # rsync

#Bloqueia o acesso em portas que não foram liberadas para conexão direta,
http_access deny connect !SSL_ports

#ACLS DE CONTROLE DE ACESSOS#
#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao bloqueados

#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao liberad os
acl ips_liberados src "/etc/squid3/restricoes/ips_liberados"

acl ips_bloqueados src "/etc/squid3/restricoes/ips_bloqueados"

#Cria uma acl do tipo url_regex (expressão regular na url) que sera utilizad a para bloquear palavras
acl palavras url_regex -i "/etc/squid3/restricoes/palavras"

#A acl do tipo urlpath_regex é semelhante a url_regex, só que é ignorado o d omínio e protocolo
#Vamos utilizar para bloquear extensoes de arquivos
acl download_bloqueado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"
acl download_liberado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"

#Cria uma acl (sites_liberados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_liberados dstdomain "/etc/squid3/restricoes/sites_liberados"

#Cria uma acl (sites_bloqueados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_bloqueados dstdomain "/etc/squid3/restricoes/sites_bloqueados"

#Permite o acesso irrestrito aos ips bloqueados
http_access allow ips_liberados

#Nega o acesso aos ips bloqueados
http_access deny ips_bloqueados

#Nega o acesso a acl download bloqueado
http_access deny download_bloqueado

#Permite o acesso a acl download_liberado
http_access allow download_liberado

#Nega o acesso a acl sites_bloqueados
http_access deny sites_bloqueados

#Permite o acesso a acl sites_liberados
http_access allow sites_liberados

#Nega o acesso as palavras da acl palavras
http_access deny palavras

#Permite que somente a rede e o servidor acessem a internet pelo proxy
#Essa regra tem de estar sempre no final do arquivo de configuracao
http_access allow minharede
http_access allow localhost
#Nega os demais
http_access deny all
---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Valeu Galera ! XD


Primeiro retire o "transparent" na linha http_port 3128 transparent, deixando apenas http_port 3128
Edita o arquivo mysqlt_auth com as informações do banco de dados (IP, usuário, senha, database criado para o squid), a consulta da tabela criada.
E adiciona a linha auth_param basic program /LOCAL_DIRETORIO_SQUID/mysqlt_auth

Feito!


http://mundodacomputacaointegral.blogspot.com.br/
Twitter: http://twitter.com/@blogcomputacao
Facebook: http://www.facebook.com/BlogComputacao


3. Re: Squid3 - Autenticar Usuários com PHP e MySQL [RESOLVIDO]

Jorge Augusto Rabello Pinto
jorgerabello

(usa Ubuntu)

Enviado em 13/10/2015 - 17:59h

saitam escreveu:

jorgerabello escreveu:

Boas, tudo bem pessoal ?
Estou com o seguinte cenário:
Necessidade: Autenticar usuários do squid por meio de um script php com banco de dados mysql
Distribuição: Debian 8
Servidor Proxy: squid3
Firewall configurado com iptables
Servidor LAMP
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Consegui fazer o proxy funcionar no modo transparente, mas preciso que os usuários autentiquem no mysql por meio de uma interface php, após se cadastrarem, o cadastro de usuários já está funcionando, preciso apenas saber como faço o squid ler o programa php que traz os usuarios do banco e autenticar ou não os usuários.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Meu squid.conf está assim:
#Aqui definimos a porta que o servidor utilizara e que o acesso sera transparente
http_port 3128 transparent

#Aqui definimos o nome do host na rede
visible_hostname localhost

#Aqui definimos o email do administrador de rede
cache_mgr jorge.pinto@sp.senai.br

#Aqui definimos o diretorio que contem as mensagens de erros em portugues
error_directory /usr/share/squid3/errors/Portuguese

#Define palavras que se for encontradas na url, a pagina sera ser carregada direto do cache.
hierarchy_stoplist cgi-bin ?

#Define a quantidade de memoria que o servidor ira usar para o cache.
cache_mem 256 MB
#Define o tamanho máximo do objeto que poderá ser armazenado na memória, senão será armazenado no disco rígido.
maximum_object_size_in_memory 2 MB
#Define o tamanho máximo do objeto que poderá ser armazenado no disco rígido, senão será descartado o objeto.
maximum_object_size 8 MB
#Especifica o diretório do cache, aonde será armazenado os objetos
#cache_dir [sistema_arquivos] [diretorio] [tamanho cache] [qtde_diretorios] [qtde_subdoretorios]
cache_dir ufs /var/spool/squid3 256 128 256

#Define o tempo de vida dos objetos no cache, para que sempre o squid for verificá-los e saber se é necessário atualizá-los ou não.
#refresh_pattern [objeto] [tempo em minutos] [porcentagem de alteracao] [tempo em minutos]
refresh_pattern ^ftp: 360 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#Define o caminho para o log de acessos
access_log /var/log/squid3/access.log

#Define o caminho para o log do cache
cache_log /var/log/squid3/cache.log

#Define duas acl (localhost e minharede) do tipo src (IP de origem) e adiciona o ip do servidor e o ip da rede
acl all src all
acl localhost src 127.0.0.1/32
acl minharede src 10.0.0.0/8

#Crie uma acl (manager) com o tipo proto (protocolo) e adicione o protocolo "cache_object"
#O protocolo "cache_object" é usado para obter informações sobre o estado do Squid.
#acl manager proto cache_object

#Permite que apenas o servidor tenha acesso a informacoes do servidor
http_access allow manager localhost
#Nega o acesso aos demais
http_access deny manager

#Cria uma acl do tipo method (método de requisição) e adicione o método PURGE
#O método de requisição PURGE serve para limpar/excluir objetos armazenados no cache.
acl purge method PURGE

#Configura para que apenas o servidor tenha permissao de excluir objetos do cache
http_access allow purge localhost
#Nega a exclusao de objetos do cache aos demais
http_access deny purge

#Cria uma acl do tipo port (porta) e adicione as portas que serão liberadas:
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 80 # http
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 563 # nntps
acl Safe_ports port 591 # filemaker
acl Safe_ports port 631 # cups
acl Safe_ports port 777 # multiling http
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # unregistered ports

#Bloqueia o acesso em portas que não foram liberadas
http_access deny !Safe_ports

#Cria uma acl do tipo method (método de requisição) e adicione o método CONNECT, que permite fazer conexão direta:
acl connect method CONNECT

#Crie uma acl do tipo port (porta) e adiciona as portas dos protocolos com SSL
acl SSL_ports port 443 # https
acl SSL_ports port 563 # nntps
acl SSL_ports port 873 # rsync

#Bloqueia o acesso em portas que não foram liberadas para conexão direta,
http_access deny connect !SSL_ports

#ACLS DE CONTROLE DE ACESSOS#
#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao bloqueados

#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao liberad os
acl ips_liberados src "/etc/squid3/restricoes/ips_liberados"

acl ips_bloqueados src "/etc/squid3/restricoes/ips_bloqueados"

#Cria uma acl do tipo url_regex (expressão regular na url) que sera utilizad a para bloquear palavras
acl palavras url_regex -i "/etc/squid3/restricoes/palavras"

#A acl do tipo urlpath_regex é semelhante a url_regex, só que é ignorado o d omínio e protocolo
#Vamos utilizar para bloquear extensoes de arquivos
acl download_bloqueado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"
acl download_liberado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"

#Cria uma acl (sites_liberados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_liberados dstdomain "/etc/squid3/restricoes/sites_liberados"

#Cria uma acl (sites_bloqueados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_bloqueados dstdomain "/etc/squid3/restricoes/sites_bloqueados"

#Permite o acesso irrestrito aos ips bloqueados
http_access allow ips_liberados

#Nega o acesso aos ips bloqueados
http_access deny ips_bloqueados

#Nega o acesso a acl download bloqueado
http_access deny download_bloqueado

#Permite o acesso a acl download_liberado
http_access allow download_liberado

#Nega o acesso a acl sites_bloqueados
http_access deny sites_bloqueados

#Permite o acesso a acl sites_liberados
http_access allow sites_liberados

#Nega o acesso as palavras da acl palavras
http_access deny palavras

#Permite que somente a rede e o servidor acessem a internet pelo proxy
#Essa regra tem de estar sempre no final do arquivo de configuracao
http_access allow minharede
http_access allow localhost
#Nega os demais
http_access deny all
---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Valeu Galera ! XD


Primeiro retire o "transparent" na linha http_port 3128 transparent, deixando apenas http_port 3128
Edita o arquivo mysqlt_auth com as informações do banco de dados (IP, usuário, senha, database criado para o squid), a consulta da tabela criada.
E adiciona a linha auth_param basic program /LOCAL_DIRETORIO_SQUID/mysqlt_auth

Feito!


http://mundodacomputacaointegral.blogspot.com.br/
Twitter: http://twitter.com/@blogcomputacao
Facebook: http://www.facebook.com/BlogComputacao


Olá saitam, obrigado pela ajuda, já clareou bastante e procurei em várias outras fontes a respeito, mas não é bem isso que eu preciso, eu preciso que o squid chame um página php de login (com um form) e ao mesmo tempo em que o usuário se autenticar por que está cadastrado no banco de dados MySQL também se autentica no squid. Então preciso de alguma diretiva no squid conf que faça isso (chamar a página web) correto ? Se sim a questão é qual é essa diretiva ?
Mesmo assim muito obrigado pela ajuda !!!



4. Re: Squid3 - Autenticar Usuários com PHP e MySQL

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 13/10/2015 - 19:23h

saitam escreveu:
Primeiro retire o "transparent" na linha http_port 3128 transparent, deixando apenas http_port 3128
Edita o arquivo mysqlt_auth com as informações do banco de dados (IP, usuário, senha, database criado para o squid), a consulta da tabela criada.
E adiciona a linha auth_param basic program /LOCAL_DIRETORIO_SQUID/mysqlt_auth
Feito!

http://mundodacomputacaointegral.blogspot.com.br/
Twitter: http://twitter.com/@blogcomputacao
Facebook: http://www.facebook.com/BlogComputacao


jorgerabello escreveu:
Olá saitam, obrigado pela ajuda, já clareou bastante e procurei em várias outras fontes a respeito, mas não é bem isso que eu preciso, eu preciso que o squid chame um página php de login (com um form) e ao mesmo tempo em que o usuário se autenticar por que está cadastrado no banco de dados MySQL também se autentica no squid. Então preciso de alguma diretiva no squid conf que faça isso (chamar a página web) correto ? Se sim a questão é qual é essa diretiva ?
Mesmo assim muito obrigado pela ajuda !!!


@jorgerabello, a solução que passei ela faz autenticação no MySQL usando proxy autenticado, aparecendo o popup default de autenticação do Squid, mas o que vc quer é forçar o redirecionamento a uma página de login PHP, certo ?

Relembrando a solução que passei que faz autenticação no MySQL pelo programa mysqlt_auth do Squid.
Nesse programa PHP mysqlt_auth do Squid precisa ser alterado com as informações do usuário, senha, database, etc.
A diretiva que chama esse programa é auth_param basic program /LOCAL_DIRETORIO_SQUID/mysqlt_auth.
Ela funciona e faz autenticação no MySQL, só que usando o popup default de autenticação do Squid.

Agora o que vc quer é forçar o redirecionamento a uma página de login PHP que nela faz a consulta.
É algo equivalente a solução acima proposta, alterando a diretiva do Squid para url_rewrite_program /LOCAL_DIRETORIO_SQUID/login.php.

OBS: Para funcionar no arquivo login.php deve ter na primeira linha #!/usr/bin/php


http://mundodacomputacaointegral.blogspot.com.br/
Twitter: http://twitter.com/@blogcomputacao
Facebook: http://www.facebook.com/BlogComputacao


5. Re: Squid3 - Autenticar Usuários com PHP e MySQL

Jorge Augusto Rabello Pinto
jorgerabello

(usa Ubuntu)

Enviado em 13/10/2015 - 20:37h

Olá @saitam obrigado pela resposta rápida é claro que sua solução funciona, eu que devo estar fazendo algo de muuito errado....
Tentei utilizar o parâmetro url_rewrite_program mas mesmo assim tenho o mesmo resultado, a página em branco. Acho que devo estar configurando algo errado , pois quando configuro o squid como transparente funcionar normal.
Se não for pedir muito (e eu sei que é ><) segue meu squid conf e script de firewall, nesse servidor tenho o LAMP (apache2, mysql5 e php5) testados e o apache2 executando na porta 80 e os arquivos .php estão em /var/www/html.
EU devo estar fazendo algo de errado ou no script de firewall ou no squid.conf.
------------------------------------------------------------------------------------------------------------------------------------------------------------
SCRITP DE FIREWALL
------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
#Reseta as regras do Firewall
iptables -F
iptables -X
iptables -F -t nat

#Libera a interface lo (autoteste loopback)
iptables -A INPUT -i lo -j ACCEPT

#Carrega os módulos
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
#Regra para o redirecionamento do squid
#Regra de Redirecionamento do Squid
#Tudo que chegar o servidor antes de ser roteado pela interface eth0 com destino a #porta 80 e utilizando o protocolo tcp
#sera redirecionado para a porta 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

#Libera o acesso da rede atraves da porta 3128 quando utilizar protocolo tcp
iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 3128 -j ACCEPT

#Libera o acesso da rede atraves da porta 3128 quando utilizar protocolo tcp
iptables -A INPUT -p udp -s 10.0.0.0/8 --dport 3128 -j ACCEPT

#Ativa o roteamento nat
iptables -t nat -A POSTROUTING -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

------------------------------------------------------------------------------------------------------------------------------------------------------------
squid.conf
------------------------------------------------------------------------------------------------------------------------------------------------------------
#Aqui definimos a porta que o servidor utilizara e que o acesso sera transparente
http_port 3128

url_rewrite_program /var/www/html/index.php

#Aqui definimos o nome do host na rede
visible_hostname localhost

#Aqui definimos o email do administrador de rede
cache_mgr jorge.pinto@sp.senai.br

#Aqui definimos o diretorio que contem as mensagens de erros em portugues
error_directory /usr/share/squid3/errors/Portuguese

#Define palavras que se for encontradas na url, a pagina sera ser carregada direto do cache.
hierarchy_stoplist cgi-bin ?

#Define a quantidade de memoria que o servidor ira usar para o cache.
cache_mem 256 MB
#Define o tamanho máximo do objeto que poderá ser armazenado na memória, senão será armazenado no disco rígido.
maximum_object_size_in_memory 2 MB
#Define o tamanho máximo do objeto que poderá ser armazenado no disco rígido, senão será descartado o objeto.
maximum_object_size 8 MB
#Especifica o diretório do cache, aonde será armazenado os objetos
#cache_dir [sistema_arquivos] [diretorio] [tamanho cache] [qtde_diretorios] [qtde_subdoretorios]
cache_dir ufs /var/spool/squid3 256 128 256

#Define o tempo de vida dos objetos no cache, para que sempre o squid for verificá-los e saber se é necessário atualizá-los ou não.
#refresh_pattern [objeto] [tempo em minutos] [porcentagem de alteracao] [tempo em minutos]
refresh_pattern ^ftp: 360 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#Define o caminho para o log de acessos
access_log /var/log/squid3/access.log

#Define o caminho para o log do cache
cache_log /var/log/squid3/cache.log

#Define duas acl (localhost e minharede) do tipo src (IP de origem) e adiciona o ip do servidor e o ip da rede
acl all src all
acl localhost src 127.0.0.1/32
acl minharede src 10.0.0.0/8

#Crie uma acl (manager) com o tipo proto (protocolo) e adicione o protocolo "cache_object"
#O protocolo "cache_object" é usado para obter informações sobre o estado do Squid.
#acl manager proto cache_object

#Permite que apenas o servidor tenha acesso a informacoes do servidor
http_access allow manager localhost
#Nega o acesso aos demais
http_access deny manager

#Cria uma acl do tipo method (método de requisição) e adicione o método PURGE
#O método de requisição PURGE serve para limpar/excluir objetos armazenados no cache.
acl purge method PURGE

#Configura para que apenas o servidor tenha permissao de excluir objetos do cache
http_access allow purge localhost
#Nega a exclusao de objetos do cache aos demais
http_access deny purge

#Cria uma acl do tipo port (porta) e adicione as portas que serão liberadas:
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 80 # http
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 563 # nntps
acl Safe_ports port 591 # filemaker
acl Safe_ports port 631 # cups
acl Safe_ports port 777 # multiling http
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # unregistered ports

#Bloqueia o acesso em portas que não foram liberadas
http_access deny !Safe_ports

#Cria uma acl do tipo method (método de requisição) e adicione o método CONNECT, que permite fazer conexão direta:
acl connect method CONNECT

#Crie uma acl do tipo port (porta) e adiciona as portas dos protocolos com SSL
acl SSL_ports port 443 # https
acl SSL_ports port 563 # nntps
acl SSL_ports port 873 # rsync

#Bloqueia o acesso em portas que não foram liberadas para conexão direta,
http_access deny connect !SSL_ports

#ACLS DE CONTROLE DE ACESSOS#
#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao bloqueados

#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao liberad os
acl ips_liberados src "/etc/squid3/restricoes/ips_liberados"

acl ips_bloqueados src "/etc/squid3/restricoes/ips_bloqueados"

#Cria uma acl do tipo url_regex (expressão regular na url) que sera utilizad a para bloquear palavras
acl palavras url_regex -i "/etc/squid3/restricoes/palavras"

#A acl do tipo urlpath_regex é semelhante a url_regex, só que é ignorado o d omínio e protocolo
#Vamos utilizar para bloquear extensoes de arquivos
acl download_bloqueado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"
acl download_liberado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"

#Cria uma acl (sites_liberados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_liberados dstdomain "/etc/squid3/restricoes/sites_liberados"

#Cria uma acl (sites_bloqueados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_bloqueados dstdomain "/etc/squid3/restricoes/sites_bloqueados"

#Permite o acesso irrestrito aos ips bloqueados
http_access allow ips_liberados

#Nega o acesso aos ips bloqueados
http_access deny ips_bloqueados

#Nega o acesso a acl download bloqueado
http_access deny download_bloqueado

#Permite o acesso a acl download_liberado
http_access allow download_liberado

#Nega o acesso a acl sites_bloqueados
http_access deny sites_bloqueados

#Permite o acesso a acl sites_liberados
http_access allow sites_liberados

#Nega o acesso as palavras da acl palavras
http_access deny palavras

#Permite que somente a rede e o servidor acessem a internet pelo proxy
#Essa regra tem de estar sempre no final do arquivo de configuracao
http_access allow minharede
http_access allow localhost
#Nega os demais
http_access deny all

VALEU XD


6. Re: Squid3 - Autenticar Usuários com PHP e MySQL

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 14/10/2015 - 11:05h

jorgerabello escreveu:

Olá @saitam obrigado pela resposta rápida é claro que sua solução funciona, eu que devo estar fazendo algo de muuito errado....
Tentei utilizar o parâmetro url_rewrite_program mas mesmo assim tenho o mesmo resultado, a página em branco. Acho que devo estar configurando algo errado , pois quando configuro o squid como transparente funcionar normal.
Se não for pedir muito (e eu sei que é ><) segue meu squid conf e script de firewall, nesse servidor tenho o LAMP (apache2, mysql5 e php5) testados e o apache2 executando na porta 80 e os arquivos .php estão em /var/www/html.
EU devo estar fazendo algo de errado ou no script de firewall ou no squid.conf.
------------------------------------------------------------------------------------------------------------------------------------------------------------
SCRITP DE FIREWALL
------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
#Reseta as regras do Firewall
iptables -F
iptables -X
iptables -F -t nat

#Libera a interface lo (autoteste loopback)
iptables -A INPUT -i lo -j ACCEPT

#Carrega os módulos
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
#Regra para o redirecionamento do squid
#Regra de Redirecionamento do Squid
#Tudo que chegar o servidor antes de ser roteado pela interface eth0 com destino a #porta 80 e utilizando o protocolo tcp
#sera redirecionado para a porta 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

#Libera o acesso da rede atraves da porta 3128 quando utilizar protocolo tcp
iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 3128 -j ACCEPT

#Libera o acesso da rede atraves da porta 3128 quando utilizar protocolo tcp
iptables -A INPUT -p udp -s 10.0.0.0/8 --dport 3128 -j ACCEPT

#Ativa o roteamento nat
iptables -t nat -A POSTROUTING -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

------------------------------------------------------------------------------------------------------------------------------------------------------------
squid.conf
------------------------------------------------------------------------------------------------------------------------------------------------------------
#Aqui definimos a porta que o servidor utilizara e que o acesso sera transparente
http_port 3128

url_rewrite_program /var/www/html/index.php

#Aqui definimos o nome do host na rede
visible_hostname localhost

#Aqui definimos o email do administrador de rede
cache_mgr jorge.pinto@sp.senai.br

#Aqui definimos o diretorio que contem as mensagens de erros em portugues
error_directory /usr/share/squid3/errors/Portuguese

#Define palavras que se for encontradas na url, a pagina sera ser carregada direto do cache.
hierarchy_stoplist cgi-bin ?

#Define a quantidade de memoria que o servidor ira usar para o cache.
cache_mem 256 MB
#Define o tamanho máximo do objeto que poderá ser armazenado na memória, senão será armazenado no disco rígido.
maximum_object_size_in_memory 2 MB
#Define o tamanho máximo do objeto que poderá ser armazenado no disco rígido, senão será descartado o objeto.
maximum_object_size 8 MB
#Especifica o diretório do cache, aonde será armazenado os objetos
#cache_dir [sistema_arquivos] [diretorio] [tamanho cache] [qtde_diretorios] [qtde_subdoretorios]
cache_dir ufs /var/spool/squid3 256 128 256

#Define o tempo de vida dos objetos no cache, para que sempre o squid for verificá-los e saber se é necessário atualizá-los ou não.
#refresh_pattern [objeto] [tempo em minutos] [porcentagem de alteracao] [tempo em minutos]
refresh_pattern ^ftp: 360 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#Define o caminho para o log de acessos
access_log /var/log/squid3/access.log

#Define o caminho para o log do cache
cache_log /var/log/squid3/cache.log

#Define duas acl (localhost e minharede) do tipo src (IP de origem) e adiciona o ip do servidor e o ip da rede
acl all src all
acl localhost src 127.0.0.1/32
acl minharede src 10.0.0.0/8

#Crie uma acl (manager) com o tipo proto (protocolo) e adicione o protocolo "cache_object"
#O protocolo "cache_object" é usado para obter informações sobre o estado do Squid.
#acl manager proto cache_object

#Permite que apenas o servidor tenha acesso a informacoes do servidor
http_access allow manager localhost
#Nega o acesso aos demais
http_access deny manager

#Cria uma acl do tipo method (método de requisição) e adicione o método PURGE
#O método de requisição PURGE serve para limpar/excluir objetos armazenados no cache.
acl purge method PURGE

#Configura para que apenas o servidor tenha permissao de excluir objetos do cache
http_access allow purge localhost
#Nega a exclusao de objetos do cache aos demais
http_access deny purge

#Cria uma acl do tipo port (porta) e adicione as portas que serão liberadas:
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 80 # http
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 443 # https
acl Safe_ports port 488 # gss-http
acl Safe_ports port 563 # nntps
acl Safe_ports port 591 # filemaker
acl Safe_ports port 631 # cups
acl Safe_ports port 777 # multiling http
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # unregistered ports

#Bloqueia o acesso em portas que não foram liberadas
http_access deny !Safe_ports

#Cria uma acl do tipo method (método de requisição) e adicione o método CONNECT, que permite fazer conexão direta:
acl connect method CONNECT

#Crie uma acl do tipo port (porta) e adiciona as portas dos protocolos com SSL
acl SSL_ports port 443 # https
acl SSL_ports port 563 # nntps
acl SSL_ports port 873 # rsync

#Bloqueia o acesso em portas que não foram liberadas para conexão direta,
http_access deny connect !SSL_ports

#ACLS DE CONTROLE DE ACESSOS#
#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao bloqueados

#Cria uma acl do tipo src (IP de origem) e adicione os ips que serao liberad os
acl ips_liberados src "/etc/squid3/restricoes/ips_liberados"

acl ips_bloqueados src "/etc/squid3/restricoes/ips_bloqueados"

#Cria uma acl do tipo url_regex (expressão regular na url) que sera utilizad a para bloquear palavras
acl palavras url_regex -i "/etc/squid3/restricoes/palavras"

#A acl do tipo urlpath_regex é semelhante a url_regex, só que é ignorado o d omínio e protocolo
#Vamos utilizar para bloquear extensoes de arquivos
acl download_bloqueado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"
acl download_liberado urlpath_regex -i "/etc/squid3/restricoes/download_bloqueado"

#Cria uma acl (sites_liberados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_liberados dstdomain "/etc/squid3/restricoes/sites_liberados"

#Cria uma acl (sites_bloqueados) do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto
acl sites_bloqueados dstdomain "/etc/squid3/restricoes/sites_bloqueados"

#Permite o acesso irrestrito aos ips bloqueados
http_access allow ips_liberados

#Nega o acesso aos ips bloqueados
http_access deny ips_bloqueados

#Nega o acesso a acl download bloqueado
http_access deny download_bloqueado

#Permite o acesso a acl download_liberado
http_access allow download_liberado

#Nega o acesso a acl sites_bloqueados
http_access deny sites_bloqueados

#Permite o acesso a acl sites_liberados
http_access allow sites_liberados

#Nega o acesso as palavras da acl palavras
http_access deny palavras

#Permite que somente a rede e o servidor acessem a internet pelo proxy
#Essa regra tem de estar sempre no final do arquivo de configuracao
http_access allow minharede
http_access allow localhost
#Nega os demais
http_access deny all

VALEU XD


@jorgerabello, troque o local onde está o arquivo PHP na linha url_rewrite_program /var/www/html/index.php para o local onde instalou o Squid, por exemplo /etc/squid/index.php e deve colocar na primeira linha deste script #!/usr/bin/php.
Assim -
Renomear o arquivo index.php para login.php e mover para o local onde instalou o Squid, por exemplo /etc/squid
No arquivo squid.conf alterar, deixar assim url_rewrite_program /etc/squid/login.php
E deve colocar na primeira linha deste script #!/usr/bin/php.
chmod +x login.php

OBS: Verifique o local onde fez a instalação do Squid e altere de acordo conforme acima.




http://mundodacomputacaointegral.blogspot.com.br/
Twitter: http://twitter.com/@blogcomputacao
Facebook: http://www.facebook.com/BlogComputacao


7. Re: Squid3 - Autenticar Usuários com PHP e MySQL [RESOLVIDO]

Jorge Augusto Rabello Pinto
jorgerabello

(usa Ubuntu)

Enviado em 15/10/2015 - 00:12h

Olá @saitam mais uma vez muito obrigado pela ajuda !
Mas infelizmente não deu certo, continua caindo em uma página web em branco, alterei o squid.conf, dei a permissão de execução como root (chmod +x login.php [esse arquivo está em /etc/squid3/ que é o diretório de instalação]) e reiniciei o squid.
O cliente consegue pingar nos sites, mas não navega via browser...
Esse é o conteúdo do arquivo login.php

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/php
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>.:: Acesso Internet | Regras ::.</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<div id="container">
<div id="banner_senai">
<img alt="banner_senai" src="">
</div>
<div id="bemvindo">
<h1>BEM VINDO &Agrave; REDE SENAI 132</h1>
</div>
<div id="content">
<p class="sublinhado">REGRAS DE ACESSO</p>
<p>O acesso a internet atrav&eacute;s da rede disponibilizada pela escola &eacute;
gratuito, para obter a permiss&atilde;o ser&aacute; necess&aacute;rio efetuar o cadastro.
Todo conte&uacutedo acessado ser&aacute; monitorado, sendo de suma
responsabilidade do aluno, podendo ter seu acesso
bloqueado/penalizado caso o mesmo esteja acessando conte&uacutedo
impr&oacute;prio. Para obter acesso, fa&ccedil;a autentica&ccedil;&atilde;o no link
disponibilizado abaixo (AUTENTICANDO NO AMBIENTE) com a conta de
usu&aacute;rio e senha cadastrada, caso n&atilde;o possua cadastrom utilize o link
(CADASTRO DE LOGIN/SENHA) para cadastrar o acesso</p>

<p>
<a href="cadastro.php">CADASTRO DE LOGIN/SENHA</a>
</p>
<p>O cadastro no ambiente ser&aacute; necess&aacute;rio para obter acesso &agrave;
internet atrav&eacute;s do ambiente WIFI, o formul&aacute;rio ir&aacute; solicitar os
dados para libera&ccedil;&atilde;o do acesso. Ap&oacute;s o cadastro, acesse o sistema
atrav&eacute;s do link (AUTENTICANDO NO AMBIENTE)</p>
<p>
<a href="login.php">AUTENTICANDO NO AMBIENTE</a>
</p>
<p>Este link ir&aacute; direcionar para a p&aacute;gina de autentica&ccedil;&atilde;o onde ser&aacute;
necess&aacute;rio informar o login e a senha cadastrados, caso tenha
esquecido a senha ou login de acesso, confirme os dados no link
(RECUPERAR SENHA) para altera&ccedil;&atilde;o da senha e recupera&ccedil;&atilde;o do login de
acesso.</p>
<p>
<a href="recupera.php">ALTERAR/RECUPERAR SENHA</a>
</p>
<p>Para recuperar a senha ser&aacute; necess&aacute;rio informar os dados
cadastrados, caso esteja correto a senha ser&aacute; alterada e liberada
para autentica&ccedil;&atilde;o no ambiente.</p>
</div>
</div>
</body>
</html>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Nesse servidor tenho o apache2 instalado operando na porta 80 e também tenho duas interfaces de rede, uma conectado a rede wan e a outra conectado a rede lan.

Mais uma vez obrigado pela atenção e desculpe o trabalho q está dando.....


8. Captive Portal - A Solução

Jorge Augusto Rabello Pinto
jorgerabello

(usa Ubuntu)

Enviado em 18/10/2015 - 17:09h

Estou encerrando este tópico como resolvido e abrindo de forma mais clara, objetiva e correta em

http://www.vivaolinux.com.br/topico/Squid-Iptables/Captive-Portal-3

Obrigado até agora @saitam






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts