[squid-users] Best practice for adding or removing ACLs dynamically ?
Amos Jeffries
squid3 at treenet.co.nz
Sat Oct 31 15:40:17 UTC 2020
On 31/10/20 1:34 pm, roee klinger wrote:
>
> Hey,
> I have Squid configured to send users to different outgoing interface like so:
>
> ..
> auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/htpassword
> acl acl_for_user3002 proxy_auth user2
> tcp_outgoing_address 192.168.8.12 acl_for_user3002
> http_port 3002 name=3002
No need to name a *_port like this. The default name is the first
parameter string ("3002" on this line).
> http_access allow authenticated
> ..
>
> When I wanted to change the username:password for user2, I run a bash script to change it in squid.conf and also in htpassword and then I run "squid -k reconfigure", if I don't reconfigure the old user still has access to the proxy and the new one doesn't for about 30 minutes.
>
No need to restart for that change. The helper you have there will
automatically detect changes to the htpassword file and reload it.
It is a little odd that the new user was not able to authenticate. Check
that your test did not lookup and cache a non-existence result for them
prior to being added.
The delay is due to the credentials being valid for a period of time. To
reduce workload on the auth system Squid caches credential details for a
while.
Set "auth_param basic credentialsttl " to shorter values to reduce the
delay (default is 2hrs).
> I am expecting to have 100s of users soon that will change credentials often, and also I would like to blacklist websites often and on the fly, so I was searching for a better way to manage this without reconfiguring every time, since sometimes a reconfigure can take up to 10-15 seconds.
>
This helper does not need a reconfigure at all as far as I can tell from
the code.
All the reconfigure was doing for you previously was triggering an early
prune of the records in the credentials cache. Probably why you saw
about 30min delay instead of about 2hrs.
> I am new to Squid and wasn't able to find any info on this, am I doing this currently or there is a better way to change users/ACLs on the fly without reloading Squid?
>
Config changes in squid.conf itself needs a reconfigure or sometimes a
restart.
For auth and ACLs whose values that come into Squid from a helper it
depends on the helper itself. Most can auto-detect changes to their
background databases and not need anything from Squid to update the
outputs. All helpers do have some form of caching of their results by
Squid, so there are settings in squid.conf to tune that to your needs -
as you can see from the auth issue above.
For ACLs with values that are expected to change often it is best to use
an external_acl_type helper that manages the updates or fetches from
somewhere the updates are handled without a reload.
Amos
More information about the squid-users
mailing list