Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-05 Thread Amos Jeffries
On 6/05/2016 4:07 a.m., Ser de Bronce wrote:
> Yuri,
> 
>> But this is the default behaviour for proxy with auth
> 
> I didn't know that.
> Initially I tested on iPhone using wi-fi connection and as I said earlier
> there are wi-fi proxy settings on iPhone so user should type them only once
> and then each browser and app works without asking login/pass.

Well, Yuri is only half-right there. It is and it isn't.

The browser initial request may or not have credentials (secure clients
do not send any up front, insecure clients do). If it doesn't the proxy
responds with a 407 requesting them.

The browser then is expected to find some. How is left up to the browser
- but the expectation is that it will try the APN assigned credentials
and/or its own credentials store *before* bothering the user with a popup.



> 
>> I still do not understand the purpose for which authentication is
> required?
> 
> This proxy will be available from anywhere, but I need to prevent usage of
> this proxy by anyone, except my clients. This is the main purpose.
> I had a plan to give login and password to each client, but as I said
> earlier this is not possible because of user experience reasons.


That is a device/browser bug. The above described sequence should be
happening, but apparently isn't. Since it is the browser part of the
auth which is falling down there is very little Squid can do.
 The few things Squid can do require all this happening over a LAN
environment and do not work across WAN / Internet connections.

Sounds like you are stuck between a rock and a hard place. I'm a bit
puzzled about how you expect APN settings to be pushed to devices
connected via another service provider across the Internet.


> Also I can't rely on MAC, IP or other indirect attributes.
> 
> So I try to find other ways to check if user who is connecting to proxy is
> my client or not.
> Right now I see only two ways here:
> 1) authentication by proxy server using certificates
> 2) authentication by some other server which accept certificates and then
> redirecting connections to proxy.
> 
> As I said I'm novice and didn't use proxy earlier. Maybe you know better
> solution.

No, those are your choices.

Amos

___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-05 Thread Yuri Voinov

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256
 


05.05.16 22:07, Ser de Bronce пишет:
> Yuri,
>
> > But this is the default behaviour for proxy with auth
>
> I didn't know that.
> Initially I tested on iPhone using wi-fi connection and as I said
earlier there are wi-fi proxy settings on iPhone so user should type
them only once and then each browser and app works without asking
login/pass.
>
> > I still do not understand the purpose for which authentication is
required?
>
> This proxy will be available from anywhere, but I need to prevent
usage of this proxy by anyone, except my clients. This is the main purpose.
> I had a plan to give login and password to each client, but as I said
earlier this is not possible because of user experience reasons.
> Also I can't rely on MAC, IP or other indirect attributes.
Now understand. I see no better solution except external auth helper.
The only thing: there is not exists now in Squid with ready-to-use. It
contains only template.

>
> So I try to find other ways to check if user who is connecting to
proxy is my client or not.
> Right now I see only two ways here:
> 1) authentication by proxy server using certificates
> 2) authentication by some other server which accept certificates and
then redirecting connections to proxy.
Yep, something like OpenLDAP, OpenVPN or combination.
>
> As I said I'm novice and didn't use proxy earlier. Maybe you know
better solution.
Hm. Consider this:
http://wiki.squid-cache.org/ConfigExamples#Captive_Portal_features
>
> Best regards,
> Sergey

-BEGIN PGP SIGNATURE-
Version: GnuPG v2
 
iQEcBAEBCAAGBQJXK3IJAAoJENNXIZxhPexGKmwH/1JGpw1jD/GYGbuRHlOwuAP7
QU69ZZh0qd2T188Vs2gFgd9tc0dvVbxhkYljQPjdK2stDyQ5Ahzu/x8ke/Wp8Hhr
vHa7xVx1l4IP1tD9oEzfST7CovldVXjsHJ9/VLyIap2Cfszjhg4JRXwTblJjfOAM
r7qUSgUlHDDGcTxhEjXFp0pnVbJzN3NZXjLhyiuSUFESabxcyGXQUOHQMatjrLBu
XuZ9zwUu+1tUW3o72nYUytdB1gYMwgQePezDIYm+TX51fGu96SBN3qLyO96iQtzl
Iz8gNrqvJ1gWHgXLiMWznEckbHEBI3VTck38/VFyIs2P2Fzv+5hBOTp9s15APCI=
=R0my
-END PGP SIGNATURE-



0x613DEC46.asc
Description: application/pgp-keys
___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-05 Thread Ser de Bronce
Yuri,

> But this is the default behaviour for proxy with auth

I didn't know that.
Initially I tested on iPhone using wi-fi connection and as I said earlier
there are wi-fi proxy settings on iPhone so user should type them only once
and then each browser and app works without asking login/pass.

> I still do not understand the purpose for which authentication is
required?

This proxy will be available from anywhere, but I need to prevent usage of
this proxy by anyone, except my clients. This is the main purpose.
I had a plan to give login and password to each client, but as I said
earlier this is not possible because of user experience reasons.
Also I can't rely on MAC, IP or other indirect attributes.

So I try to find other ways to check if user who is connecting to proxy is
my client or not.
Right now I see only two ways here:
1) authentication by proxy server using certificates
2) authentication by some other server which accept certificates and then
redirecting connections to proxy.

As I said I'm novice and didn't use proxy earlier. Maybe you know better
solution.

Best regards,
Sergey
___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-05 Thread Yuri Voinov

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256
 


05.05.16 19:19, Amos Jeffries пишет:
> On 6/05/2016 1:06 a.m., Ser de Bronce wrote:
>> Dear Amos and Yuri, thanks a lot for your answers.
>>
>> Sorry for the mess, I'm novice here.
>> As it turned out my proxy is not transparent...
>>
>> By "some reasons" I meant clients' experience reasons, let me explain.
>>
>> I use explicit proxy and my clients connect to proxy using iPhone only.
>> I installed self-signed certificate on every iPhone and made login/pass
>> authentication.
>> It works perfect for wi-fi connection, because in this case iPhone
gives a
>> possibility to specify proxy domain, port, login and password.
>> However to make them connect to proxy using mobile internet I had to
>> install APN profile on each iPhone. Inside APN profile I can specify
domain
>> and port, but not login and pass (APN doesn't have such settings). So
when
>> client opens browser using mobile internet he is asked for login/pass
every
>> time. This situation is not appropriate for me so I can't use login/pass.
>>
>> I'm thinking that maybe it's possible to replace login/pass
authentication
>> with certificate authentication.
>> I want to authenticate users using a digital certificate they already
have
>> on their iPhone.
>>
>> I found some articles about certificate authentication for reverse proxy,
>> but can't find anything about explicit one.
>> Is it possible?
>
> Squid can listen on an https_port for connections. The TLS settings to
> challenge for client cert are the same for explicit proxy as you would
> find for reverse-proxy.
>
> What you will also find however is that browsers do not do TLS to
> proxies, or if they do not without jumping through some other hoops
> which are browser dependent.
>
> IIRC;
> * Chrome requires that it is started with certain command line options,
> AND that a PAC file is used with https:// URI for the proxy detail.
>
> * Firefox requires that PAC file are used with https:// URI for the
> proxy detail AND limits the protocol spoken to those proxy to HTTP/2.
In my personal opinion, that everywhere for the crazy idea to push HTTPS
- and where it is necessary and where it is not necessary. If a hammer -
everything looks like a nail.
>
>
> * Safari and IE - seem not to support TLS proxy at all yet AFAIK.
>
> Amos
>
> ___
> squid-users mailing list
> squid-users@lists.squid-cache.org
> http://lists.squid-cache.org/listinfo/squid-users

-BEGIN PGP SIGNATURE-
Version: GnuPG v2
 
iQEcBAEBCAAGBQJXK1JLAAoJENNXIZxhPexGW/MIAM0aKjIOY4/3o8iYisQIQQjX
e10w0d7ygLbX4cHabzURwcR5J1qaoPE1VnK5tugybsEBUYLdj4EMRQ/FEqUIhC/+
aWodGOWneZ8QEFh7U+56g+fZLzUolbtJidjl/9JwmB8iWKSNgffLEgrTG3GIh4Jt
o7AfkqNejKqyaSio0iY1QygqI+LKBUVTpPdQIQ4950Ulql+rN55k7mktia04ZC35
bxM3p060aE5SG6YmEqjxOi1mAceMW1SmAESMKAN/GzuRc3CK4TUzqlXcxfScLEwQ
Il6HH0r+ovh19cj5dBZIVAS3cVgK1zvdsVREoZ4HUJIS/0n3dDUgbnP3hpXvGtI=
=2GpD
-END PGP SIGNATURE-



0x613DEC46.asc
Description: application/pgp-keys
___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-05 Thread Amos Jeffries
On 6/05/2016 1:06 a.m., Ser de Bronce wrote:
> Dear Amos and Yuri, thanks a lot for your answers.
> 
> Sorry for the mess, I'm novice here.
> As it turned out my proxy is not transparent...
> 
> By "some reasons" I meant clients' experience reasons, let me explain.
> 
> I use explicit proxy and my clients connect to proxy using iPhone only.
> I installed self-signed certificate on every iPhone and made login/pass
> authentication.
> It works perfect for wi-fi connection, because in this case iPhone gives a
> possibility to specify proxy domain, port, login and password.
> However to make them connect to proxy using mobile internet I had to
> install APN profile on each iPhone. Inside APN profile I can specify domain
> and port, but not login and pass (APN doesn't have such settings). So when
> client opens browser using mobile internet he is asked for login/pass every
> time. This situation is not appropriate for me so I can't use login/pass.
> 
> I'm thinking that maybe it's possible to replace login/pass authentication
> with certificate authentication.
> I want to authenticate users using a digital certificate they already have
> on their iPhone.
> 
> I found some articles about certificate authentication for reverse proxy,
> but can't find anything about explicit one.
> Is it possible?

Squid can listen on an https_port for connections. The TLS settings to
challenge for client cert are the same for explicit proxy as you would
find for reverse-proxy.

What you will also find however is that browsers do not do TLS to
proxies, or if they do not without jumping through some other hoops
which are browser dependent.

IIRC;
* Chrome requires that it is started with certain command line options,
AND that a PAC file is used with https:// URI for the proxy detail.

* Firefox requires that PAC file are used with https:// URI for the
proxy detail AND limits the protocol spoken to those proxy to HTTP/2.

* Safari and IE - seem not to support TLS proxy at all yet AFAIK.

Amos

___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-05 Thread Yuri Voinov

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256
 


05.05.16 19:06, Ser de Bronce пишет:
> Dear Amos and Yuri, thanks a lot for your answers.
>
> Sorry for the mess, I'm novice here.
> As it turned out my proxy is not transparent...
>
> By "some reasons" I meant clients' experience reasons, let me explain.
>
> I use explicit proxy and my clients connect to proxy using iPhone only.
> I installed self-signed certificate on every iPhone and made
login/pass authentication.
> It works perfect for wi-fi connection, because in this case iPhone
gives a possibility to specify proxy domain, port, login and password.
> However to make them connect to proxy using mobile internet I had to
install APN profile on each iPhone. Inside APN profile I can specify
domain and port, but not login and pass (APN doesn't have such
settings). So when client opens browser using mobile internet he is
asked for login/pass every time. This situation is not appropriate for
me so I can't use login/pass.
But this is the default behaviour for proxy with auth.

I still do not understand the purpose for which authentication is required?
>
> I'm thinking that maybe it's possible to replace login/pass
authentication with certificate authentication.
> I want to authenticate users using a digital certificate they already
have on their iPhone.
>
> I found some articles about certificate authentication for reverse
proxy, but can't find anything about explicit one.

Reverse proxy is different thing against forwarding/transparent proxy.

AFAIK there is no solution you asked.

But you can be first.

I see this:

1. You can write external auth helper, with Perl/Pyton/etc. for
authentification.
2. You can setup DHCP with 252 option for push proxy.pac to your clients.
3. You can tell us about success ;)


> Is it possible?
In theory, everything is possible, which does not contradict the laws of
physics. :)
>
> Best Regards,
> Sergey
>

-BEGIN PGP SIGNATURE-
Version: GnuPG v2
 
iQEcBAEBCAAGBQJXK0cOAAoJENNXIZxhPexGUG4H/3uMpUgrRnO1kILD+jGr96+4
7JVAm6NUrmnzseYLz2BkXtWPCb2fWxsOoQOWXdwHZR9YtpsM6aSFG+zG0nRzGWFs
/nicGIThegKRfD6ONhumRPKzDKdIhEx+XSKcoaxB0q157ncTsgrazvoyLYetza+5
iTNSR30WNdqoslR5GlJDW4etTO88xfCu+trrhFI3yKFevzbq9xkrfBC06K0+RX2U
twaAHJToGRoiAhEsrhD9MwxxGj4E8NUYGvhaAfINyqSjXNJhQ0d4eTwTp18Dok13
ae/ake0f0aSnrCN7riBMS5iIINvwKMf/bTCibMGSJ1TVnr7B5K6RNVR3eqtQ0lU=
=pQ4f
-END PGP SIGNATURE-



0x613DEC46.asc
Description: application/pgp-keys
___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-05 Thread Ser de Bronce
Dear Amos and Yuri, thanks a lot for your answers.

Sorry for the mess, I'm novice here.
As it turned out my proxy is not transparent...

