Search squid archive

Re: 2FA with Google Authenticator and squid login

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

 



On 3/02/25 18:25, NgTech LTD wrote:
What i was talking about is using both the auth helper and the external ack helper.


Using an ACL helper is just extra complication that is not needed and the "Keep It Simple" (KIS) principle of design is very important for security systems.


For "global" access you can authorize OR authenticate. Doing "validate + authorize + authorize" is pointless for this use-case.

You only need to add authorization on top of authentication (eg user login + group access) if you have some non-global resources/area needing special authorization that is not granted by just the login.



At the lowest-level of operations:
* the auth_param helper performs security action "Validate". The http_access rules you use to call it perform security action "Authorize".

* the external ACL helper performs "nothing"[0] as far as Squid is concerned. The http_access rules you use to call it perform security action "Authorize".

[0] It could actually be doing anything, but Squid cannot know what. In particular it does **not** trigger Squid to apply any HTTP authentication-related security requirements on the HTTP request/reply handling (where the HTTP headers used by auth_param does trigger those) - which can potentially be **extremely** dangerous.



The password is static but the authorization itself is done via some push or another totp method that will authorize the login for a specific amount of time.


Sure. But you do not need an external ACL for that.

In my earlier suggested design the altered ERR_* page has a HTML form for POST'ing the 2FA token somewhere directly from the clients Browser to a server. That other service is what grants the "Valid" status to complete the 2FA login.


**IF** that POST goes through Squid it should use an unrelated TCP connection and/or HTTPS security - so there is no way for Squid or any other service than your auth server to know which previous client login it applies to.



And indeed it will kind of degrade the connection to 1fa for a period of time, but, it will protect against couple specific attacks.
So, if the proxy connection is encrypted inside a tunnel then it's ok.


To be 2FA by definition the entire process has to happen over two distinct channels, each being used to pass a different token (a.k.a. "factor").

case 1: client does not send any user+pass at all:

 channel 1: client -> Squid : (no login)
	  : Squid->client   : 401 login required

 channel 2: auth server -> email : token

 channel 1: client -> Squid : POST username + pass + token
	  : Squid->client   : 200 login confirmed,



case 2: client sends login details, but no 2FA yet:

 channel 1: client -> Squid : HTTP username + pass
	  : Squid->client   : 401 login required

 channel 2: auth server -> email : token

 channel 1: client -> Squid : POST username + pass + token
	  : Squid->client   : 200 login confirmed,


NB: in both cases you could do a 307 redirect back to the original requested URL if it is known at that late stage.




As for a directly accessible proxy over plain http, it will be vulnerable to many auth attacks..

This is not relevant. Any login system faces the same risks of attack floods.And the "plain HTTP" is not required. It is only part of this discussion because Squid is an HTTP proxy. Thus messages are interpreted by Squid as HTTP regardless if they were received as "plain" or HTTPS.


HTH
Amos

_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
https://lists.squid-cache.org/listinfo/squid-users



[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux