원본 본문으로 이동하기

톰켓 server.xml RemoteAddrValve 를 이용하여 특정 아이피만 허용/거부 하기

박용서 - 요즘 가리사니의 방문자분들이 조금 증가하여.. 작업을위해 테스트 서버를 만들었습니다. 테스트 서버는 작업자 외 타인이 접근하면 안되기 때문에 아이피로 막는법을 적어보겠습니다. 참고 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" 으로 적어주셔야합니다. 추신. 사실 문자열로 정규식을 쓸때 \를 한번만 쓰는건.. 좀어색하지만.... 공식문서 예제에서도 \\. 가 아닌 \. 을 사용하고 있네요. - JSP Tomcat