Cloud/AWS

AWS WAF(403 Fobidden)

seung_soos 2023. 8. 26. 15:33

시작하며

프로젝트 개발 테스트시 발생된 에러와 대처방법을 기록하였다.

인프라 영역을 누군가가 조작하고, 정보교환이 되지않아 발생하였다.

 

프로젝트에서 서버와 서버간의 통신을 할때 RestTemple을 사용하였다. 서버간의 통신구간에 try-catch문으로 예외처리를 한 부분에서 발생된 에러이다.

로그상 403 Forbidden이 발생하였고, 해당 403 에러의 경우 접근권한과 맞지 않는 접근 요청이 왔을 경우 발생하는 에러라고한다.

해당 부분은 대량의 트래픽이 서버로 전송되는 부분이였고, 관련되어 이전에 상용 서버에서 비슷한 경험이 있었다.

 

이전 경험을 토대로 수정하려했지만, AWS를 잘 몰라 이거 저거 만지고 찾아보며 삽질하며 해결한 방법이다.

 

AWS의 WAF & Shield 설정으로 이동

좌측 메뉴의 Web ACLs 선택 및 리전을 선택하면 ACL(Access Control List)가 나온다.

ACL의 Rules에서 문제가 발생하였던것으로 보인다.

 

1. 해결방법

운영설정과 비교해보니, 해당 설정에 특정IP의 대량 트래픽을 허용하는 룰이 삭제되어있어, 

IP sets에서 특정 IP에 대한 설정을 추가하고, 추가한 IP의 트래픽을 허용하는 룰을 만들었다.

 

해당 IP에 대한 트래픽을 허용하였지만, 아직 403 에러가 해결되지는 않았다.

 

이후 조치한 방법으로,

2. 해결방법

A라는 대량의 트래픽을 차단하는 룰 (Action 결과를 Block으로 차단)과,

B라는 특정 IP의 대량 트래픽을 허용하는 룰(Action 결과를 Allow으로 허용) 이 있을경우

 

순서가 적용이 되는것이였다.

 

이경우 대량의 특정 허용된 IP가 전송되었지만 A가 상단부분에 있었기 때문에 403 에러를 내렸던것이였다.

생각해보면 JAVA에서도

if(대량 트래픽 차단){
	return false;
}

if(특정아이피에 대해서는 허용){
	retrun true;
}

해당 설정이라 생각했을 경우 모두 첫번째 if문에서 걸렸을 것이다.

 

그래서 해당 설정 룰의 순서를 수정하니 해결되었다.👊🏻