7 poin oleh GN⁺ 2025-12-25 | 1 komentar | Bagikan ke WhatsApp
  • Snitch adalah alat pemeriksa koneksi jaringan yang lebih mudah dibaca manusia dibanding ss atau netstat, dengan dukungan UI terminal (TUI) dan format tabel bergaya
  • Menampilkan status koneksi dalam layar interaktif real-time atau format tabel sekali tampil, serta menyediakan berbagai filter seperti TCP/UDP, listening, connected
  • Mencakup fitur output JSON·CSV, resolusi DNS/nama layanan, pemantauan dan penghentian proses, serta pembaruan otomatis
  • Mendukung berbagai metode instalasi seperti Homebrew, Go, Nix, Arch Linux, Shell Script, Binary, termasuk fitur penghapusan otomatis peringatan Gatekeeper di macOS
  • Alat yang berguna bagi developer dan administrator sistem untuk memantau koneksi jaringan secara intuitif dan memanfaatkannya dalam otomasi skrip

Ikhtisar

  • Snitch adalah alat untuk menjelajahi koneksi jaringan secara visual, dirancang sebagai pengganti ss atau netstat
  • Menampilkan status koneksi melalui antarmuka TUI atau output tabel bergaya
  • Berjalan di Linux dan macOS, dan mungkin memerlukan hak root atau izin CAP_NET_ADMIN

Cara instalasi

  • Homebrew: dapat diinstal dengan perintah brew install snitch
  • Go: go install github.com/karol-broda/snitch@latest
  • Nix/NixOS: nix-env -iA nixpkgs.snitch atau bisa ditambahkan sebagai input flake
  • Arch Linux (AUR) : yay -S snitch-bin atau paru -S snitch-bin
  • Shell Script: instalasi dengan perintah curl -sSL ... | sh, dengan jalur default ~/.local/bin atau /usr/local/bin
    • Di macOS, skrip instalasi secara otomatis menghapus atribut quarantine
  • Unduh Binary: tersedia di GitHub Releases untuk Linux(.tar.gz, .deb, .rpm, .apk) dan macOS(.tar.gz)

Mulai cepat

  • Menjalankan snitch akan membuka TUI interaktif
  • snitch -l menampilkan hanya socket listening, snitch ls menampilkan format tabel lalu keluar
  • snitch ls -t -e menampilkan hanya sesi TCP yang connected, snitch ls -p menampilkan output sederhana yang mudah diparse
Iklan

Perintah utama

  • snitch / snitch top : menampilkan daftar koneksi yang diperbarui secara real-time
    • Opsi: -l(listening), -t(TCP), -e(connected), -i(interval pembaruan)
    • Key binding: pindah j/k, beralih TCP·UDP t/u, hentikan proses K, cari /, keluar q, dll.
  • snitch ls : menampilkan tabel sekali saja, dan otomatis memakai pager jika melebihi tinggi terminal
    • Format output: tabel default, -o json, -o csv, -p(sederhana), --no-headers(tanpa header)
  • snitch json : output format JSON untuk digunakan dalam skrip
  • snitch watch : streaming frame JSON pada interval tertentu
  • snitch upgrade : cek versi dan pembaruan otomatis

Opsi filter dan resolusi

  • Flag umum: -t(TCP), -u(UDP), -l(listening), -e(connected), -4(IPv4), -6(IPv6)
  • Resolusi DNS dan nama layanan:
    • Mendukung opsi --resolve-addrs, --resolve-ports, --no-cache
    • Melakukan lookup DNS paralel dan caching, dan cache bisa dinonaktifkan dengan --no-cache
  • Pemfilteran detail: tentukan nama proses, port, status, dll. dalam format key=value
    • Contoh: snitch ls proto=tcp state=listen, snitch ls proc=nginx
Iklan

Format output

  • Output tabel default: menampilkan nama proses, PID, protokol, status, alamat lokal·port
  • Output sederhana (-p) : bentuk teks yang mudah diparse
  • Output JSON/CSV: dapat digunakan untuk otomasi skrip dan analisis log

