특정 IP에 대해 Apache 인증 우회

특정 IP에 대해 Apache 인증 우회

우리는 Apache를 역방향 프록시로 사용하므로 내부 개발/테스트 서버 중 일부는 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>

답변1

<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 주소가 있습니다또는액세스를 허용하려면 성공적인 인증이 필요합니다.

답변2

나는 Apache에서 프록시를 사용하여 이와 같은 작업을 수행할 수 없었습니다.

다른 TCP 포트 전용 추가 프록시를 설정한 다음 유사한 방식으로 두 번째 포트를 정의하고 싶은 유혹을 받습니다. 그런 다음 두 번째 포트에 대한 인증을 비활성화할 수 있습니다.

그런 다음 시스템에 허용할 IP에 대한 액세스를 제한하는 두 번째 포트에 대한 IPTables 규칙을 생성할 수 있습니다.

나는 이것이 다소 복잡한 과정임을 주의하고 당신이 이 길을 가고 싶다면 신중하게 고려할 것입니다.

관련 정보