[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Squid+autenticado+nat+firewall por usuario.



Bom dia!

Com certeza deve funcionar, pois é mais ou menos o que faz o brma, que é um software pago para fazer exatamente o que quero.

Mas valeu a dica, tenho pouco tempo para implementar isto, e estou cada vez mais longe de uma solução opensource e cada vez mais perto de uma fechada.

Muito obrigado.


Junior

2008/6/16 Antonio Lobato <lobato@tinecon.com.br>:


Boa tarde Júnior,
sua necessidade parece bastante específica, não conheço nenhuma solução
pronta para isso. Mas é algo interessante de se implementar.

Aqui vai uma sugestão para implementação. Demandará conhecimento de
iptables e shellscript.
O Squid autentica os usuários usando programas externos, que são
definidos pela diretiva auth_param.
Caso esteja usando autenticação num servidor SMB (Windows ou
Linux/Samba), seu squid.conf tera algo parecido com isso:

auth_param basic program /usr/lib/squid/smb_auth -W dominio -U 10.1.1.1

/usr/lib/squid/smb_auth é um executavel que chama
/usr/lib/squid/smb_auth.sh, um bash script.
As linhas abaixo estão no final do smb_auth.sh:

[ "$authinfo" = "allow" -o "$authinfo" = "allow^M" ] || exit 1
exit 0

poderia substitui-las por

if [ "$authinfo" = "allow" -o "$authinfo" = "allow^M" ]; then
 /usr/local/sbin/custom_firewall.sh "$SMBUSER"
 exit 0
else
 exit 1
fi

Com isso, o funcionamento da autenticação do squid permanecerá
intocado, e estará chamando o script
/usr/local/sbin/custom_firewall.sh <user>, sendo <user> o nome
do usuário que foi autenticado com sucesso.
Aí basta criar custom_firewall.sh de forma que rode comandos
iptables especificos para cada usuario que definir.

Quanto ao logout do usuario, há um problema, pq o squid nao
faz logout dele. Você teria que verificar se ele fecha a sessao
baseado em timeout (o que acho provavel) ou de outra forma.
Entao usar o mesmo timeout atraves do cron ou algum daemon,
mas tomando o cuidado de resetar o timeout enquanto ele estiver
acessando, possivelmente verificando com tail e grep o arquivo
/var/log/access.log.

Fica como uma sugestão.
Deve dar um bom trabalho, mas boa sorte :)



Tom Lobato
tinecon.com.br



Júnior Bohn escreveu:
> Boa noite!
>
> Alguem sabe alguma forma de usar squid autenticado (com acl's e
> grupos) e executar um firewall por usuario, quando este faz login no
> squid?
>
> Explico: quando o usuario executa login no squid, alem de ser liberado
> o acesso para ele conforme o grupo a que ele pertence, rodar um script
> de firewall que libere as portas conforme as permissões daquele
> usuario, tipo capturar o ip dele e aplicar as regras com o iptables. E
> quando o usuario fizer logout, deletar as regras e bloquear o acesso
> completamente para aquele ip.
> Tipo um nat autenticado com  proxy autenticado.
>
> Junior



Reply to: