Hi,
I'm running a mod_perl/Mason app at a fairly large company.  We have two pools 
of machines, each pool with it's own pair of load balancers.  One pool uses F5 
BigIP, and the other uses Netscaler.  The problem that I'm having is that the 
Apache variable REMOTE_ADDR seems to correctly represent the client IP address 
when the request is dispatched from the F5.  But with the Netscalers, 
REMOTE_ADDR always reflects the IP address of the load balancer itself.  
Netscaler does provide the ability for us to define custom headers to maintain 
true client state info (i.e. the real client IP address), and that works fine 
for deriving the proper client IP insidle the mod_perl app, as well as 
application logging.

The problem I'm having is that we have secret URIs (or Locations) in the 
application, that we restrict by internal IP addresses, as well as 
authentication.  All of these secret Locations are protected using mod_access 
deny/allow functionality.  But because of the way the Netscalers instatiate the 
incoming HTTP request with our individual nodes in the pool, we are always 
seeing the balancer's IP.  So, I've had to loosen my allow restrictions from 
what used to be a class C subnets, to basically 10.* just to allow ourselves to 
access the secret Locations through the Netscaler pool.  That means if any 
outside user happens to guess the secret Location(s), they can get to the 
authentication part of the protection with 50% probability.

Our operations staff says we are sticking with F5's on the one pool, and 
Netscaler on the other, so I have to deal with the difference.  Also, we cannot 
add the equivalent pass-thru header in the F5's, like the NetScalers have.  How 
can I restrict a secret Location by IP or domain, if the Netscalers are 
incapable of preserving the real client IP when dispatching to the individual 
nodes in the pool, and we cannot have the F5's replicate the pass-thru header 
information the same as the Netscalers?

SetEnvIf is really not an option for us either, because we have 
business/marketing folks in offices around the world that access these secret 
locations.  It's just not realistic to have them all set some custom header or 
something, way too difficult from an IT perspective.

The only option I can think of is to abandon the access security at the apache 
level, and move it into the application.  Does anyone have any other ideas?

Ex. from our config:

      <LocationMatch "^/+(marketing/report.*)$">
        order deny,allow
        deny from all
        allow from  10  172.16  192.168
      </LocationMatch>

Our App:
- RedHat 7.2
- Apache 1.3.28
- mod_perl 1.29

Thanks in advance for any help you can offer.



---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: [EMAIL PROTECTED]
   "   from the digest: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to