개발
AWS 개발 일지
AWS IP 차단 방법 (서버 아이피 차단)
138 views as of October 10, 2024.
기존에 웹 서버 단계에서 아이피를 차단하는 방법을 기록한 적이 있다.

이 방법의 단점은 일일히 서버 설정을 열어서 차단해야된다는 문제가 있고, 서버 단에서 엑세스 거부를 날리기 때문에 웹서버 자체가 일단 접근은 허용한 이후에 삭제한다는 특징을 가지고있다.

그러다보니 결국 엑세스가 거부되도 서버 자체가 부하를 겪은 경우도 있기는 하다.

뭔가 다른 좋은 방법이 없을까해서 알아보니 아마존 웹 서비스를 사용하는 환경이라면 AWS 단에서 특정 아이피를 차단할 수 있다는걸 알게되었다.

정확히 말하면 내 AWS 서비스가 묵여있는 VPC 에다가 트래픽 제어를 거는 방식으로 IP 차단을 할 수 있다.

일단 AWS 웹 콘솔을 통해서 제어할 수 있으므로 시커먼 터미널화면에서 관리안해도된다는 장점이 매우 크다.


거두절미하고 설정하는 방법을 알아보러 가보자.
AWS 콘솔에 들어가서 "vpc"라고 상단에 검색해주면 VPC 서비스를 찾아갈 수 있다.

이 VPC 화면의 좌측메뉴에서 [보안] > [네트워크 ACL] 로 들어가보면 아래와 같은 화면을 볼 수 있다.


만약에 만들어져있는 ACL 리스트가 없다면 우측상단에 ACL 생성을 통해 만들어주고, 만든 ACL의 ID를 눌러 상세 리스트 화면으로 이동해준다.


추후에 아이피 차단을 진행하면 아래 "인바운드 규칙"에 그 리스트가 표기될것이다. 
아마 만든 직후에는 "규칙번호 100" 모든 트래픽에 대한 허용 규칙과 "규칙번호 *" 모든 트래픽에 대한 제한 규칙만 있을것이다.

앞으로 제어를할때 이 2개의 기본규칙은 건드리지않고 피해서 추가, 수정하면 될것이다.

우선 인바운드 규칙의 우측 상단에 있는 [인바운드 규칙 편집] 버튼을 누르면 아래와 같은 수정 모드로 들어갈 수 있다.


여기서 특별히 알아둬야할 부분은 "규칙 번호" 설정법과 "소스" 입력방법 정도이다.

우선 입력할 수 있는 데이터는 "규칙 번호", "유형", "소스", "허용/거부" 정도인데 이중에서 "유형"은 어떤류의 트래픽을 막을것인지 선택하는것이고 "허용/거부"는 말그대로 해당 요청에 대한 처리를 묻는것이다.

본 규칙의 가장 아래에는 규칙번호 100으로 모든 소스에 대해서 모든 트래픽 접근을 허용한다라는 규칙이 전제하고있기 때문에 통상적으로 여기에 우리가 추가로 입력할 정보는 차단정보가 될것이다. 그러므로 "허용/거부"는 기본적으로 거부로 세팅하면 될것이다.


1. 규칙번호
이 인바운드 규칙은 낮은 번호의 규칙부터 먼저 평가된다. 그말은 즉슨 위에서부터 아래로 절차적으로 규칙을 적용한다는 것이다.

위의 스크린샷에서는 규칙번호 60 -> 61 -> 62 -> ... -> 83 -> 84 -> 100 -> * 이렇게 적용된다고 보면될거같다.
이 순서에 대해서는 알아둬야할것이 있는데 먼저 번호에서 어떤 규칙으로인해 걸러진 트래픽은 후 순서 규칙검사를 안한다는것이다.

잘못된 예로 규칙번호 1에 모든트래픽, 모든소스(0.0.0.0/0)에 대해서 거부를 설정하면 이후에 어떤 설정으로 허용 규칙을 만들어도 1번의 거부설정에서 이미 걸러져서 이후의 규칙은 무용지물이라는 의미이다.

그러므로 규칙 번호의 순서 설정(오더링)은 신중하게 이루어져야한다.


2. 소스
소스는 스크린샷에서도 짐작 가능하듯이 차단 또는 허용할 아이피를 입력하는 란이다. 단 여기에서의 정보입력은 서브넷 마스크 정보가 포함된 IP를 입력해주는것이 기본이다.

내가 특정아이피 1개를 차단하고싶으면 123.123.123.123/32 처럼 소스정보를 입력하면 될것이고 내가 특정 아이피 대역을 차단하고싶으면 123.123.123.0/24 처럼 소스정보를 입력하면 될것이다.


여기까지 내가 필요한 아이피 차단 리스트의 편집이 끝났다면 우측하단의 [변경 사항 저장]을 꼭 눌러서 변경정보를 반영해야한다.
변경은 즉시 적용되며 해당 아이피에대한 트래픽이 AWS 단에서 차단되므로 향후 웹 서버 로그에서 해당 아이피에 대한 접근요청 또한 사라지게된다.

×