
여러 가지 이유로 인해서 네트워크를 감시해야한다는 사실은 굳이 말하지 않아도 될 듯하다. 네트워크를 감시하는 방법은 여러가지가 있지만 - 보안 전문가가 아닌 관계로 감시하는 방법은 구글링을 통해 알아보기 바란다 - 본 포스트에서 스위치 SPAN (Switched Port Analyzer) 포트를 이용한 패킷 모니터링에 대해 알아보도록 한다.
SPAN에 대한 간단한 소개
일반적인 허브는 패킷을 특정 포트에서 수신할 경우 해당 포트를 제외한 전체 포트에 패킷을 전송한다. 하지만 스위치는 MAC 주소로 이루어진 레이어 2 포워딩 테이블을 구축하며 이를 참고하여 패킷을 해당 포트로 직접 전송한다. 아래 그림을 참고하면 허브와 스위치의 패킷 전달 방법을 쉽게 이해할 수 있을 것이다.

허브 네트워크 환경에서는 패킷이 연결된 모든 호스트에 전달된다.

스위칭 네트워크 환경에서 패킷은 포워딩 테이블을 참조하여 직접 해당 포트에 전달된다.

Host A가 보내는 모든 패킷의 복사본을 인위적으로 Monitoring Host로 보내지도록 설정할 수 있다. 이때 Host A가 접속되어 있는 포트를 SPAN 포트라고 한다.
시스템 환경
OS : Fedora 12
Cisco IOS : C3640-IK9O3S-M v12.3
Packet Capture Software : Wireshark v1.2.6
시작하기

