[백업][가리사니] 톰켓 server.xml remoteaddrvalve 를 이용하여 특정 아이피만 허용/거부 하기
jsp, tomcat

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

요즘 가리사니의 방문자분들이 조금 증가하여.. 작업을위해 테스트 서버를 만들었습니다.

테스트 서버는 작업자 외 타인이 접근하면 안되기 때문에 아이피로 막는법을 적어보겠습니다.

참고 org.apache.catalina.valves.RemoteAddrValve https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Remote_Address_Filter

위 필터가 적용되는 곳은 Engine, Host, Context 가 있지만 예제에서는 Host에 써보도록하겠습니다.

org.apache.catalina.valves.RemoteAddrValve 의 속성

allow : IP주소가 여기에 쓴 정규식에 포함되지 않을 경우 모두 거부. deny : IP주소가 여기에 쓴 정규식에 포함될 경우만 거부. denyStatus : 거부될 경우 보낼 상태코드 : 기본값 403 포비든.

먼저 톰켓의 server.xml 을 열고. 아래와 같이 작성해줍니다.

<Host name="테스트도메인" appBase="경로">
	<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="내 아이피|127\.0\.0\.1|0:0:0:0:0:0:0:1"/>
	<기타 설정들.. />
</Host>

아이피를 좀 특이하게 적었다고 생각할 수 있는데 위에서 말한듯이 정규식을 사용합니다. .은 정규식에 이스케이프이기 때문에 . 으로 작성해줘야합니다. 또한 여러개의 조건을 구분할때에는 , 가 아닌 정규식에서의 구분자인 | 를 사용해야합니다. 즉 자신의 아이피가 123.123.123.123 인경우 123.123.123.123 으로 적어주셔야하며 456.456.456.456 과 같이 사용하고싶을 경우 "123.123.123.123,456.456.456.456"이 아닌 "123.123.123.123|456.456.456.456" 으로 적어주셔야합니다.

추신. 사실 문자열로 정규식을 쓸때 \를 한번만 쓰는건.. 좀어색하지만.... 공식문서 예제에서도 \. 가 아닌 . 을 사용하고 있네요.