![특정 IP에 대해 Apache 인증 우회](https://linux55.com/image/137358/%ED%8A%B9%EC%A0%95%20IP%EC%97%90%20%EB%8C%80%ED%95%B4%20Apache%20%EC%9D%B8%EC%A6%9D%20%EC%9A%B0%ED%9A%8C.png)
우리는 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 규칙을 생성할 수 있습니다.
나는 이것이 다소 복잡한 과정임을 주의하고 당신이 이 길을 가고 싶다면 신중하게 고려할 것입니다.