기획 배경
네트워크 관련해서 공부를 하면서 토폴로지를 구축하는 등의 실습을 자주 하였습니다. 주로 GNS3를 이용하여 실습을 하는데 회선 간 통신이 되는 패킷을 확인하려면 WireShark라는 프로그램을 사용하게 됩니다. WireShark에서 어떠한 패킷이 통신되는지, 어떤 프로토콜을 사용하는지 확인이 가능한데, 이와 비슷한 패킷 모니터링 시스템을 제작해보고 싶어서 기획하게 되었습니다.
개요
네트워크에서 발생하는 트래픽을 실시간으로 수집 및 분석하고 저장하는 프로그램을 구축할 것입니다. Python으로 제작하며 네트워크 패킷을 캡처하고, 로그를 저장하여 효율적으로 관리할 수 있습니다. 또한, 필요한 패킷을 검색하여 빠르게 파악할 수 있도록 할 것입니다.
1. 프로젝트 소개
네트워크 관련 실습을 할 때, 패킷이 통하고 어떠한 프로토콜이 들어오고 나가는지 직접 기록하고 로그로 남겨 모니터링 할 수 있는 네트워크 모니터링 및 로깅 시스템입니다. GNS3에서 패킷이 통하는 것을 확인하거나 네트워크를 모니터링할 때 주로 사용되는 WireShark와 유사한 프로그램을 Python으로 구현할 예정입니다.
2. 프로젝트 기획
이 프로그램은 Python의 scapy
라이브러리를 활용하여 실시간으로 네트워크 트래픽을 캡처 및 저장하고, 특정 프로토콜, IP, 포트를 기반으로 필터링합니다. 또한, 수집된 트래픽 데이터를 중앙 로그 저장소에 저장하여 효율적으로 관리할 수 있도록 설계할 것입니다.
3. 프로젝트 결과
scapy
를 이용하여 통신에 사용되는 프로토콜, 출발지 IP와 목적지 IP를 파악할 수 있었으며, 어떠한 통신이 이루어지는지 확인할 수 있었습니다. 예를 들어, 8.8.8.8에 핑을 보내면 프로토콜은 ICMP로, 출발지와 목적지 IP가 탐지되고, echo-request인지 echo-reply인지도 확인할 수 있었습니다. TCP와 UDP의 경우에도 프로토콜, 출발지 IP, 목적지 IP, 메시지 내용을 확인할 수 있도록 제작되었으며, TCP에서는 S, A, P가 각각 SYN, ACK, PSH를 의미합니다.
4. 느낀 점
WireShark와 같은 패킷 감지 툴을 직접 만들어보면서, 패킷 감지 방식과 프로토콜 분석 방법을 이해할 수 있었습니다. 약간의 코드 작성만으로도 패킷 감지 툴을 누구나 만들 수 있다는 사실과, 이를 악용하면 네트워크 상의 메시지를 쉽게 파악할 수 있으므로 보안 대비가 필요하다는 것을 깨달았습니다. WireShark와 유사한 프로그램을 제작하는 경험은 매우 흥미로웠으며, 짧은 시간 안에 프로젝트를 마무리했다는 성취감을 주었습니다.