Amos Jeffries wrote
> On 13/07/2014 2:35 a.m., freefall12 wrote:
>> this is my iptables rules
>> 
>> iptables -A PREROUTING -p tcp -m tcp --dport 30000:60000 -j REDIRECT
>> --to-ports 50000
>> 
>> port 5000 is the squid's listing port. 
>> 
>> What i want to do is to assign each user an unique port number and rely
>> upon
>> the port number in the access log for accounting.
>> 
>> OK,the procedures will be something like this:
>> 
>> 1,When an user register an account at the site, assign the user a random
>> port number and associate it to the username in database
>> 2,Open the port using iptables
>> 3,use the %>lp symbol to record the connected port number in access log.
>> 4,Parse the access log and insert relevant accounting data into the
>> database
>> 5,Automatically ban ip if port scanning is detected
>> 
>>  i'm stuck at the step 3 as i'm unable to get the connected port number
>> in
>> forward proxy mode
>> 
>> Do you think this can work reliably in reality?
> 
> 
> That REDIRECT is a NAT rule. It will definitely need the "intercept"
> option on Squid listening port to fetch the correct client destination
> details as the only thing the OS gives to Squid is its own port 50000.
> Just like you found.
> 
> Getting the traffic into Squid is not the biggest issue though. Since
> you are using NAT to do it you will then face all the traffic
> interception security checks which verify the TCP destination IP address
> the client is going to matches the Host header rDNS records. If they
> dont match, Squid will use the provided IP address directly - which in
> your case will loop back at itself.
> 
> 
> Alternatives:
> 
> You could use the ext_session_acl helper. It was designed for this type
> of user management. In active mode it presents a splash page for user
> login before access is granted to them by configured signature for a
> while.
> 
> The newer ext_session_sql_acl helper is similar, but depends entirely on
> an external identification/login system updating the SQL database which
> it checks for a configured client signature.
> 
> NP: the default signature for these session helpers in demos is usually
> IP address. But there is no technical reason it has to be.
>  In your current plan it is the destination port, but it could just as
> easily be the src-IP and User-Agent header pair for almost unique user
> identification.
> 
> 
> You could also re-build Squid with a larger definition for
> MAXTCPLISTENPORTS in src/anyp/PortCfg.h and configuring multiple
> http_port lines. But this set of ports is scanned sequentially at least
> every 10ms, which could slow down your proxy noticably if the set was
> particularly large.
> 
> You could use IPv6 with EUI-64 ACL verification and require your clients
> to use their SLAAC IPv6 addresses to contact you. Can be tricky to
> ensure the right address is used though.
> 
> Amos

Sorry, i don't know much about iptables.what other iptables rules can i use
to get the correct client destination
details? 

The 2 alternatives you've suggested appear to be not fit for my plan. 

To my knowledge, ext_session_acl will still need a page for
reauthentication, which doesn't work with mobile apps. is that correct?
Also, changing the port range definition a larger may not be a practical
solution when users grow to hundreds or thousands.



--
View this message in context: 
http://squid-web-proxy-cache.1019090.n4.nabble.com/how-can-i-get-the-localport-in-forward-proxy-mode-tp4666888p4666892.html
Sent from the Squid - Users mailing list archive at Nabble.com.

Reply via email to