7 puan yazan GN⁺ 2025-12-25 | 1 yorum | WhatsApp'ta paylaş
  • Snitch, mevcut ss veya netstat araçlarına kıyasla insanların daha kolay okuyabileceği bir ağ bağlantısı inceleme aracı olup terminal arayüzü (TUI) ve stillendirilmiş tablo biçimini destekler
  • Bağlantı durumunu gerçek zamanlı etkileşimli ekran veya tek seferlik tablo çıktısı olarak gösterir; TCP/UDP, dinleme, bağlı gibi çeşitli filtreler sunar
  • JSON·CSV çıktısı, DNS/hizmet adı çözümleme, süreç izleme ve sonlandırma, otomatik güncelleme özelliklerini içerir
  • Homebrew, Go, Nix, Arch Linux, Shell Script, Binary gibi birden fazla kurulum yöntemini destekler; macOS için Gatekeeper uyarısını otomatik kaldırma özelliği de bulunur
  • Geliştiriciler ve sistem yöneticileri için ağ bağlantılarını sezgisel biçimde izlemeye ve betik otomasyonunda kullanmaya uygun faydalı bir araç

Genel Bakış

  • Snitch, ağ bağlantılarını görsel olarak keşfetmeyi sağlayan bir araçtır ve ss ile netstat için alternatif olarak tasarlanmıştır
  • Bağlantı durumunu TUI arayüzü veya stillendirilmiş tablo çıktısı üzerinden gösterir
  • Linux ve macOS üzerinde çalışır; root yetkisi veya CAP_NET_ADMIN izni gerekebilir

Kurulum Yöntemleri

  • Homebrew: brew install snitch komutuyla kurulabilir
  • Go: go install github.com/karol-broda/snitch@latest
  • Nix/NixOS: nix-env -iA nixpkgs.snitch veya flake girdisi olarak eklenebilir
  • Arch Linux (AUR): yay -S snitch-bin veya paru -S snitch-bin
  • Shell Script: curl -sSL ... | sh komutuyla kurulur, varsayılan yol ~/.local/bin veya /usr/local/bin olur
    • macOS'te kurulum betiği quarantine özniteliğini otomatik olarak kaldırır
  • Binary indirme: GitHub Releases üzerinden Linux(.tar.gz, .deb, .rpm, .apk) ve macOS(.tar.gz) sürümleri sunulur

Hızlı Başlangıç

  • snitch çalıştırıldığında etkileşimli TUI başlatılır
  • snitch -l yalnızca dinleyen soketleri gösterir, snitch ls ise tablo biçiminde çıktı verip çıkar
  • snitch ls -t -e yalnızca bağlı TCP oturumlarını gösterir, snitch ls -p ise ayrıştırılabilir sade çıktı üretir

Başlıca Komutlar

  • snitch / snitch top: Gerçek zamanlı güncellenen bağlantı listesini gösterir
    • Seçenekler: -l(dinleme), -t(TCP), -e(bağlı), -i(yenileme aralığı)
    • Tuş kısayolları: j/k gezinme, t/u TCP·UDP geçişi, K süreç sonlandırma, / arama, q çıkış vb.
  • snitch ls: Tek seferlik tablo çıktısı üretir; terminal yüksekliğini aşarsa pager otomatik kullanılır
    • Çıktı biçimi: varsayılan tablo, -o json, -o csv, -p(sade), --no-headers(başlıkları kaldır)
  • snitch json: Betiklerde kullanılabilecek JSON çıktısı üretir
  • snitch watch: Belirli aralıklarla JSON çerçeveleri akıtır
  • snitch upgrade: Sürümü kontrol eder ve otomatik günceller

Filtreleme ve Çözümleme Seçenekleri

  • Ortak bayraklar: -t(TCP), -u(UDP), -l(dinleme), -e(bağlı), -4(IPv4), -6(IPv6)
  • DNS ve hizmet adı çözümleme:
    • --resolve-addrs, --resolve-ports, --no-cache seçenekleri desteklenir
    • Paralel DNS sorguları ve önbellekleme yapılır; --no-cache ile önbellek devre dışı bırakılabilir
  • Ayrıntılı filtreleme: süreç adı, port, durum gibi alanlar key=value biçiminde belirtilebilir
    • Örnek: snitch ls proto=tcp state=listen, snitch ls proc=nginx

