Snitch – Daha Kullanıcı Dostu Bir `ss`/`netstat` Aracı
(github.com/karol-broda)- Snitch, mevcut
ssveyanetstataraç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
ssilenetstatiç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 snitchkomutuyla kurulabilir - Go:
go install github.com/karol-broda/snitch@latest - Nix/NixOS:
nix-env -iA nixpkgs.snitchveya flake girdisi olarak eklenebilir - Arch Linux (AUR):
yay -S snitch-binveyaparu -S snitch-bin - Shell Script:
curl -sSL ... | shkomutuyla kurulur, varsayılan yol~/.local/binveya/usr/local/binolur- 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ırsnitch -lyalnızca dinleyen soketleri gösterir,snitch lsise tablo biçiminde çıktı verip çıkarsnitch ls -t -eyalnızca bağlı TCP oturumlarını gösterir,snitch ls -pise 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/kgezinme,t/uTCP·UDP geçişi,Ksüreç sonlandırma,/arama,qçıkış vb.
- Seçenekler:
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)
- Çıktı biçimi: varsayılan tablo,
snitch json: Betiklerde kullanılabilecek JSON çıktısı üretirsnitch watch: Belirli aralıklarla JSON çerçeveleri akıtırsnitch 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-cacheseçenekleri desteklenir- Paralel DNS sorguları ve önbellekleme yapılır;
--no-cacheile önbellek devre dışı bırakılabilir
- Ayrıntılı filtreleme: süreç adı, port, durum gibi alanlar
key=valuebiçiminde belirtilebilir- Örnek:
snitch ls proto=tcp state=listen,snitch ls proc=nginx
- Örnek:
Çı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.tomlnumeric,dns_cache,theme(auto/dark/light/mono) ayarlanabilir
- Ortam değişkenleri:
SNITCH_THEME,SNITCH_RESOLVE,SNITCH_DNS_CACHE,SNITCH_NO_COLOR,SNITCH_CONFIGvb. desteklenir
Sistem Gereksinimleri
- Linux veya macOS ortamı gerekir
- Linux: veriler
/proc/net/*üzerinden okunur; tam süreç bilgisi için root veyaCAP_NET_ADMINizni gerekir - macOS: sistem API'leri kullanılır; tam süreç bilgisi için
sudogerekir
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