[스위치 계층 보안③] 레이어2 공격 유형(2)
상태바
[스위치 계층 보안③] 레이어2 공격 유형(2)
  • 공성철 인젠 컨설팅 본부 컨설턴트
  • 승인 2003.10.09 00:00
  • 댓글 0
이 기사를 공유합니다

스위치 계층(L2)은 건축물의 기둥에 해당하는 부분으로 입구경비와 외관 등을 완벽하게 지키더라도 기둥이 무너지면 아무런 의미가 없는 것처럼, 스위치에 연결된 각종 호스트 및 서버의 안정적인 운영을 위해 스위치 계층의 보안은 고려해야 한다. 단 스위치 계층의 특성상 해당 네트워크에 연결돼야만 공격이 가능하므로, 물리적 보안과 관리적 보안의 중요성도 잊지 말아야 할 것이다.

VLAN 공격

VLAN(Virtual LAN)은 스위치의 물리적인 네트워크를 네트워크 관리자가 필요에 따라 좀 더 작은 논리적인 네트워크로 분리하는 것을 의미한다. 1대의 물리적인 스위치를 논리적으로 분리한다는 것은 포트기반, 프로토콜 기반, 서브넷 기반으로 분리할 수 있으며, 벤더에 따라 지원하는 기준은 상이하다. <그림 1>은 포트 기반 VLAN을 구성한 예로, VLAN 1과 VLAN 2의 호스트간에는 통신이 되지 않는다.

VLAN으로 분리한 구성에도 필요상 모든 VLAN이 교집합처럼 공통적으로 액세스가 가능해야 할 포트가 요구될 때도 있다. <그림 1>에서 만약 모든 호스트가 인터넷을 접속해야 하며, 인터넷망과 연결된 라우터가 1대라면 라우터는 어느 포트에 연결을 해야 할까?

<그림1> 정상적인 MAC 테이블 동작

VLAN 1과 VLAN 2가 동시에 액세스할 수 있는 포트가 필요하다. 이러한 포트를 트렁크(Trunk) 포트라고 하며, 트렁크 포트는 여러 개의 VLAN을 중복할 수 있다. 트렁크 설정은 IEEE 802.1Q 또는 시스코의 ISL(Inter-Switch Link) 방식으로 패킷을 변조하는데, 기술적인 용어로는 태깅(tagging)한다고 하며, ISL의 경우 시스코에서만 사용되는 고유한 방식이다. 801.1Q 태깅은 정상적인 패킷 내에 801.1Q 태그 정보가 삽입되게 된다.

보안 위협

① 베이직 VLAN 호핑 공격

이 공격은 네트워크 공격의 일종으로, 정상적인 경우 서로 다른 VLAN 내의 호스트간에는 통신을 하지 못하므로 공격자 역시 통신이 불가능하지만 공격자는 가능하도록 한다. 공격자 자신이 스위치처럼 위장하고, 변조된 ISL 혹은 802.1Q의 패킷을 스위치로 전송해 스위치와 트렁크 포트로 연결됨으로써 VLAN과 관계없이 모든 네트워크로 접속할 수 있다.

공격이 성공한 이유는 공격자와 연결된 스위치에서 트렁크 포트 설정이 관리자가 설정하는 방법 이외에 스위치가 자동적으로 설정하는 DTP 기능이 자동(AUTO)으로 설정되어 공격자가 요청한 트렁크 설정에 스위치가 트렁크 포트로 설정한 것이다.

대부분의 스위치의 DTP기능이 자동으로 초기설정돼 있으며, 이것은 어떤 트렁크 포트의 설정 요청에도 트렁크 포트를 허용한다는 기능이므로 주의해야 한다.

② 더블 인캡슐레이티드 VLAN 호핑 공격

간단히 정리하면, 공격자는 원하는 VLAN으로 접속하기 위한 트렁크 포트가 되기 위해 802.1Q의 패킷 변조를 2번하여 스위치를 공격하는 것이다. 스위치는 첫 802.1Q를 한 번 사용하고 다시 다른 스위치에서 두 번째 802.1Q를 사용하는 방식으로 802.1Q 패킷 변조가 2번이 되었음에도 불구하고, 스위치에서는 한 번만을 해석한다는 기능적인 취약점을 이용해 호핑(hopping)의 의미대로 깡총깡총 VLAN을 넘어다닌다.

<그림3> 더블 인캡슐레이티드 VLAN 호핑 공격 사례

<그림 3>은 공격자가 첫 번째 스위치와 두 번째 스위치에서 802.1Q 정보를 사용함으로써, 공격 대상으로의 접근이 가능하다. 이써리얼(Ethereal)이라는 패킷 스니핑 툴을 이용해 패킷을 정보를 분석해 보면 801.1Q 패킷변조가 2번 되어 있는 것을 확인할 수 있다.

보호 대책

우선 항상 모든 트렁크 포트에 대해서 일관적인 VLAN ID를 사용해야 한다. 즉 VLAN 구성 혹은 장비 설정시 즉흥적인 VLAN ID 할당이 아닌, 정책적이고 분류된 VLAN을 할당한다. 그 다음 사용하지 않는 포트는 꺼 놓은 후 사용하지 않는 VLAN으로 모두 포함시킨다. 여기에서 VLAN 1의 VLAN ID는 사용하지 않는다.

