본사에 개발서버를 구축해 놓고 개발하던 중
고객사의 담당자로 부터 연락이 왔다.
개발서버에 있는 프로젝트에 신규기능 추가 및 수정을 하면
담당자가 개발서버에 붙어서 내용을 확인하는 식으로 업무를 진행하고 있었는데
보안이슈도 발생 할 수도 있으니 고객사 이외의 외부IP는 접근을 못하게 해달라는 요청이었다.
외부IP접근을 막는 방식은 두 가지가 있다.
1. IP TIME(공유기)단에서 외부IP를 막는방식
2. 스프링 프로젝트에서 Filter / Interceptor로 외부IP를 막는방식
공유기에서 보안설정을 통해 고객사를 제외한 IP는 차단하는 방식을
사용하고 있었는데, 문득 이런생각이 들었다.
' 지금은 본사에서 개발을 하니까 공유기 설정이 가능하지만
공유기 설정이 불가능한 외부에서 프로젝트를 진행한다면? '
어떤 환경에 있어도 외부IP를 막을 수 있도록 해야겠다는 생각을 했고
스프링 Interceptor를 사용할 외부IP접근 차단 로직을 구현하기로 했다.
1. Interceptor 구현(MyInterceptor.java)
@Component("myinterceptor")
public class MyInterceptor extends HandlerInterceptorAdapter {
private static final List<String> ALLOWED_IPS = Arrays.asList("127.0.X.X", "192.168.X.X");
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String ipAddress = request.getRemoteAddr(); //접속 IP를 가져온다.
if(!ALLOWED_IPS.contains(ipAddress)) //list에 담아둔 허용IP와 접속된IP 비교
{
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<script>alert('접근제한된 IP입니다.');history.go(-1);</script>");
out.flush();
return false;
}
return true;
}
}
1. Array에 허용가능한 IP를 담아둔다.
2. preHandle 메소드에서 접속IP와 Array에 들어있는 허용IP를 비교한 후
같지 않으면 접속 불가.
2. Interceptor 등록(dispatcher-servlet.xml)
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/> /*허용 path*/
<mvc:exclude-mapping path="/portal/gd/**"/> /*제외 path*/
<mvc:exclude-mapping path="/intranet/**"/> /*제외 path*/
<bean class="egovframework.test.cmmn.interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
1. 허용path와 제외path 추가 후 만들어는 Interceptor를 등록한다
* mapping path를 등록하지 않으면 Interceptor가 동작을 안하기 때문에 필수로 적어줘야한다.
** 테스트 결과 허용한IP 외에는 접근이 불가능하다
Intercepor를 통해 외부IP 차단로직을 직접 구현해 보니
생각보다 어렵지 않았고 공유기 설정과, 스프링 Interceptor에서
동시에 외부IP 접근을 차단하면 더욱 보안에 신경 쓸 수 있다는 생각이 들었다.
'전자정부프레임워크&Spring Project' 카테고리의 다른 글
Session만료 시 메시지 띄우기 (0) | 2024.09.28 |
---|---|
톰캣서버에 다수의 프로젝트 배포하기(War파일) (0) | 2024.08.04 |
Google 2차인증 구현(구글 OTP) (0) | 2024.06.23 |
다량의 데이터 batch처리로 한번에 처리하기 (0) | 2024.05.27 |
전자정부프레임워크 - 수료증 (1) | 2024.03.19 |