nethawk — 터미널 네트워크 트래픽 분석
Linux / 모던 CLI 도구 / nethawk.html
💬 "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 추적은 메모리 확보를 위해 최대치로 제한됩니다.
- 신규 프로젝트(스타 수 적음)라서 운영 화이트리스트·신뢰성 검토를 거쳐 사용합니다.