시나리오는,

  • 1. 허용하고자 하는 IP 대역은 192.168.0, 192.168.1.2, 10.0.0, 10.1, 10.2 이다.
  • 2. 위 IP 대역이 아닌 경우 /htm/forbidden.htm 을 보여준다. 

첫 번째 방법은 deny, allow 를 이용한 방법입니다.

Order deny,allow
Deny from all
Allow from 192.168.0
Allow from 192.168.1.2
Allow from 10.0.0
Allow from 10.1
Allow from 10.2

위와 같이 설정한 후 ErrorDocument 403 에서 /htm/forbidden.htm 을 지정하면 됩니다.

그런데 이 경우 response header 에 403 코드가 노출되게 되어 보안상 그다지 좋지는 않습니다.

그래서 두 번째 방법을 사용하기도 합니다. 

RewriteEngine on
 
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.2
RewriteCond %{REMOTE_ADDR} !^10\.0\.0\.
RewriteCond %{REMOTE_ADDR} !^10\.1\.
RewriteCond %{REMOTE_ADDR} !^10\.2\.
RewriteCond %{REQUEST_URI} !/htm/forbidden.htm$ [NC]
RewriteRule ^.*$ /htm/forbidden.htm [R,L]

바로 mod_rewrite 를 사용하는 것입니다.