GNS3를 실행하여 새 프로젝트를 생성한 후 위 다이어그램과 같이 가상 장비들을 배치한다. 본 프로젝트에서 사용되는 PC는 라우터 이미지를 이용한 심볼을 새로 생성하여 사용하였다. 추가하는 방법은 [GNS3] 토폴로지에 PC 추가하기을 참고하기 바란다. 그리고 SW0는 라우터 3640 IOS 이미지를 이용하였으며 slot0에 NM-16ESW를 추가하였다. 기타 다른 가상 장비에도 3640 IOS 이미지를 이용하였다. 각 장비의 인터페이스는 Fast Ethernet을 지원하는 것이면 충분할 것이다.
자 이제 각 장비의 Configuration 방법을 살펴보도록 하자.
1. 라우터 R0 설정
VLAN100, 200을 생성하고 인터페이스 f0/0에는 encapsulation DOT1Q으로 서브인터페이스를 각각 생성한다.
VLAN 정보는 아래와 같다.
VLAN100
IP : 192.168.100.0/24
Default gateway : 192.168.100.1
VLAN200
IP : 192.168.200.0/24
Default gateway : 192.168.200.1Router Configuration은 아래와 같다.
R0#vlan database
R0(vlan)#vlan 100
VLAN 100 added:
Name: VLAN0100
R0(vlan)#vlan 200
VLAN 200 added:
Name: VLAN0200
R0(vlan)#apply
APPLY completed.
R0(vlan)#exit
APPLY completed.
Exiting....
R0#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R0(config)#interface f0/0
R0(config-if)#interface f0/0.100
R0(config-subif)#encapsulation dot1q 100
R0(config-subif)#ip address 192.168.100.1 255.255.255.0
R0(config-subif)#interface f0/0.200
R0(config-subif)#encapsulation dot1q 200
R0(config-subif)#ip address 192.168.200.1 255.255.255.0
R0(config-subif)#^Z
R0#wr
Building configuration...
[OK]
R0#
R0(vlan)#vlan 100
VLAN 100 added:
Name: VLAN0100
R0(vlan)#vlan 200
VLAN 200 added:
Name: VLAN0200
R0(vlan)#apply
APPLY completed.
R0(vlan)#exit
APPLY completed.
Exiting....
R0#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R0(config)#interface f0/0
R0(config-if)#interface f0/0.100
R0(config-subif)#encapsulation dot1q 100
R0(config-subif)#ip address 192.168.100.1 255.255.255.0
R0(config-subif)#interface f0/0.200
R0(config-subif)#encapsulation dot1q 200
R0(config-subif)#ip address 192.168.200.1 255.255.255.0
R0(config-subif)#^Z
R0#wr
Building configuration...
[OK]
R0#
2. 스위치 SW0 설정
스위치 SW0에 접속하여 마찬가지로 VLAN을 생성한 후 PC가 연결된 포트에 VLAN을 할당한다. VLAN 할당은 아래와 같다.
C0 VLAN100 active Fa0/1
C1 VLAN200 active Fa0/2
C1 VLAN200 active Fa0/2
Switch Configuration은 아래와 같다.
SW0#vlan database
SW0(vlan)#vlan 100
VLAN 100 added:
Name: VLAN0100
SW0(vlan)#vlan 200
VLAN 200 added:
Name: VLAN0200
SW0(vlan)#apply
APPLY completed.
SW0(vlan)#exit
APPLY completed.
Exiting....
SW0#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW0(config)#interface fa0/1
SW0(config-if)#switchport access vlan 100
SW0(config-if)#switchport mode access
SW0(config-if)#interface fa0/2
SW0(config-if)#switchport access vlan 200
SW0(config-if)#switchport mode access
SW0(config-if)#^Z
SW0#wr
SW0(vlan)#vlan 100
VLAN 100 added:
Name: VLAN0100
SW0(vlan)#vlan 200
VLAN 200 added:
Name: VLAN0200
SW0(vlan)#apply
APPLY completed.
SW0(vlan)#exit
APPLY completed.
Exiting....
SW0#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW0(config)#interface fa0/1
SW0(config-if)#switchport access vlan 100
SW0(config-if)#switchport mode access
SW0(config-if)#interface fa0/2
SW0(config-if)#switchport access vlan 200
SW0(config-if)#switchport mode access
SW0(config-if)#^Z
SW0#wr
3. 가상 PC 설정
본 포스트에서는 두 대의 가상 PC를 사용하며 서로 다른 VLAN에 할당한다. 위에서 언급했듯이 이번에는 라우터를 이용하여 PC를 에뮬레이트할 것이다. C0, C1에 콘솔로 연결하여 아래와 같이 설정하도록 한다.
C0#conf t
C0(config)#no ip routing
C0(config)#interface fa0/0
C0(config-if)#ip address 192.168.100.2 255.255.255.0C0(config-if)#no shutdown
C0(config-if)#exit
C0(config)#ip default-gateway 192.168.100.1C1#conf t
C1(config)#no ip routing
C1(config)#interface fa0/0
C1(config-if)#ip address 192.168.200.2 255.255.255.0C1(config-if)#no shutdown
C1(config-if)#exit
C1(config)#ip default-gateway 192.168.200.14. SPAN (Mirror) 포트 설정
3640 라우터의 제약으로 인해 SPAN 설정은 Port Monitoring만이 가능하다. Monitoring 방식으로는 Port Monitoring이외에 VLAN Monitoring, RSPAN을 이용한 VLAN Monitoring이 있으며 자세한 사항은 시스코 문서를 참고하기 바란다.
SW0을 콘솔 접속하여 설정하도록 하자.
SW0#conf t
SW0#monitor session 1 source interface fastethernet 0/1 - 14
1번 포트에서 14번 포트까지 모든 패킷을 캡쳐한다.
SW0#monitor session 1 destination interface fastethernet 0/15
캡쳐된 패킷을 15번 포트로 보낸다.
SW0#monitor session 1 source interface fastethernet 0/1 - 14
1번 포트에서 14번 포트까지 모든 패킷을 캡쳐한다.
SW0#monitor session 1 destination interface fastethernet 0/15
캡쳐된 패킷을 15번 포트로 보낸다.
위에서 보듯이 SPAN 설정은 의외로 간단하다. 하지만 복잡한 구성의 스위칭 네트워크에서 RSPAN을 이용한 SPAN 설정은 까다로울 수 있다.
여기까지 SPAN 포트 설정은 완료되었다. 이제 패킷 캡쳐를 통하여 설정이 제대로 적용되었는지 확인해 보도록 하자.
5. Wireshark를 이용한 패킷 캡쳐
실재 환경에서는 Mirroring port에 PC를 연결하여 Wireshark과 같은 패킷 캡쳐 소프트웨어로 네트워크를 감시한다. 하지만 GNS3 환경에서는 Wireshark를 설정하여 인터페이스를 캡쳐할 수 있다. GNS3에서 Wireshark 설정하는 방법은 [GNS3] 그 외 기타 사항를 참조하기 바란다.
인터페이스 캡쳐를 위해 더미 터미널(SPAN)을 설치하도록 하자. 본 포스트에서는 라우터 이미지를 설정한 가상 PC를 추가하였지만 Cloud 등 기타 장비를 추가하여도 무방할 것이다. 참고로 더미 터미널에 IP 등을 세팅할 필요는 없다. 더미 터미널을 스위치 SW0의 fa0/15 포트에 연결하도록 한다. SPAN 터미널과 스위치 사이의 라인을 오른쪽 클릭한 후 Capture를 선택하면 Wireshark가 실행되며 실행과 동시에 캡쳐를 시작할 것이다.
Wireshark를 통해 패킷을 캡쳐하기 전에 C0 혹은 C1에서 디폴트 게이트웨이(라우터 R0의 인터페이스)로 icmp 패킷을 보내도록 한다.
C0#ping
Protocol [ip]:
Target IP address: 192.168.100.1
Repeat count [5]:
Datagam size [100]:
Timeout in seconds [2]:
Extended commands [n]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/11/80 ms
Protocol [ip]:
Target IP address: 192.168.100.1
Repeat count [5]:
Datagam size [100]:
Timeout in seconds [2]:
Extended commands [n]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/11/80 ms
Wireshark 창을 보면 C0(192.168.100.2)에서 라우터(192.168.100.1)로 보내지고(icmp request), 되돌아오는(icmp reply) 패킷을 찾을 수 있을 것이다. 위의 예에서는 정확하게 5쌍의 icmp request/reply 패킷을 볼 수 있다. 추가로 192.168.200.1 혹은 C1로 ping을 보내보면 Wireshark에서도 동시에 패킷을 볼 수 있을 것이다. (Ctrl+R을 눌러 화면을 갱신하도록 하자)

마치며..
이 글을 쓰고 있는 글쓴이는 은행 전산부에서 일하고 있다. 관계 법령으로 인해 Cisco 전화 통화 기록과 메신저 대화 기록을 일정 기간(10년) 동안 남겨야 한다. 이를 위해 관련 솔루션을 도입했으며 위에서 설명한 SPAN 포트가 사용되었다. 이 외 네트워크 감시 및 유사한 기능을 하는 솔루션 등이 SPAN 포트가 사용될 수 있을 것이다. Cisco에 의하면 SPAN 포트 설정으로 인해 스위치에 미치는 영향은 거의 없다고 한다. 그리고 Monitoring 방식(Port Monitoring, VLAN Monitoring, RSPAN Monitoring)은 장비에 따라 다르니 Cisco 사이트에서 관련 문서를 참조하기 바란다.
참고 자료
1. Catalyst Switched Port Analyzer (SPAN) Configuration Example
댓글 없음:
댓글 쓰기