DNS 네임서버 공격을 막는 방법-2

DNS 네임서버 공격을 막는 방법

앞에 포스팅했던 DNS 공격으로 인한 DNS 서버 공격을 회피하는 방법을 설명하였습니다. 여기에 추가적으로 더 방어하는 방법을 2번째 포스팅으로 마무리를 하겠습니다.

DNS 서버 및 웹서버의 공격 및 해킹시도 그리고 인젝션 방어를 위해서는 방화벽 싱글모드로는 한계가 있었습니다. PFSENSE 로 이중화를 구성했다고 한들 실제 방어체계는 한대로 처리되기에 안심할수 없는 상황이였습니다. 고민끝에 프런트방화벽(IPS/FireWall)과 백앤드방화벽(FireWall/HAProxy)을 설계로 방어를 해보자 해서 구성을 진행하였습니다. 프런트방화벽은 라운드로빈 방식으로 패킷을 분산처리 하여 백앤드로 보내고 온갖 잡다한 스캐닝이나 트리거 IP들을 필터후에 백앤드단에서 통과된 패킷만 받고 거기에 웹서버든 메일서버든 DNS서버로 보내는 방법이였습니다. 예상한데로 적중은 했고 위 DNS 공격은 패킷이 작기 때문에 IPS를 통과해버리는 문제였으며 IP갯수는 수천에서 수억개가 트리거로 계속 치고 들어왔습니다. 패킷 모니터링을 해본 결과 특이한걸 발견했습니다.

아래 그림과 같이 DNS서버로 들어오는 패킷이 DNS 패킷과 DNS서버 패킷이 다르다는걸 보여주고 있었습니다

위 그림은 DNS가 차단규칙으로 방어가 되고 있는 상황이지만 차단규칙을 적용하지 않았을때는 저 패킷이 그대로 통과가 되버리고 있었습니다.

똑같이 UDP 53 프로토콜을 사용하는 서비스인데 DNS Server 프로토콜과 DNS 프로토콜을 아래 그림과 같이 분리하여 구분하고 오브젝트화 한 제품이였단걸 오랜기간동안 몰랐었습니다.(물론 이제품을 사용하는 회사는 거이 없을겁니다 특정 회사 빼고는요)

그렇다면 DNS는 차단하고 DNS Server만 허용하는 규칙을 만들면 어떨까? 고민을 해보고 한번 적용을 해봤습니다.

DNS 네임서버로 요청하는건 통과시키고 그렇지 않은 DNS 요청은 차단을 해버리는 룰인데 백앤드방화벽 단이나 서버단에서 통신사 DNS쿼리를 요청하기도 하기 때문에 예외처리 구성으로 차단하였습니다.

이 구성 이후로는 모든 DNS 공격시도와 스캐닝 그리고 DNS서버가 노출되었다는 정찰 봇들이 전부 차단이 되는것을 확인하였고 1-2주정도가 지나니 동시다발적으로 공격시도하는 패킷은 한개도 보이지가 않았습니다. 처음엔 DNS와 DNS Server 규칙 우선순위가 바뀌었는데 DNS서버 패킷까지 차단되는 실수가 있어서 순서를 바꿔서 정상적인 서비스가 되게 하였습니다.

DNS 서버 방어를 위해서 DNS 패킷을 차단한다는 이야기를 이쪽 분야에 일하는 지인과 해봤지만 도저히 이 부분이 이해도 안되고 말이 안맞는다는 피드백을 받을뿐?이였지만 그래도 현재까지 DNS 공격을 막지 못하는 여러 서비스 업체 및 회사들이 많다는걸 이 경험을 통해서 알게 되었습니다. 약간 희안하지만 그래도 방어는 불가능 하지 않다는걸 증명해주는 경험 사례로 포스팅을 마무리 합니다.

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다