- 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
Hacker News yorumları
lsofvessiçin varsayılan ayarlar fazlasıyla elverişsizss, 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östermiyorAyrı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
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 auxkomutunun uzun süreç adlarını yaklaşık 7 karakterde kesmesi de bu yüzdenİlgili yazı: sh and the separation of data and representation
ssya dalsofyaparken bu tür kullanılabilirlik sorunlarının pek farkında değilmiş gibi görünüyorfd,ag,rggibi yeni nesil CLI araçları da benzer sorunlar yaşıyorBence hız ya da özelliklerden çok sezgisel kullanılabilirlik daha önemli
netstat -utaniless -utanneredeyse aynı bilgiyi gösteriyor gibi görünüyorİsim çakıştığı için başka bir ad kullanmak daha iyi olabilir
Little Snitch resmi sitesi
Snitch sadece
ss/netstatverilerini terminalde daha okunaklı sunan bir araçAynı BT alanında zaten benzer adlı bir araç varken neden ille de bunu kullandıklarını anlamıyorum
Demo bağlantısı
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 istemiyorumEkran ç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.
sszaten tüm sunucularda varsayılan olarak kurulu geliyor ve TUI'ye ihtiyaç duymuyorumSnitch kişisel kullanım veya workstation'lar için iyi olabilir ama sunucuda varsayılan olan
sssszaten ö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
Demo videosunda benim kaçırdığım bir özellik mi var?
ss/netstatyerine geçen bir araç olmaya daha yakınTrafik izleme özellikleri planlarda var ama henüz uygulanmadı
Go'nun
module barenamekullanımına izin vermesi ilginç. Kişisel projelerde bile sonunda URL kullanılıyor; bence iyi bir kalıp değilCommit bağlantısı
@latestile derlerseniz çalışacaktırÖ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
/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
ssbu 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 varAma 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ı
Yetkin saldırganlar zaten normal trafiğe karışarak çalışabilir
Saldırganlara karşı kullanılan gerçek ağ araçları da kusursuz değil (arama terimi: bro vantage point problem)
Şu anda
jnettopkullanıyorum ama arayüzünü sevmiyorum