VLAN을 지원하는 장비들의 초기 설정은 모든 포트가 VLAN 1으로 설정돼, 구매 후 별다른 VLAN 설정을 하지 않으면 모든 포트가 VLAN 1에 포함되어 있으므로 일반 스위치와 동일하게 사용할 수 있다.

또한 벤더나 모델 구분 없이 모두 VLAN 1으로 초기설정돼 있으므로, VLAN을 지원하는 A사 제품과 B사 제품 구매 후에도 별다른 설정이 없으면 두 스위치끼리 트래픽이 전송된다. 만약 벤더마다 VLAN 초기설정이 각각 다르다면, 장비 설정을 변경하기 전에는 스위치간 트래픽 전송이 불가능한 사태를 예방하기 위함이다.

마지막으로 일반 호스트(사용자)가 접속하는 포트들은 모두 논-트렁킹(DTP Off)으로 설정해야 한다. 일반 호스트와 연결된 포트가 트렁크 포트로 사용될 일은 극히 희박하므로, 트렁크 포트 변경될 수 없도록 한다.

DHCP 고갈

DHCP(Dynamic Host Configuration Protocol)란 호스트 등의 IP설정 시 사용자가 고정적으로 IP를 할당하지 않고 DHCP 서버에서 제공하는 IP, 서브넷 마스크, 게이트웨이와 DNS 등의 정보를 자동으로 할당받을 수 있는 기능이다. 이것은 수많은 호스트가 존재하는 네트워크 구성에서 관리자의 IP 관리의 효율성을 가져다 줄 수 있는 기능이지만 보안관점에서는 불합리한 점들이 있다.

보안 위협

DHCP 고갈(starvation) 공격은 위조된 MAC 주소로 포함해 DHCP 리퀘스트(request) 패킷을 브로드캐스트한다. 만약 리퀘스트가 충분히 많다면 공격자는 DHCP의 할당 가능한 모든 주소들을 소비시킬 수 있으며, 이것은 SYN 플루드(flood)와 같은 간단한 자원 고갈(resource starvation) 공격이라고 할 수 있다.

이후 공격자는 DHCP 서버로 위장해 사용자들에게 DHCP 주소를 할당하지만, 할당하는 주소에는 잘못된 DNS, 게이트웨이 등의 정보를 포함하고 있으므로 사용자는 위조된 주소 정보로 데이터를 전송한다. 정상적인 네트워크 경로가 아닌 공격자에게 트래픽 전송으로 인한 여러 가지 문제점이 발생한다.

보안 대책

각 포트에서의 사용할 수 있는 MAC 주소를 제한함으로써 CAM 플루딩 공격을 방지하기 위한 방법과 마찬가지로 DHCP 고갈의 대책으로 사용할 수 있으나, 위장된 DHCP 서버를 통한 공격은 차단하지 못한다. 위장된 DHCP 서버를 이용한 공격을 차단하기 위해 RFC 3118의 ‘Authentication for DHCP Messages’에서 DHCP 메시지의 인증 방법을 이용하기도 했지만, 마침내 DHCP 옵션 82에서 근본적인 대책을 마련했다. DHCP 고갈 공격 가능성을 최소화하기 위해서는 네트워크 내의 안전한 네트워트 지역내에 여러 대의 DHCP 서버를 구성하는 것도 고려해 볼만 하다.

사설 VLAN 공격

사설(Private) VLAN의 핵심적인 기능은 같은 IP 서브넷 상의 시스템간 통신을 제한하기 위해 사용한다. 사설 VLAN에 포함된 포트들의 설정은 네트워크 구성을 고려해 트래픽 전송여부에 따라 결정된다.

시스코의 경우 아이솔레이티드(isolated) 포트는 오직 프로미스큐어스(promiscuous) 포트와 통신이 가능하지만, 아이솔레이티드 포트간에는 통신이 차단된다. 공격자가 아이솔레이티드에 속해 있다면, 다른 아이솔레이티드 포트에 속해 있는 호트스를 공격하기 위해서는 사설 VLAN에 의해 차단되지 않아야 하므로, 사설 VLAN의 보안정책을 위배하는 공격을 시도한다.

보안 위협

공격자는 공격 대상 호스트에게 접근하려고 하지만, 사설 VLAN 정책에 서로 다른 아이솔레이티드 포트에 위치하고 있으므로 불가능하다.

<그림4> 사설 VLAN 공격 사례

공격자는 패킷을 위조해 라우터의 MAC 주소를 목적지로 하고 IP 주소는 공격 대상 주소로 하는 변조된 패킷을 전송한다(목적지 MAC:목적지 주소=C:2). 위조된 패킷을 수신한 스위치는 목적지 MAC 주소가 라우터이고, 라우터는 프로미스큐어스 포트에 연결돼 있으므로 스위치는 라우터로 공격자가 전송한 패킷을 전달한다(사설 VLAN의 정책에 위배되지 않음). 즉 스위치는 MAC 주소만을 보고 라우터로 전송한 것이다.

