Apache 2没有从ips的身份validation

我有一个部署与Apache 2.2.22服务器后清漆

我想完成的是用htpasswd保护一个目录的密码,但是对于来自ips的某些用户来说这个访问是不需要authentication的。

AuthType Basic AuthName "test" AuthUserFile /www/.htpasswd Require valid-user order deny,allow deny from all SetEnvIF X-Forwarded-For "1.2.3.4" AllowIP Allow from env=AllowIP Satisfy any 

我现在所做的是这样的,这是一个解决方法,但是它正在工作。 如果X-Forwarded-For IP(客户端)是1.2.3.4,那么让他无需validation就可以观看页面。

这个问题是不安全的,客户端可以设置一个X-Forwareded-For标头并绕过authentication。

我已经尝试了Apache RPAF模块:

 <IfModule rpaf_module> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 varniship </IfModule> 

理论上应该限制来自代理的X-Forwarded-For请求,我甚至不确定在这种情况下我需要这个模块,因为代理将总是把X-Forwarded-For客户端IP放在它的后面。 所以要求如下:

 X-Forwarded-For: <varniship>, clientip 

客户可以再次操纵客户。 有一个更好的方法吗?

  <Directory "/var/www/html/docroot"> AuthName "Restricted Access" AuthType Basic AuthUserFile /usr/local/.htpasswd Order allow,deny Allow from xxxx Require valid-user Options Indexes FollowSymLinks satisfy any </Directory> 

这对我来说就像一个魅力,虽然我在2.4.10,并没有一个较旧的testing。

另外,你也可以在Varnish vcl一侧做到这一点:

  sub vcl_recv { # whitelist ip 10.10.10.10 if (req.http.X-Forwarded-For ~ "^10\.10\.10\.10") { # where dXNlcjpwYXNzd29yZA== is user:password in base64 set req.http.Authorization = "Basic dXNlcjpwYXNzd29yZA=="; } } 

可以通过来自请求头的其他检查进行扩展。