By "some reasons" I meant clients' experience reasons, let me explain.

I use explicit proxy and my clients connect to proxy using iPhone only.
I installed self-signed certificate on every iPhone and made login/pass
authentication.
It works perfect for wi-fi connection, because in this case iPhone gives a
possibility to specify proxy domain, port, login and password.
However to make them connect to proxy using mobile internet I had to
install APN profile on each iPhone. Inside APN profile I can specify domain
and port, but not login and pass (APN doesn't have such settings). So when
client opens browser using mobile internet he is asked for login/pass every
time. This situation is not appropriate for me so I can't use login/pass.

I'm thinking that maybe it's possible to replace login/pass authentication
with certificate authentication.
I want to authenticate users using a digital certificate they already have
on their iPhone.

I found some articles about certificate authentication for reverse proxy,
but can't find anything about explicit one.
Is it possible?

Best Regards,
Sergey
___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-04 Thread Yuri Voinov



04.05.16 18:05, Amos Jeffries пишет:

On 4/05/2016 11:20 p.m., Ser de Bronce wrote:

Hi there,


Maybe someone already knows any solution:


I have transparent proxy and according to some reasons I can’t use
login/password authentication. However I still need to control who can
access my proxy.


I can install certificates to my users. Is it possible to allow connection
only if a user has the certificate issued by my CA?

You seem not to quite understand what the "some reasons" actually are.
If you did you would not have to ask.


Firstly, there is only one reason behind it all.

The reason is that the client thinks it's talking to some service that
is *not your proxy*. That is very important.


Secondly, there is one criteria that determines what works and what fails.

That criteria is "authentication". Specifically in-band authentication.
Any type of in-band authentication WILL fail. Any type. Not just passwords.

TLS client certificate is just another type of in-band authentication.
  * Which answers your question: No. It wont work the way you want.


If you can install certificates that easily. Then surely you can just as
easily assign explicit proxy settings. Doing that would avoid all the
issues with interception.


Also, Think about all the passive details / metadata you get from the
client traffic and how you can use it to authorize access without
actively engaging the client across the intercepted connection.

There are quite a lot of things you can do. Methods like RADIUS or DHCP
assigned IP addresses. Static IPs, or MAC address registrations a proxy
external ACL helper can lookup to identify the client account.
Just in addition. DHCP with infinite lease, or static binding, or IDENT 
;) Or, yes, RADIUS


Amos

___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users


Re: [squid-users] Is there a way to allow connection according to user certificate?

2016-05-04 Thread Amos Jeffries
On 4/05/2016 11:20 p.m., Ser de Bronce wrote:
> Hi there,
> 
> 
> Maybe someone already knows any solution:
> 
> 
> I have transparent proxy and according to some reasons I can’t use
> login/password authentication. However I still need to control who can
> access my proxy.
> 
> 
> I can install certificates to my users. Is it possible to allow connection
> only if a user has the certificate issued by my CA?

You seem not to quite understand what the "some reasons" actually are.
If you did you would not have to ask.


Firstly, there is only one reason behind it all.

The reason is that the client thinks it's talking to some service that
is *not your proxy*. That is very important.


Secondly, there is one criteria that determines what works and what fails.

That criteria is "authentication". Specifically in-band authentication.
Any type of in-band authentication WILL fail. Any type. Not just passwords.

TLS client certificate is just another type of in-band authentication.
 * Which answers your question: No. It wont work the way you want.


If you can install certificates that easily. Then surely you can just as
easily assign explicit proxy settings. Doing that would avoid all the
issues with interception.


Also, Think about all the passive details / metadata you get from the
client traffic and how you can use it to authorize access without
actively engaging the client across the intercepted connection.

There are quite a lot of things you can do. Methods like RADIUS or DHCP
assigned IP addresses. Static IPs, or MAC address registrations a proxy
external ACL helper can lookup to identify the client account.

Amos

___
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users