Limitando o número de conexões por usuário
Se quiser limitar o número de sessões que cada usuário abre de uma única vez, podemos utilizar o recursos de máximo de conexões.
acl CONEXOES maxconn 10
http_access deny CONEXOES rede_interna
Impedindo ou Limitando o tamanho de uploads
Diversas empresas tem a necessidade de impedir que seus usuários dêem upload de arquivos para webmails, discos virtuais ou algum outro tipo de repositório na internet. O grande problema é que o método utilizado para fazer estes uploads é o POST, também utilizado para preenchimento de formulários, pesquisas, logins e senhas, etc. Isso impede o bloqueio total do método. Como fazer então?
A opção mais lógica seria limitar o tamanho de um POST para um número suficientemente grande para permitir seu funcionamento normal e suficientemente pequeno para impedir o upload de arquivos. Para isso usamos a tag request_body_max_size, abordada um pouco mais abaixo.
No entanto essa tag tem uma falha, por não ser compatível com ACLs, ela limitará todos os usuários no que for determinado, situação normalmente incômoda.
Segue um script que encontrei na internet (referência abaixo), que nos permite criar ACLs baseadas nesse parâmetro. Vamos chamá-lo de /etc/squid/modulos/size.sh
#!/bin/sh
while read line; do
set -- $line
length="$1"
limit="$2"
if [ "$length" -le "$2" ]; then
echo OK
else
echo ERR
fi
done
Depois basta criar uma ACL assim:
external_acl_type request_body %{Content-Length} /etc/squid/modulos/size.sh
acl request_max_10KB request_body 10240
Com isso limitamos o tamanho do upload para 10KB, o que deve ser suficiente para preenchimento de um formulário, mas pouco para um upload.