Linux için Little Snitch
(obdev.at)- Uygulamaların ağ bağlantılarını görselleştirip kontrol etmeyi sağlayan bir araçtır; hangi programın hangi sunucuyla iletişim kurduğunu görmenizi sağlar
- Connections View içinde gerçek zamanlı ve geçmiş trafik uygulama bazında gösterilir; tek tıklamayla bağlantı engelleme ve veri kullanımı takibi desteklenir
- Blocklists ve Rules özellikleriyle istenmeyen trafik, kategori bazında veya ayrıntılı koşullara göre ince ayarlı biçimde kontrol edilebilir
- İçeride eBPF kullanarak çekirdek düzeyinde bağlantıları izler ve web arayüzü üzerinden PWA biçiminde bir arayüz sunar
- Bir güvenlik aracı değil, gizlilik odaklı bir araçtır; sıradan yazılımların dış iletişimini engellemek için uygundur ancak gelişmiş saldırılara karşı savunmada sınırlıdır
Genel bakış
- Little Snitch for Linux, uygulamaların ağ bağlantılarını gerçek zamanlı olarak görselleştirip kontrol etmeyi sağlayan bir araçtır
- Hangi uygulamanın hangi sunucuyla iletişim kurduğunu görebilirsiniz
- İstenmeyen bağlantıları engelleme, trafik kaydı tutma ve veri kullanımı takibi özellikleri sunar
- Linux çekirdeği 6.12 veya üstü ve BTF çekirdek desteği gerekir
- Web arayüzüne
http://localhost:3031/üzerinden erişilebilir ve PWA (Progressive Web App) olarak kurulabilir
Bağlantı izleme
- Connections View içinde mevcut ve geçmiş ağ etkinliği uygulama bazında gösterilir
- Kurallar ve engelleme listeleri tarafından engellenen öğeler, veri kullanımı ve trafik geçmişi gösterilir
- Son etkinlik, veri miktarı ve ada göre sıralama ve filtreleme yapılabilir
- Tek tıklamayla bağlantı engellenebilir
- Alttaki trafik diyagramı, zaman içindeki veri miktarını görselleştirir
- Belirli bir aralığı sürükleyip yakınlaştırdığınızda yalnızca o dönemdeki etkinlik filtrelenerek gösterilir
Engelleme listesi yönetimi
- Blocklists özelliğiyle istenmeyen trafik kategorileri toplu olarak engellenebilir
- Uzak kaynaklardan otomatik indirilir ve güncel tutulur
- Desteklenen biçimler: alan adı başına bir satır, ana makine adı başına bir satır,
/etc/hostsbiçimi (IP + ana makine adı), CIDR ağ aralıkları -
Joker karakter, düzenli ifade, glob ve URL tabanlı biçimler desteklenmez
- Verimlilik için alan adı tabanlı listelerin kullanılması önerilir
- Örnek listeler: Hagezi, Peter Lowe, Steven Black, oisd.nl
- macOS için
.lsrulesbiçimi, Linux sürümüyle uyumlu değildir
Özel kurallar
- Rules özelliği, blok listelerden daha ayrıntılı kontrol sunar
- Belirli süreçler, portlar ve protokoller düzeyinde yapılandırılabilir
- Kural listesi sıralanabilir ve filtrelenebilir
- Kurallarla ayrıntılı ağ kontrol politikaları oluşturulabilir
Erişim güvenliği
- Varsayılan olarak web arayüzüne, yerelde çalışan tüm süreçler erişebilir
- Kötü amaçlı bir uygulama kuralları değiştirebilir, engelleme listelerini düzenleyebilir veya filtrelemeyi devre dışı bırakabilir
- Bunu önlemek için kimlik doğrulaması zorunlu kılınabilir
- Ayrıntılı ayarlar gelişmiş yapılandırma bölümünde yapılır
İç yapı
- Linux ağ yığınına eBPF ile kanca atılır
- eBPF programı giden bağlantıları izler ve veriyi daemon'a iletir
- Daemon; istatistik takibi, kural işleme ve web arayüzünü sunma görevlerini üstlenir
- eBPF programı ile web arayüzünün kaynak kodu GitHub'da açıktır
Gelişmiş yapılandırma
- Varsayılan arayüz yalnızca temel ayarları gösterir; gelişmiş ayarlar metin dosyaları ile yapılandırılır
- Değişiklikten sonra
littlesnitchdaemon'unun yeniden başlatılması gerekir
- Değişiklikten sonra
- Varsayılan yapılandırma yolu:
/var/lib/littlesnitch/config/- Doğrudan düzenlemeyin; değiştireceğiniz dosyayı
/var/lib/littlesnitch/overrides/config/içine kopyalayıp orada düzenleyin - override dizinindeki ayarlar her zaman önceliklidir
- Doğrudan düzenlemeyin; değiştireceğiniz dosyayı
- Başlıca yapılandırma dosyaları
web_ui.toml: ağ adresi, port, TLS ve kimlik doğrulama ayarları- Birden fazla kullanıcının erişebileceği durumlarda kimlik doğrulamanın etkinleştirilmesi gerekir
- Loopback dışına açılıyorsa ek TLS gerekir
main.toml: hiçbir kuralla eşleşmeyen bağlantılar için varsayılan davranışı ayarlar- Varsayılan değer izin vermektir; gerekirse reddet olarak değiştirilebilir
- Hatalı ayarlama sistem erişimini kaybetme riski doğurur
executables.toml: çalıştırılabilir dosyaları gruplama kuralları- Sürüm numaralarını kaldırarak aynı uygulamanın birden fazla sürümünü tek bir öğe olarak gösterir
- Kabuk ve uygulama yönetim süreçlerinin ebeveyn ilişkilerini tanımlar
- Topluluk geri bildirimiyle sürekli iyileştirilmektedir
- eBPF programı ile web arayüzü, kullanıcının derlediği sürümlerle değiştirilebilir
- override dizinindeki sürüm öncelikli uygulanır
Sınırlamalar
- Bir güvenlik aracı değil, gizlilik aracıdır
- macOS sürümünden daha basittir ve eBPF kısıtları nedeniyle işlevsel sınırlara sahiptir
- eBPF'nin depolama alanı ve program karmaşıklığı sınırlamaları vardır
- Trafik çok olduğunda önbellek tabloları taşabilir; bu da paketler, süreçler ve DNS adları arasındaki eşlemenin eksik kalmasına yol açabilir
- IP adresinden özgün olarak sorgulanan ana makine adını geri çıkarmak için sezgisel yöntemler (heuristics) kullanır
- macOS sürümü, daha doğru eşleme için derin paket inceleme (DPI) kullanır
- Sıradan yazılımların dış iletişimini izlemek ve engellemek için uygundur ancak gelişmiş saldırganlara karşı sistem savunması için uygun değildir
Lisans
- 3 bileşenden oluşur
- eBPF çekirdek programı ve web arayüzü GNU GPL v2 ile yayımlanır ve GitHub'da bulunabilir
- Daemon (
littlesnitch --daemon) ise özel mülkiyetli (proprietary) olmakla birlikte ücretsiz kullanılabilir ve yeniden dağıtılabilir
1 yorum
Hacker News yorumları
Little Snitch veya Open Snitch kullanmıyorum ama izin verilen programların kötüye kullanılan isteklerini de engelleyip engelleyemediğini merak ettim
Örneğin
suspicious.py, verileri yüklemek için Firefox'u çağırırsa güvenlik duvarının bunu engelleyip engelleyemeyeceğini bilmek istiyorumBetik
#!/bin/interpreterile çalıştırılırsa kurallar betik yoluna uygulanıyor, amainterpreter scriptbiçiminde çalıştırılırsa farklı davranıyorOpen Snitch'te eşleştirme, üst süreç ağacında python sürecinin bulunup bulunmadığı gibi ölçütlere göre ayrıntılı yapılabiliyor
Eski Windows güvenlik duvarları Outpost ve Zone Alarm, bu tür davranışları tespit eden Leak Control özelliği sunuyordu
Çoğu dağıtım bu özelliği içeriyor, ama sıradan kullanıcılar kural öğrenme veya yapılandırma yapmıyor
Fedora 43'te denedim; tüm CPU çekirdeklerini tüketti ve 50K satırlık log bırakıp başarısız oldu
BPF_PROG_LOAD syscall returned Argument list too longhatası oluşuyorARM64 VM'de yükleniyor ama süreçleri tanımlayamıyor
eBPF uyumluluk sorunlarını araştırdıklarını, kaynakların sınırlı olması nedeniyle bunun zaman alacağını söylüyor
Fedora'nın varsayılan dosya sistemi Btrfs olduğu için süreç tanımlama yapılamıyor; bunun 1.0.1 sürümünde düzeltilmesi planlanıyor
Bir Linux kullanıcısı olarak kodun açıklığına önem veriyorum
OpenSnitch + OpenSnitch-UI ikilisinden fazlasıyla memnunum
Linux'ta ücretli araç modelinin ne kadar uygulanabilir olduğunu merak ettim
Çoğu şey ücretsiz, bağış temelli ya da open-core modelinde
Little Snitch'in Linux sürümünü ücretsiz yayınlamasının sebebi gerçekten “Linux'ta para yok” düşüncesi mi, yoksa başka bir neden mi diye merak ediyorum
Ben de ağ trafiğini yöneten kapalı kaynak bir programdan rahatsız olurum
Bunun yerine FOSS projelerine her yıl binlerce dolar bağışlıyorum
Ama bu tür kullanıcılar azınlıkta, bu yüzden tamamen açık kaynakla gelir elde etmek zor
Özellikle güvenlik duvarı gibi yüksek ayrıcalıklı kodlarda, açık kaynak değilse güvenmek zor
Sonucun nasıl olacağını merak ettiklerini de ekledi
İlgili blog yazısı: Little Snitch for Linux tanıtımı
Eskiden Windows için ZoneAlarm vardı
Linux'ta neden böyle bir şey olmadığını hep merak etmişimdir
Direwall koduna bakınca eski C tarzının aynen durduğunu gördüm
Soket kütüphanesini yamalayarak çalışıyordu; bugün hâlâ derlenip derlenmeyeceğini merak ediyorum
Başta çokça soru sorup, öğrendikten sonra sessizleşen yapıyı net biçimde anlatıyordu
Bu yüzden kullanıcı güveni kazandı; ben de tam bu nedenle tavsiye ederdim
Ticari yazılımlar Linux'a gelmeye başlayınca ağ denetimi isteği doğdu
Windows'ta programsızca her şeyin çalıştırılmasını sınırlayabildiği için iyiydi
Little Snitch'i uzun zamandır kullanıyorum ve tüm ağ isteklerini elle onaylıyorum
Ama çekirdek uzantısı düzeyinde yetkiye sahip bir programa ne kadar güvenilebileceğini düşünüyorum
Şirket veya geliştiriciler hakkında neredeyse hiç bilgi olmadığı için merak ediyorum
eBPF bileşeni GPLv2 açık kaynak olarak yayımlanmış durumda; GitHub kodunda görülebilir
Ancak daemon'un root yetkisiyle çalışması gerektiğinden, SELinux benzeri erişim kontrolleriyle sınırlandırılması gerekiyor
Bunun ilk sürüm olduğunu, hata raporlarıyla ilgilendiklerini ve Linux ortamlarının çeşitliliğine şaşırdıklarını söyledi
macOS'ta çekirdek uzantısı yerine Network Extension API kullanılıyor
Amaç ağ gözlemi ise Sniffnet gibi GUI tabanlı sniffer'lar da var
Linux portunun çıkışını kutlarım
Tamamen açık kaynak ve terminal tabanlı bir alternatif olarak bakımını yaptığım RustNet projesini tanıtıyorum
TUI tabanlı gerçek zamanlı paket izleme aracı; güvenlik duvarı değil ama Landlock ile kendi sandbox'ını uyguluyor
OpenSnitch ile karşılaştırması merak ediliyor
OpenSnitch GitHub
Bunun sebebi Linux sürümünün teknik sınırlamaları
eBPF tabanlı olduğu için önbellek taşması olduğunda süreç eşlemesi yapılamıyor; macOS'taki gibi derin paket incelemesi de kullanılamıyor
Ayrıntılar resmî açıklamada yer alıyor
İlgili yazı
OpenSnitch'i memnuniyetle kullanıyorum
Ama bir eklenti sistemi olsa, kullanıcı davranışı ile ağ bağlantılarını birlikte analiz etse ve yalnızca beklenmedik bağlantıları bildirim olarak gösterse iyi olurdu
Açılır pencereler yerine CLI tabanlı bir otomatik izin wrapper'ı da kullanışlı olabilir diye düşünüyorum