У меня есть развертывание с сервером apache 2.2.22 за лаком. Если IP-адрес X-Forwarded-For (клиент) - 1.2.3.4, то пусть он смотрит страницу без аутентификации.
Проблема в том, что это небезопасно, клиент может просто установить заголовок X-Forwareded-For и обойти аутентификацию.
Я пробовал модуль Apache RPAF:
<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 varniship
</IfModule>
Который теоретически должен ограничивать X-Forwarded -Для запросов, поступающих от прокси, я даже не уверен, что мне нужен этот модуль в этом случае, поскольку прокси всегда будет помещать за собой IP-адрес клиента X-Forwarded-For. Таким образом, запрос будет выглядеть так:
X-Forwarded-For: <varniship>, clientip
Где клиентская подсказка снова может управляться клиентом. Есть ли лучший способ сделать это?
В качестве альтернативы вы можете сделать это также на стороне 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==";
}
}
Может быть расширен другими проверками, исходящими из заголовка запроса.
<Directory "/var/www/html/docroot">
AuthName "Restricted Access"
AuthType Basic
AuthUserFile /usr/local/.htpasswd
Order allow,deny
Allow from x.x.x.x
Require valid-user
Options Indexes FollowSymLinks
satisfy any
</Directory>
Это работает как очарование для меня, хотя я на 2.4.10 и не могу проверить старую.