Çıktı Biçimleri

  • Varsayılan tablo çıktısı: süreç adı, PID, protokol, durum, yerel adres·port bilgilerini gösterir
  • Sade çıktı(-p): ayrıştırılabilir metin biçimi
  • JSON/CSV çıktısı: betik otomasyonu ve log analizi için kullanılabilir

Yapılandırma ve Ortam Değişkenleri

  • Yapılandırma dosyası: ~/.config/snitch/snitch.toml
    • numeric, dns_cache, theme(auto/dark/light/mono) ayarlanabilir
  • Ortam değişkenleri:
    • SNITCH_THEME, SNITCH_RESOLVE, SNITCH_DNS_CACHE, SNITCH_NO_COLOR, SNITCH_CONFIG vb. desteklenir

Sistem Gereksinimleri

  • Linux veya macOS ortamı gerekir
  • Linux: veriler /proc/net/* üzerinden okunur; tam süreç bilgisi için root veya CAP_NET_ADMIN izni gerekir
  • macOS: sistem API'leri kullanılır; tam süreç bilgisi için sudo gerekir

1 yorum

 
GN⁺ 2025-12-25
Hacker News yorumları
  • lsof ve ss için varsayılan ayarlar fazlasıyla elverişsiz
    ss, varsayılan çıktısında gönderme/alma kuyruk boyutları gibi nadiren gereken bilgileri gösterirken, asıl önemli olan soketin hangi uygulamaya ait olduğunu göstermiyor
    Ayrıca varsayılan olarak dinleyen soketleri gizliyor; oysa bu tür araçların başlıca kullanım amacı tam da bunu görmek
    İyi varsayılanlar seçmenin zor olduğunu biliyorum ama bu neredeyse her şeyi yanlış seçmiş bir örnek
    • Kesinlikle katılıyorum. Unix araçlarının uzun vadede makul varsayılanları korumayı zorlaştıran yapısal sınırlamaları var
      Zamanla kullanıcılar ve kullanım senaryoları değiştiği için varsayılanların da değişmesi gerekir, ama Unix araçlarında çıktı biçimi aynı zamanda API olduğu için bunu değiştirmek geriye dönük uyumluluk sorunları doğuruyor
      Örneğin ps aux komutunun uzun süreç adlarını yaklaşık 7 karakterde kesmesi de bu yüzden
      İlgili yazı: sh and the separation of data and representation
    • Artık UX konusunda çok daha derin bir anlayışa sahibiz. 70'lerde geliştiriciler ss ya da lsof yaparken bu tür kullanılabilirlik sorunlarının pek farkında değilmiş gibi görünüyor
    • Günümüzün fd, ag, rg gibi yeni nesil CLI araçları da benzer sorunlar yaşıyor
      Bence hız ya da özelliklerden çok sezgisel kullanılabilirlik daha önemli
    • netstat -utan ile ss -utan neredeyse aynı bilgiyi gösteriyor gibi görünüyor
  • Başlığı görünce ilk başta bunun Mac için ağ izleme aracı Little Snitch hakkında olduğunu sandım
    İsim çakıştığı için başka bir ad kullanmak daha iyi olabilir
    Little Snitch resmi sitesi
    • Linux için OpenSnitch adında bir klon da var
    • Bence isim gayet iyi. Sırf mevcutta Little Snitch var diye değiştirmek gerekmez
    • İsmi değiştirmeye gerek yok gibi. Little Snitch ile kullanım amacı tamamen farklı
      Snitch sadece ss/netstat verilerini terminalde daha okunaklı sunan bir araç
    • Vay, güzelmiş. Acaba bunun için Windows veya Linux alternatifleri var mı diye merak ettim
    • Ben de önce öyle düşündüm. İsim bana fazla utanç verici geliyor
      Aynı BT alanında zaten benzer adlı bir araç varken neden ille de bunu kullandıklarını anlamıyorum
  • Demodaki recording-as-code yaklaşımı ilgi çekici
    Demo bağlantısı
    • Teşekkürler :) Bunu diğer projelerde neredeyse hiç görmedim
  • Son zamanlarda TUI tabanlı araçların çoğalması çok hoşuma gidiyor. Bu proje de harika görünüyor, kesin deneyeceğim
    • Ama TUI, GUI kadar erişilebilir mi diye merak ediyorum
      GUI kütüphanelerinde görme engelliler gibi kullanıcılar için çeşitli özellikler var; TUI bu konuda daha zayıf kalabilir
  • ss'e alıştım ve rahat kullanıyorum. Ama gönderme/alma kuyruğu sayılarını görmek istemiyorum
    Ekran çok genişliyor, bu yüzden dizüstünde dikey bölünmüş görünümde neredeyse sığmıyor
    Snitch kurmayı düşünmüyorum. ss zaten tüm sunucularda varsayılan olarak kurulu geliyor ve TUI'ye ihtiyaç duymuyorum
    Snitch kişisel kullanım veya workstation'lar için iyi olabilir ama sunucuda varsayılan olan ss
    • Evet, sunucularda ss zaten öntanımlı kurulu, dolayısıyla onu kullanmak mantıklı
      Snitch daha çok workstation'lar ya da homelab hata ayıklaması için uygun
      Gönderme/alma kuyruğu şu anda gösterilmiyor ama ileride compact modu ya da bir geçiş seçeneği olarak eklemeyi planlıyorum
  • Güzel görünüyor ama ben uzun zamandır iptraf-ng kullanıyorum ve hâlâ biraz daha iyi olduğunu düşünüyorum
    Demo videosunda benim kaçırdığım bir özellik mi var?
    • Teşekkürler! Snitch, trafik izlemeden çok ss/netstat yerine geçen bir araç olmaya daha yakın
      Trafik izleme özellikleri planlarda var ama henüz uygulanmadı
  • İsmi hoşuma gitmedi ama TUI ile bağlantı durumunu izleme fikri gerçekten çok uygun
    • Teşekkürler. İsmin tam olarak hangi kısmını beğenmediğinizi merak ettim
  • Go ile kurmaya çalıştım ama şu hatayı aldım
    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
    
    • Modül bildiriminde URL yerine sadece isim kullanıldığı için oluşmuş bir sorundu. Birkaç saat önce düzeltildi
      Go'nun module barename kullanımına izin vermesi ilginç. Kişisel projelerde bile sonunda URL kullanılıyor; bence iyi bir kalıp değil
    • Düzeltildi ama henüz sürüme yansımadı
      Commit bağlantısı
    • Şimdi düzelttim ve sürümü de yayınladım. @latest ile derlerseniz çalışacaktır
  • Bu tür araçların yetkin saldırganlar için ne kadar kullanışlı olabileceğini hep merak etmişimdir
    Örneğin kötü amaçlı yazılım belli bir süre bekleyecek ya da yalnızca kullanıcı ağ etkinliği içindeyken C&C ile iletişim kuracak şekilde tasarlanırsa tespit edilmesi zor olur gibi geliyor
    • En azından bu tür araçların /proc'u doğrudan ayrıştırmaması daha iyi
      Çünkü LD_PRELOAD rootkit'leri etkinliklerini gizlemek için libc fonksiyonlarının çıktısını manipüle edebilir
      ss bu açıdan biraz daha güvenilir; Snitch ise Go ile yazıldığı için libc kullanmıyor, dolayısıyla LD_PRELOAD rootkit'lerine karşı daha dayanıklı olma ihtimali var
      Ama bu tür araçlar kötü amaçlı trafik tespiti için değil, yerel hata ayıklama için
      Başvuru materyalleri: decloaker, arxiv makalesi, ACM makalesi, proc yapısı açıklaması
    • Evet. Snitch güvenlik tespiti için değil, yerel hata ayıklama/inceleme için tasarlandı
      Yetkin saldırganlar zaten normal trafiğe karışarak çalışabilir
    • Bu tür araçlar düşmanca ortamlar için değil
      Saldırganlara karşı kullanılan gerçek ağ araçları da kusursuz değil (arama terimi: bro vantage point problem)
  • Her soket/süreç için anlık ve kümülatif aktarım hızı gösteren bir özellik olsa güzel olurdu
    Şu anda jnettop kullanıyorum ama arayüzünü sevmiyorum
    • Bu özellik gelecek sürümlerde eklenmesi planlananlar arasında