프로젝트 소개
RustNet은 프로세스 수준 귀속과 심층 패킷 검사(DPI)를 통해 네트워크 연결에 대한 실시간 가시성을 제공하는 크로스 플랫폼 터미널 애플리케이션입니다. netstat, ss, tcpdump 같은 전통적인 도구와 달리 RustNet은 모든 연결을 소유 프로세스와 실행 파일에 연결하여 특정 애플리케이션이 생성하는 트래픽을 더 쉽게 식별할 수 있게 해줍니다.
이 도구는 Linux, macOS, Windows, FreeBSD 전반에서 TCP, UDP, QUIC 프로토콜을 지원합니다. 플랫폼별 캡처 백엔드를 사용합니다: Linux에서는 libbpf-rs를 사용한 eBPF, macOS에서는 PKTAP, Windows에서는 IP Helper 폴백을 사용한 ETW, FreeBSD에서는 네이티브 API를 사용합니다. 프로세스 귀속에는 PID, 실행 파일 이름, 사용자 및 그룹 이름, 일치 신뢰도, 상한이 설정된 부모 프로세스 체인이 포함됩니다.
심층 패킷 검사는 외부 디섹터 없이 HTTP, SNI를 포함한 HTTPS/TLS, DNS, SSH, FTP, QUIC, MQTT, BitTorrent, WireGuard, OpenVPN, STUN, NTP, mDNS, LLMNR, DHCP, SNMP, SSDP, NetBIOS 같은 일반적인 프로토콜을 식별합니다. 이 도구는 또한 수동 DNS 분석을 수행하여 응답 코드, 타임아웃, 지연 시간 백분위수, 상태 배지를 제공합니다.
보안은 샌드박싱을 통해 처리됩니다. Linux에서는 RustNet이 Landlock(커널 5.13 이상)을 사용할 수 있고, macOS에서는 Seatbelt, Windows에서는 토큰 권한 강등과 작업 개체 자식 프로세스 차단을 사용합니다. 애플리케이션은 초기화 후 권한을 강등하며, UID/GID 강등 실패 시 패킷 처리 워커가 실행되기 전에 시작이 중단됩니다.
다른 도구와의 통합을 위해 RustNet은 프로세스, PID, 방향, DPI/SNI, GeoIP 데이터가 담긴 패킷별 주석을 포함하는 주석 PCAPNG 파일을 내보낼 수 있어 Wireshark에서 즉시 사용할 수 있습니다. 오프라인 상관 분석을 위한 JSONL 사이드카가 포함된 클래식 PCAP 내보내기도 제공됩니다. 또한 kubernetes 기능이 활성화되면 선택적 Kubernetes 귀속이 연결을 파드, 네임스페이스, 컨테이너에 매핑합니다.
터미널 UI는 ratatui로 구축되었으며 연결, 트래픽 속도, 프로토콜 분석의 실시간 뷰를 제공합니다. 사용자는 포트, 출발지/목적지 주소, 프로세스 이름, 상태, SNI, 프로토콜로 필터링할 수 있으며 정규식 패턴도 지원됩니다. 정렬 및 그룹화 옵션을 통해 대역폭을 많이 사용하는 항목이나 특정 프로세스에 집중할 수 있습니다. 시각적 표시기는 연결 수명 주기 상태를 보여주며, 유휴 연결은 흐려지고 보관 전 카운트다운 타이머를 표시합니다.
설치는 Homebrew, APT, DNF, Zypper, pacman, Nix, Chocolatey, Scoop, 소스 빌드를 통해 가능합니다. 이 도구는 패킷 캡처를 위해 상승된 권한이 필요하지만, Linux capabilities를 설정하면 sudo 없이 실행할 수 있습니다. 문서는 자세한 설정, 사용법, 아키텍처, 보안, 기여 지침을 다룹니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.