--- title: nethawk — 터미널 네트워크 트래픽 분석 date: 2026-10-19 time: 12:00 model: admin category: programs author_type: human summary: libpcap으로 패킷을 캡처해 실시간 트래픽·프로토콜·공격을 터미널 TUI로 시각화하는 Go 도구입니다. tags: 프로그램, 모던 CLI 도구, nethawk --- **💬 "nethawk 명령어"** nethawk는 **터미널에서 실시간 네트워크 트래픽을 분석하는 도구**입니다. libpcap으로 패킷을 직접 캡처해 대역폭·프로토콜·상대 IP를 한 화면에 띄우고, 트래픽 패턴을 실시간으로 분류합니다. Go로 만들어진 단일 바이너리(약 5MB)이며 설정 파일·데이터베이스 없이 동작합니다. PPS(초당 패킷 수)가 임계값을 넘으면 DNS·NTP 증폭이나 SYN 플러드 같은 공격 유형을 색상으로 표시합니다. - **개념**: libpcap으로 패킷을 캡처해 실시간 트래픽을 터미널에 시각화합니다. - **주요 기능**: 대역폭·프로토콜 비율·상위 소스 IP·상위 목적지 포트·공격 탐지를 한 화면에 표시합니다. - **장점**: 설정 없이 단일 바이너리로 동작하고, `-json` 출력으로 다른 도구와 연결할 수 있습니다. - **활용**: 방화벽 앞단에서 어떤 트래픽이 들어오는지 즉시 확인할 때 사용합니다. ## 기본 사용법 nethawk는 실행하면 터미널 전체를 차지하는 실시간 대시보드를 띄웁니다. 아래 순서대로 시작하고 화면을 읽습니다. ### 1. 인터페이스 확인 → 실행 먼저 캡처할 네트워크 인터페이스 이름을 확인한 뒤 root로 실행합니다. ``` nethawk -list # 사용 가능한 인터페이스 목록 확인 (eth0, ens3 등) sudo nethawk # 자동 감지 인터페이스로 시작 sudo nethawk -i eth0 # 특정 인터페이스 지정 ``` ### 2. 화면 읽는 법 실행하면 몇 개 패널이 실시간으로 갱신됩니다. - **대역폭**: 현재 송수신 비트레이트가 그래프로 표시됩니다. 평소 대비 튀는 순간이 공격 신호입니다. - **프로토콜 비율**: TCP·UDP·ICMP 등이 파이/막대로 분포합니다. 평소에 없던 UDP 비중이 급증하면 증폭 공격 가능성이 있습니다. - **상위 소스 IP / 목적지 포트**: 지금 가장 많이 보내는 IP와 가장 많이 향하는 포트입니다. 특정 IP가 반복 등장하면 차단 후보입니다. - **공격 탐지 배너**: PPS가 임계값(-t)을 넘으면 DNS·NTP 증폭, SYN 플러드 등 유형이 색상과 함께 상단에 뜹니다. ### 3. 종료 대시보드에서 `Ctrl+C`로 종료합니다. 캡처는 메모리에서 처리되며 종료 시 남기지 않습니다. ## 설치 및 다운로드 nethawk는 공식 스크립트·소스 빌드·릴리스 바이너리로 설치합니다. 패킷 캡처를 위해 libpcap이 필요합니다. | 환경 | 명령 | | --- | --- | | 공식 원라이너 (Linux/macOS) | curl -sSfL https://raw.githubusercontent.com/Flowtriq/nethawk/main/install.sh | sudo sh | | Go 소스 빌드 | go install github.com/Flowtriq/nethawk/cmd/nethawk@latest | | 릴리스 바이너리 | github.com/Flowtriq/nethawk/releases | | Ubuntu/Debian (libpcap) | sudo apt install libpcap-dev | | RHEL/CentOS (libpcap) | sudo yum install libpcap-devel | 설치 확인은 `nethawk -list`로 인터페이스 목록을 보며, 실행은 `sudo nethawk`로 합니다(패킷 캡처에 root 권한 필요). ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -i eth0 | 특정 인터페이스를 지정합니다 | | -t 100000 | 공격 탐지 PPS 임계값을 지정합니다(기본값 사용 시 생략) | | -json | 구조화된 JSON으로 출력해 파이프에 연결합니다 | | -list | 사용 가능한 인터페이스 목록을 표시합니다 | ## 필수 명령어 조합 3가지 - `sudo nethawk` — 인터페이스 자동 감지로 전체 트래픽 모니터링 - `sudo nethawk -i eth0` — 특정 인터페이스만 지정해 모니터링 - `sudo nethawk -json | jq '.severity'` — JSON 출력에서 심각도만 추출 **💬 "실제 서버에서 nethawk를 사용하는 예시를 보여줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 설치 확인 libpcap과 nethawk 설치 여부를 확인합니다. ``` nethawk -list 2>/dev/null || sudo sh -c 'curl -sSfL https://raw.githubusercontent.com/Flowtriq/nethawk/main/install.sh | sh' ``` ### 2단계 · 실시간 트래픽 확인 들어오는 전체 트래픽을 실시간으로 확인합니다. ``` sudo nethawk -i eth0 ``` ### 3단계 · 이상 트래픽을 JSON으로 기록 심각도를 추출해 다른 도구로 넘깁니다. ``` sudo nethawk -i eth0 -json | jq -c '{pps, severity, top_port: .top_ports[0].port}' ``` ## 실무에서는 이렇게 씁니다 ### 1. 공격 유형 즉시 식별 **상황** — 트래픽이 갑자기 급증했는지 확인합니다. ``` sudo nethawk -i eth0 -t 50000 ``` **결과** — PPS가 임계값을 넘으면 색상과 함께 공격 유형(DNS 증폭, SYN 플러드 등)이 표시됩니다. **포인트** — 어떤 서비스 포트가 공격받는지 즉시 파악할 수 있습니다. ### 2. 상위 소스 IP 추적 **상황** — 가장 많은 트래픽을 보내는 IP를 확인합니다. ``` sudo nethawk -json | jq '.top_sources[:5]' ``` **결과** — 패킷 수 기준 상위 소스 IP 목록이 표시됩니다. **포인트** — 방화벽 차단 규칙 작성 시 근거 데이터로 활용합니다. ## 주의할 점 - 패킷 캡처에 root 권한이 필요합니다(tcpdump·Wireshark와 동일). - 공격 탐지는 실시간 확인용이며 자동 차단은 하지 않습니다(차단은 별도 방화벽·DDoS 솔루션 필요). - 트래픽이 매우 클 때 소스 IP 추적은 메모리 확보를 위해 최대치로 제한됩니다. - 신규 프로젝트(스타 수 적음)라서 운영 화이트리스트·신뢰성 검토를 거쳐 사용합니다. --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/modern/nethawk.html