패킷을 수신한 라우터는 IP 주소가 라우터 자신이 아닌 공격대상 호스트의 IP이므로, 목적지를 공격대상 호스트의 정상적인 MAC 주소로 변경(목적지 MAC:목적지 주소=C:2 → B:2 로 변경)해 스위치로 재 전송한다. 즉 라우터는 IP만을 보고 재 전송한 것이다.

스위치는 라우터가 재전송한 패킷의 목적지의 MAC 주소가 공격 대상의 MAC 주소이므로 공격대상으로 전달한다. 결국 공격자는 스위치→라우터→스위치→공격 대상의 경로로 사설 VLAN 정책이 무의미하도록 통신을 하고 있다.

보안 대책

공격이 가능한 이유는 공격자의 위조된 패킷이 라우터로 접속이 가능했기 때문이므로, 라우터의 인터페이스에 ACL(Access Control List)을 설정해 차단해야 한다. ACL은 스위치와 연결된 인터페이스로 유입되는 IP 프로토콜 중 출발지, 목적지가 모두 내부 네트워크인 트래픽을 차단하도록 설정한다. 출발지와 목적지가 내부 네트워크인 트래픽은 라우터까지 전송되지 않고 스위치에서 전송할 수 있으므로, 라우터까지 도달할 필요가 없기 때문이다. 이러한 ACL 설정으로 공격자의 위조된 패킷이 스위치에서 라우터에 도달할 경우 차단된다.

스위치 액세스

장비 관리, 설정과 모니터링 등을 위해 스위치에는 IP를 할당하며 텔넷, http 등의 접속으로 직접 장비로 접속할 수 있다. 불법적인 접속을 차단하기 위해 계정 및 패스워드 인증으로 권한에 따라 모니터링 혹은 설정 변경이 가능하다. 물론 벤더마다 상이하지만, 공통적인 것은 인증절차를 제공하고 있다는 것이다. 보통 장비 구매 후 운영 네트워크에 설치할 때, 다음과 같은 과오를 자주 범한다.

  • 패스워드를 설정하지 않는다.
  • 패스워드는 간단한 것을 사용한다.
  • 장비 초기 설정된 패스워드를 그대로 사용한다.
  • 사용에 아무런 문제가 없으므로 초기 설정으로 그대로 사용한다.
  • 장비 설정시 정상적으로 동작하면 더 이상의 설정은 하지 않으며, 제공 기능들에 대해 고민하지 않는다.

보안 위협

공격자는 스위치의 IP정보, 벤더 및 장비명, 벤더별 장비의 초기 패스워드 정보 등을 쉽게 파악할 수 있으므로, 위와 같은 스위치 운영환경에서는 쉽게 장비로 로그인할 수 있다. 공격자가 장비로 직접 접속할 수 있다는 것은 매우 위험한 일이다.

그 순간부터 공격자는 전지전능한 신이 되어 장비 설정 변경, 운영 펌웨어 삭제, 설정 내용 삭제, 설정 내용 백업, 특정 포트의 셧다운과 인에이블(enable) 반복, 리부팅 등 무수한 일을 할 수 있다. 장비에서 제공하는 모든 기능들을 검토하고 실습할 것이다.

보안 대책

레이어 2 계층의 스위치는 백본 스위치처럼 고성능의 고가의 장비가 아니므로 소홀한 경향이 현실인 것만은 분명하다. 그러나 스위치의 보안강화는 스위치와 연결된 모든 호스트 및 서버들의 정상적인 운영을 위한 기초가 되므로 다음과 같은 보안대책으로 안전한 스위치 운영의 토대를 마련해 보자.

  • 스위치의 패스워드는 중요 서버의 부트(root) 패스워드와 같은 수준으로 설정한다.
  • 패스워드 인증 이외에 계정입력 기능이 제공되면 활용하도록 한다.
  • 장비의 초기설정 계정 및 패스워드는 반드시 삭제 혹은 변경한다.
  • ACL을 활용한 접근제어를 설정한다. 관리자의 호스트 주소, 혹은 네트워크 대역만이 접속할 수 있도록 한다.
  • SNMP(Single Network Management Protocol) 기능을 사용하지 않을 경우 삭제하고, NMS(Network Management System)를 통한 관리를 하고자 할 경우 SNMP 커뮤니티를 패스워드 정책에 준하는 수준으로 변경한다. 공격자는 SNMP 커뮤니티만을 파악함으로써 90% 이상의 하드웨어 정보와 운영정보를 얻을 수 있다.
  • SSH, SSL 등 암호화된 프로토콜을 이용한 장비접속을 구현한다. 물론 장비의 지원여부를 확인해야 한다. 일반적인 텔넷 혹은 http의 경우 네트워크 스니핑으로 패스워드 등의 주요 정보가 노출될 수 있다.
  • 장비의 로깅 기능을 활용한다. 로그서버로의 전송을 설정하고 주기적인 로그분석으로 운영상태 점검 및 침해사고 대응의 기초자료로 활용한다.

댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.