강좌
클라우드/리눅스에 관한 강좌입니다.
네트워크 분류

라우터 BlackHole filtering

작성자 정보

  • 구돌 작성
  • 작성일

컨텐츠 정보

본문

 

라우터 BlackHole filtering

 

만약 특정 IP 또는 특정 대역에서 과도한 스캐닝이나 공격시도가 감지된다면 해당 IP 또는 대역을 차단할 수 있는데, 이때마다 일일이 access-list를 지우고 다시 설정하는 작업은 여간 번거로운 일이 아닐 수 없다.

 

이러한 경우에는 access-list보다 CPU 부하가 적으면서도 손쉽게 필터링이 가능한 “blackhole 필터링이라는 것을 사용하는 것이 좋은데, black hole 필터링이란 특정 목적지IP 또는 IP대역에 대해 특정한 인터페이스로 라우팅 테이블을 강제로 지정하여 특정패킷이 라우터 내부로 들어올 수는 있지만 나갈 수는 없도록 하는 것으로 내부적으로 패킷을 필터링하는 것이 아니라 패킷을 Null 0 인터페이스로 포워딩하는 개념이므로 CPU 부하가 거의 없다.

 

 

사용 형식은 다음과 같다.

 

 

interface Null0

no ip unreachables

!

ip route <dest to drop> <mask> Null0

 

, static routing을 이용하여 특정한(evil) 목적지 IP 또는 대역을 Null0라는(마치 유닉스의 /dev/null과 같이) 가상의 쓰레기(garbage) 인터페이스에 강제적으로 보냄으로써 트래픽을 차단하는 방식이다.

 

(따라서 blackhole 필터링을 Null Routing이라고도 한다.

 

) 라우터에서는 패킷이 필터링 될 때마다 해당 패킷의 소스 IPicmp unreachable messages를 발송하게 되는데, 만약 서비스거부 공격이 이루어지고 있을 경우 필터링 되는 패킷으로 인하여 라우터에서 많은 icmp 패킷이 유발되므로 이 때문에 라우터에 과부하를 유발할 수 있다.

 

따라서 해당 인터페이스(Null0)에서 이에 대해 반응하지 않도록 no ip unreachables 설정을 하는 것이 좋다.

 

이 설정을 하였을 경우 포트스캔이나 IP스캔의 결과를 지연시키거나 보이지 않도록 하는 효과도 있다.

 

sender.com.31504 > receiver.com.23: S

router > sender.com:icmp: host receiver.com unreachables

위는 sender.com에서 receiver.com으로 telnet 접속을 시도하였지만 라우터 내부에는 receiver.com이라는 서버가 없거나 다운되어 연결할 수 없기 때문에 라우터에서 대신 icmp로 응답하였다는 것을 알 수 있다.

 

그러나 “no ip unreachables” 설정 후에는 라우터에서 반응을 하지 않게 된다.

 

만약 ip unreachables를 반드시 사용하여야 할 특별한 이유가 있다면 “ip icmp rate-limit unreachable”을 이용하여 응답하는 비율을 제한하기 바란다.

 

 

 

아래의 경우 blackhole 필터링을 이용하여 231.1.1.1 IP를 차단하는 것을 보여주고 있다.

 

명령어의 형식은 static routing이므로 mask 적용 시 access-list에서 사용하는 wildcard mask를 쓰지 않도록 주의하기 바란다.

 

 

interface Null0

no ip unreachables

!

ip route 231.1.1.1 255.255.255.255 Null0

 

만약, 231.1.1.0/24 대역을 차단한다면 아래와 같이 하면 될 것이다.

 

Router(config)#ip route 231.1.1.0 255.255.255.0 Null0

 

설정한 내용을 해제하려면 설정내용 앞에 no를 붙이면 된다.

 

 

 

필자의 경우 필자가 관리하는 네트워크대역에 대해 심각하게 IP스캔을 하거나 스팸을 뿌리는 IP가 보일 때마다 위에서 설명한 blackhole 필터링으로 차단한다.

 

그러한 경우 공격자는 대부분 차단된 것을 확인 후에는 더 이상의 시도를 하지 않게 되고 때때로 자동화된 스캔 프로그램을 실행해 두었는지 차단되고 있음에도 불구하고 계속시도를 하는 경우도 가끔 있다.

 

일반적인 tcp 접속을 예로 들면 이러한 경우 접속 시도(SYN)는 라우터를 통과하여 서버까지 도달 한 후 서버에서는 응답(SYN/ACK)을 하는데, 이 패킷이 라우터의 이더넷 인터페이스까지 도달 후 라우터를 통과하여 나가지 못하고 라우터의 Null0인터페이스로 보내진 후 버려져 서버에서는 SYN패킷에 대하여 SYN/ACK로 응답 후 ACK를 받지 못하므로 마치 SYN Flooding공격을 당하는 것처럼 SYN_RECV가 많이 보이게 된다.

 

 

다시 한 번 설명하면 blackhole 필터링이란 해당하는 소스 IP에 대한 라우팅이 아니라 목적지 IP에 대한 라우팅이므로 공격자의 IPblackhole 설정하였을 경우 공격자의 요청(소스:공격자, 목적지:내부서버)은 라우터를 통과하여 서버까지 전달되지만 서버에서의 응답(소스:내부서버, 목적지:공격자)blackhole처럼 Null0로 보내어져 사라지게 되므로 이러한 현상이 나타나게 되는 것이다.

 

물론 공격자의 소스IP를 차단하려면 access-list를 사용하여야 한다.

 

그리고 blackhole 필터링은 포트까지 제어할 수 있는 L4가 아니라 IPIP대역을 차단하는 L3이다.

 

따라서 특정한 포트를 차단할 수는 없으며 이를 위해서는 extended access-list를 사용하여야 한다.

 

 

강사 : 라쿠텐 홍석범 부매니저

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 전체 회원수 59,444 명
  • 전체 게시물 30,916 개
  • 전체 댓글수 11,873 개