[squid-users] Get IP of denied request
Alex Rousskov
rousskov at measurement-factory.com
Thu Oct 26 19:11:01 UTC 2023
On 2023-10-26 08:37, magri at web.de wrote:
> TL;DR: is there a way to get/log the resolved ip of a denied request?
TLDR: Bugs notwithstanding, use %<a.
> We have a rather large ip based malware blacklist (dst acl) and
> sometimes a destination is blocked inadvertantly because of a false
> positive entry in this list.
> This happens most often with CDNs where the ips of a destination change
> often and even move between different sites.
>
> Because of this rapid change it's difficult to determine the blocked ip
> in hindsight when analyzing access problems and makes it impossible to
> correct the blacklist.
>
> For normal requests the resolved and accessed ip is be logged with %<a,
> but that doesn't happen when the request is denied.
If a request was denied by a dst ACL based on its successfully resolved
destination IP address but %<a was logged as "-", then it is a Squid bug
that should be fixed IMO. Meanwhile, you can annotate every dst match
and log that annotation. Here is an untested sketch:
acl matchDst1 dst 127.0.0.1
acl markDst1 note matched=127.0.0.1
acl all-of dst1 matchDst1 markDst1
http_access deny dst1
acl matchDst2 dst 127.0.0.2
acl markDst2 note matched=127.0.0.2
acl all-of dst2 matchDst2 markDst2
http_access deny dst2
logformat myFormat ... matched_dst=%note{matched}
access_log ...
The same thing with fewer lines (but with fewer ways to group dst1 and
dst2 with other ACLs):
acl matchDst1 dst 127.0.0.1
acl markDst1 note matched=127.0.0.1
http_access deny matchDst1 markDst1
acl matchDst2 dst 127.0.0.2
acl markDst2 note matched=127.0.0.2
http_access deny matchDst2 markDst2
logformat myFormat ... matched_dst=%note{matched}
access_log ...
For long dst lists, the above approach will require scripting the
generation of the corresponding squid.conf portions or include files, of
course.
If a request was denied by a dst ACL because its destination IP address
could not be resolved, then %<a should be logged as "-". I cannot think
of a way to distinguish this case from other cases where %<a is "-". It
feels like address resolution failures should be available via
%err_detail, but I doubt Squid code populates that information in these
cases. Another problem to fix!
HTH,
Alex.
> Is there any way to get the ip logged that was used in the dst-acl aside
> from debug logging? Maybe through some annotation mechanism?
>
> Squid version is 6.2, as 6.4 crashes with assertion errors here, too.
>
> thanks,
> Martin
>
> _______________________________________________
> squid-users mailing list
> squid-users at lists.squid-cache.org
> https://lists.squid-cache.org/listinfo/squid-users
More information about the squid-users
mailing list