Konfigurasi dan variabel lingkungan

  • File konfigurasi: ~/.config/snitch/snitch.toml
    • Mendukung pengaturan numeric, dns_cache, theme(auto/dark/light/mono)
  • Variabel lingkungan:
    • Mendukung SNITCH_THEME, SNITCH_RESOLVE, SNITCH_DNS_CACHE, SNITCH_NO_COLOR, SNITCH_CONFIG, dll.

Kebutuhan sistem

  • Memerlukan lingkungan Linux atau macOS
  • Linux: membaca data dari /proc/net/*, dan untuk informasi proses lengkap memerlukan root atau izin CAP_NET_ADMIN
  • macOS: menggunakan API sistem, dan memerlukan sudo untuk informasi proses lengkap

1 komentar

 
GN⁺ 2025-12-25
Komentar Hacker News
  • Pengaturan bawaan lsof dan ss sangat tidak nyaman
    Di output bawaan, ss menampilkan hal-hal yang jarang dibutuhkan seperti ukuran antrean kirim/terima, tetapi justru tidak menunjukkan socket itu milik aplikasi yang mana
    Selain itu, secara bawaan ia mengabaikan listening socket, padahal itulah salah satu kegunaan utama alat seperti ini
    Saya paham memilih default yang bagus itu sulit, tapi ini nyaris contoh ketika hampir semua pilihan default-nya salah
    • Sangat setuju. Alat-alat Unix punya keterbatasan struktural yang membuat default yang masuk akal sulit dipertahankan dalam jangka panjang
      Seiring waktu, pengguna dan use case berubah sehingga default juga seharusnya ikut berubah, tetapi pada alat Unix format output sekaligus berfungsi sebagai API, jadi mengubahnya menimbulkan masalah kompatibilitas mundur
      Contohnya, alasan ps aux memotong nama proses panjang menjadi sekitar 7 karakter juga karena hal itu
      Tulisan terkait: sh and the separation of data and representation
    • Sekarang pemahaman tentang UX jauh lebih dalam. Saat pengembang era 70-an membuat ss atau lsof, sepertinya mereka belum begitu memahami masalah kegunaan seperti ini
    • Alat CLI generasi baru seperti fd, ag, dan rg belakangan juga mengalami masalah serupa
      Menurut saya, kemudahan penggunaan yang intuitif jauh lebih penting daripada kecepatan atau fitur
    • netstat -utan dan ss -utan tampaknya menampilkan informasi yang hampir sama
  • Saat melihat judulnya, saya awalnya mengira ini tentang alat pemantauan jaringan untuk Mac, Little Snitch
    Karena namanya bertabrakan, mungkin lebih baik memakai nama lain
    Situs resmi Little Snitch
    • Ada juga klon untuk Linux bernama OpenSnitch
    • Menurut saya namanya tidak masalah. Hanya karena sudah ada Little Snitch, bukan berarti harus diganti
    • Rasanya tidak sampai perlu mengganti nama. Kegunaannya benar-benar berbeda dari Little Snitch
      Snitch hanyalah alat untuk menampilkan data ss/netstat dengan lebih nyaman di terminal
    • Wah, keren. Saya jadi penasaran apakah ada alternatif untuk Windows atau Linux
    • Saya juga sempat berpikir begitu awalnya. Namanya terasa agak memalukan
      Saya tidak paham kenapa harus memakai lagi nama yang mirip ketika sudah ada alat bernama serupa di ranah IT yang sama
  • Pendekatan recording-as-code pada demonya menarik
    Tautan demo
    • Terima kasih :) Saya hampir tidak pernah melihat pendekatan seperti ini di proyek lain
  • Saya sangat senang alat berbasis TUI makin banyak akhir-akhir ini. Proyek ini juga terlihat keren, jadi saya pasti akan mencobanya
    • Tapi saya penasaran apakah TUI punya aksesibilitas yang sebaik GUI
      Library GUI punya berbagai fitur untuk pengguna seperti penyandang disabilitas netra, sedangkan TUI mungkin kurang dalam hal itu
  • Saya sudah terbiasa dengan ss dan memakainya dengan baik. Hanya saja saya tidak ingin melihat angka antrean kirim/terima
    Lebar layar jadi terlalu besar, sehingga saat dibagi vertikal di laptop hampir tidak muat
    Saya tidak berencana memasang Snitch. ss sudah terpasang bawaan di semua server, dan saya tidak butuh TUI
    Snitch mungkin cocok untuk pemakaian pribadi atau workstation, tetapi di server ss tetap jadi bawaan
    • Betul. Di server, ss memang sudah terpasang secara default jadi tinggal dipakai saja
      Snitch lebih cocok untuk workstation atau debugging homelab
      Antrean kirim/terima memang belum ditampilkan, tetapi nanti rencananya akan ditambahkan lewat mode compact atau toggle
  • Kelihatannya bagus, tetapi saya sudah lama memakai iptraf-ng dan masih merasa itu sedikit lebih baik
    Mungkin ada fitur yang saya lewatkan di video demo?
    • Terima kasih! Snitch lebih dekat ke pengganti ss/netstat daripada alat pemantauan trafik
      Fitur pemantauan trafik memang direncanakan, tetapi belum diimplementasikan
  • Saya tidak suka namanya, tetapi memantau status koneksi lewat TUI memang sangat cocok
    • Terima kasih. Saya penasaran, bagian mana dari namanya yang tidak Anda sukai
  • Saya mencoba memasangnya dengan Go, tetapi muncul error berikut
    go install github.com/karol-broda/snitch@latest
    go: github.com/karol-broda/snitch@latest: version constraints conflict:
    module declares its path as: snitch
    but was required as: github.com/karol-broda/snitch
    
    • Masalah itu terjadi karena deklarasi modulnya hanya memakai nama tanpa URL. Itu sudah diperbaiki beberapa jam lalu
      Menarik juga bahwa Go mengizinkan module barename. Pada proyek pribadi pun akhirnya orang tetap memakai URL, jadi menurut saya ini bukan pola yang baik
    • Perbaikannya sudah ada, tetapi belum masuk ke rilis
      Tautan commit
    • Sekarang saya sudah memperbaikinya dan juga menyelesaikan rilisnya. Jika dibangun dengan @latest, seharusnya sudah berfungsi dengan baik
  • Saya selalu penasaran seberapa bergunanya alat seperti ini bagi penyerang yang mahir
    Misalnya, jika malware dirancang untuk menunggu selama periode tertentu atau hanya berkomunikasi dengan C&C saat pengguna sedang melakukan aktivitas jaringan, rasanya akan sulit dideteksi
    • Setidaknya, alat seperti ini sebaiknya tidak mem-parsing /proc secara langsung
      Rootkit LD_PRELOAD bisa memanipulasi output fungsi libc untuk menyembunyikan aktivitasnya
      ss sedikit lebih bisa dipercaya, dan Snitch ditulis dalam Go sehingga tidak memakai libc, jadi ada kemungkinan lebih tahan terhadap rootkit LD_PRELOAD
      Namun, alat seperti ini bukan untuk mendeteksi trafik berbahaya, melainkan untuk debugging lokal
      Referensi: decloaker, makalah arXiv, makalah ACM, penjelasan struktur proc
    • Betul. Snitch bukan untuk deteksi keamanan, melainkan untuk debugging/pemeriksaan lokal
      Penyerang yang mahir bagaimanapun bisa beroperasi sambil menyamar sebagai trafik normal
    • Alat seperti ini memang bukan untuk lingkungan yang adversarial
      Bahkan alat jaringan untuk menghadapi penyerang sungguhan pun tidak sempurna (kata kunci pencarian: bro vantage point problem)
  • Akan bagus jika ada fitur yang menampilkan kecepatan transfer saat ini dan kumulatif untuk tiap socket/proses
    Saat ini saya memakai jnettop, tetapi saya tidak suka UI-nya
    • Fitur itu direncanakan akan ditambahkan pada versi mendatang