Apache-Httpd

繞過特定 IP 的 Apache 身份驗證

  • November 18, 2018

我們使用 Apache 作為反向代理,因此我們的一些內部開發/測試伺服器可以在開放 Internet 上訪問以用於 UAT/CAT 目的。

我們通過 LDAP 伺服器進行了基本的身份驗證設置,但我們有一些站點需要將某些特定 IP 列入白名單,以便他們無需通過身份驗證即可訪問伺服器。

我不確定在目前部分之上添加另一個像這樣的部分是否會起作用:

<proxy *>
Require all granted
Require ip x.x.x.x y.y.y.y
</proxy>

這是.conf文件目前的樣子:

<VirtualHost *:80>
 ServerName some.server.url

 ## Vhost docroot
 DocumentRoot "/var/www"

 ## Directories, there should at least be a declaration for /var/www

 <Directory "/var/www">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Require all granted
 </Directory>

 ## Logging
 ErrorLog "/var/log/httpd/some.server.url_error.log"
 ServerSignature Off
 CustomLog "/var/log/httpd/some.server.url_access.log" combined

 ## Proxy rules
 ProxyRequests Off
 ProxyPreserveHost Off
 ProxyPass /robots.txt !
 ProxyPassReverse /robots.txt !
 ProxyPass / https://some.server.url/ acquire=3000 keepalive=On retry=0 timeout=1800
 ProxyPassReverse / https://some.server.url/

 ## Custom fragment
 <proxy *>
   AuthBasicProvider ldap-client-websites ldap-sidlee-dig
   AuthType Basic
   AuthName "GRM CRHA UAT"
   Require valid-user
 </proxy>

</VirtualHost>

不,不要添加第二個<proxy *>塊,因為它會與第一個塊衝突。

相反,將現有<proxy *>塊更改為:

## Custom fragment
<proxy *>
   AuthBasicProvider ldap-client-websites ldap-sidlee-dig
   AuthType Basic
   AuthName "GRM CRHA UAT"
   <RequireAny>
       Require ip x.x.x.x y.y.y.y
       Require valid-user
   </RequireAny>
</proxy>

</VirtualHost>

這樣,只滿足組Require內的一個指令<RequireAny>就足以允許訪問。因此,需要具有匹配的 IP 地址成功的身份驗證才能允許訪問。

引用自:https://unix.stackexchange.com/questions/458008