3 puan yazan GN⁺ 2024-08-11 | 1 yorum | WhatsApp'ta paylaş
  • OpenSnitch, GNU/Linux için bir uygulama güvenlik duvarıdır; uygulamaların dış bağlantılarını etkileşimli olarak filtrelemeye odaklanır
  • Sistem genelinde reklam, izleyici ve kötü amaçlı yazılım alan adlarını engelleyebilir; GUI üzerinden nftables tabanlı sistem güvenlik duvarı da yapılandırılabilir
  • GUI, giriş politikası ayarları ve inbound servislerine izin verme gibi sistem kuralları yapılandırmasını destekler; birden çok düğüm merkezi olarak yönetilebilir
  • Kurulum, deb/rpm paketlerini indirip apt veya dnf ile yükledikten sonra opensnitch-ui çalıştırılarak ya da uygulama menüsünden GUI açılarak yapılır
  • Beklenmeyen bağlantıları yakalama örneklerinin paylaşıldığı Show and tell tartışma alanı ve SIEM entegrasyonu sunarak operasyon ortamlarında bağlantı izleme için kullanılabilir

OpenSnitch ne yapar

Güvenlik duvarı ve düğüm yönetimi özellikleri

İndirme ve kurulum

  • deb/rpm paketleri GitHub Releases üzerinden indirilebilir
  • deb paketi kurulumu:
    • sudo apt install ./opensnitch*.deb ./python3-opensnitch-ui*.deb
  • rpm paketi kurulumu:
    • sudo dnf install opensnitch*.rpm
  • Kurulumdan sonra opensnitch-ui çalıştırılır veya uygulama menüsünden GUI başlatılır
  • Ayrıntılı kurulum bilgileri için belgelere bakın

Kullanım örnekleri ve katılım

Proje bilgileri

1 yorum

 
GN⁺ 2024-08-11
Hacker News yorumları
  • OpenSnitch'i etkileşimli güvenlik duvarı olarak çok kullanmayı denedim, ancak OpenSnitch'in hatasından çok, çözülüp çözülemeyeceğini bile bilmediğim bir sorun var.
    Örneğin terminalde curl çalıştırdığınızda her seferinde izin verip vermemeye karar vermeniz ya da kalıcı olarak izin listesine eklemeniz gerekiyor.
    Ama curl veya wget gibi genel amaçlı araçlara izin verirseniz, ele geçirilmiş bir makinedeki kötü amaçlı yazılım da bu araçları kullanarak güvenlik duvarı uyarısı olmadan internete çıkabilir; yani kapı ardına kadar açılır.

    • Alt alan adı joker karakterleri veya alt ağlar kullanırsanız oldukça hızlı biçimde istikrarlı bir kural seti birikir; sonrasında yalnızca yeni uç nokta isteklerini ara sıra gözden geçirmek gerekir.
      Yeni bir erişim olduğunda izin sorulmasının verdiği güven hissi, başlangıçtaki zahmete değer; alışınca yönetimi de epey kolaylaşır.
      Süresi dolan kuralları da sık kullanıyorum. Örneğin bir kurulum programına güvenip kısa süreliğine serbest bırakmak istersem, çalıştırılabilir dosya için yakın gelecekte süresi dolacak bir kural açıyorum. Seçenekler kalıcı, yeniden başlatmaya kadar, sonraki 30 saniye, sonraki 5 dakika vb.; çok uç noktalı işler de çok daha basitleşiyor ve kalıcı bir açık bırakmıyor.
    • dev kullanıcısı için tüm curl/wget trafiğine izin verip, normal kullanıcısında algılamaya devam etmek de mümkün görünüyor.
      Geliştirme işleri su -c curl … dev ile çalıştırılabilir.
      Kötü amaçlı bir program normal kullanıcı alanında çalışıyorsa, uygulama güvenlik duvarı curl ve wget kullanımını uygun şekilde yakalayabilir.
      Her seferinde parola girmek can sıkıcı olduğundan PAM'i YubiKey veya biyometrik doğrulamayla ayarlamak da mümkün; ayrıca bu kullanıcı oturum açamaz olmalı ve parolası da olmamalı.
    • Bu biraz tuhaf geliyor. Gerçekten endişeleniyorsanız curl veya wgetin adını değiştirebilirsiniz.
      Mobilde uygulama seviyesinde güvenlik duvarı kullanıyorum, ama program adını izin listesine almıyorum; belirli bir programın belirli alan adlarına/IP adreslerine erişmesine izin veriyorum.
      Deneyimlerime göre bir programın veya kötü amaçlı yazılımın dış dünyayla iletişimini engellemenin en kolay yolu DNS erişimini engellemek. On yıllardır bunu yapıyorum ve hâlâ kusursuz çalışıyor. Dış iletişim kuran programların/kötü amaçlı yazılımların “%99”u sabit kodlanmış IP'lere değil DNS'e dayanıyor.
      DNS'e ihtiyaç duymayan nadir programları/kötü amaçlı yazılımları tespit etmek de kolay; DNS tarafında yalnızca belirli alan adlarına izin veriyorum. Günümüzde gerekli IP adreslerini içeren yerel zone dosyası da kullanmıyorum; ileri proxy, alan adı→IP eşlemesini hallediyor. Proxy'nin okuduğu izin listesi zone dosyasına benziyor ama daha basit bir metin dosyası.
    • Üst komut güvenilir bir komutsa, örneğin kullanıcının sahip olduğu bash/zsh ise curle izin verip değilse engelleyecek şekilde ayarlanamaz mı diye düşünüyorum. Gerçi epey zahmetli görünüyor.
    • Bu tür sorunlar çözülebilir. Benzer şekilde çalışan bazı büyük EDR ürünleri, engellenecek çalıştırılabilir dosyanın ebeveyn/çocuk ilişkilerini tanımlamanıza izin verir.
      Örneğin curl çalıştırıldığında ve ebeveyn listesinde geriye doğru gidilirken /usr/bin/trusted adlı bir süreç bulunursa, bu curl çağrısına izin verilecek şekilde tanımlanabilmeli. Böylece bir bash betiğinin ebeveyni /usr/bin/trusted olduğu sürece, o betikten curl çalıştırılmasına izin verilebilir.
  • Beni sonunda NixOS'a geçiren şey buydu.
    Eskiden uygulama güvenlik duvarı kullandığımda çok fazla yapılandırma vardı; güncellemelerle yollar değişince sık sık bozuluyordu ve yeni bilgisayara geçtiğimde hepsini baştan yapmak gerekiyordu, bu da çok fazla churn ve israftı.
    Paket yöneticisiyle entegre edince bu sorunlar ortadan kalktı. İzin listesinin ilk kurulumunu tamamladıktan sonra, nix yapılandırmasına yeni paket eklerken yalnızca biraz iş yapmak gerekiyor.
    nix yapılandırmasına izin listesi eklemek zahmetli gelirse, yalnızca bir sonraki yeniden başlatmaya kadar geçerli geçici bir izin listesi ekleyebilirsiniz. Öğrenme eğrisi dik ve iş yükü fazlaydı, ama artık bakımı çok kolay.

    • Bunu search.nixos.org/options'taki OpenSnitch Nix seçenekleri ile mi uyguladığınızı merak ediyorum.
  • Aşırı çok bağlantı açan özensiz uygulamaları yakalamak için iyi. Thunderbird, sana diyorum.
    Hoşuma gidiyor ama küçük bir sıkıntısı da var. Süresi dolmuş geçici kurallar arayüzden silinmiyor veya gizlenmiyor; bu yüzden ara sıra GUI'yi yeniden başlatıp temizlemek gerekiyor.

    • Böyle söylemek istemem ama PR'ların kesinlikle memnuniyetle karşılanacağını düşünüyorum. Tabii benim de gerçekten pek zamanım yok.
  • Fedora'da firewalld/firewall-config ile uğraşmaktansa bunu önerebilirim.

  • Docker konteynerlerinde API veya web servisi çalıştırırken böyle bir özellik olsa güzel olurdu.
    containerA: tüm çıkış trafiğine izin ver
    containerB: istemciye yanıt verdiği durumlar dışında çıkış trafiğini engelle
    containerC: yalnızca updates.example.coma erişebilir
    Bu sadece konteyner başına iptables mı? Mevcut imajlara iptables yerleştirilebilir ama çok iş gibi görünüyor. Yoksa bunu host üzerinde iptables ile mi yapmak gerekir?

    • netfilter'ın, yani iptables'ın ön uç olarak kullandığı şeyin bir çekirdek alt sistemi olduğunu ve host üzerindeki tüm konteynerlere küresel olarak uygulandığını eklemek isterim.
  • Android telefonlar için de böyle bir şey var mı? İyi önerileri merak ediyorum.

    • NetGuard var. Ancak kolaylık özelliklerinin çoğu küçük bir ödeme duvarının arkasında.
      https://netguard.me
    • GrapheneOS en azından belirli bir uygulamanın internet trafiğini engellemeye izin veriyor. Ancak port aralığı veya belirli alan adı bazında yapamıyor.
    • Ne yazık ki gerçek güvenlik duvarlarının hepsi root yetkisi gerektiriyor.
      AFWall+'ı uzun süre kullandım; uygulama başına Wi‑Fi, hücresel veri ve LAN için izin verme/engelleme denetimi gayet temiz. iptables/nftables ön ucu olduğu için kuralları istediğiniz kadar özelleştirebilirsiniz: https://github.com/ukanth/afwall
      Android 2+ sürümlerinden itibaren çalışır.
      Root yoksa yalnızca Adguard gibi VPN tabanlı çözümler mümkün.
      İstatistik gerekiyorsa GlassWire'ın Android sürümü de var. Sadece beta sürümünü denedim, mevcut durumunu bilmiyorum ama bakmaya değer.
    • "Rethink: DNS + Firewall + VPN" uygulamasında benzer işlevler var.
    • AFWall+
      Yukarıda bahsedilen NetGuard'dan buna geçtim.
  • Arch ve OpenSUSE paketleri de olsa iyi olurdu.

    • Arch Linux'ta resmi paket var. Ancak nedense eBPF modülü dahil değil; AUR'dan ayrıca almak gerekiyor.
    • Arch'ın extra deposunda opensnitch var, AUR'da ise opensnitch-ebpf-module bulunuyor.
  • UFW gibi şeylerle karşılaştırınca nasıl? Asıl noktanın devam eden etkinliği gösteren UI olup olmadığını merak ediyorum.

    • OpenSnitch, ağ etkinliği oluştuğunda sorar.
      Rastgele bir uygulama telemetri çağrısı gibi bir şey yaptığında, bu çalıştırılabilir dosyadan bu adrese bağlantıya mı izin verileceği, bu adrese her zaman mı izin verileceği gibi ayrıntılı beyaz/gri listeleme yapabilirsiniz; ayrıca tek seferlik, 15 saniyeliğine, yeniden başlatmaya kadar gibi süre seçenekleri de vardır.
      Kullandığınız ve güvendiğiniz uygulamaları izin listesine alma şeklindeki başlangıç eşiğini aştıktan sonra oldukça iyi; uygulamaların veya oyunların ne yaptığını bilmediğiniz noktaları güzel gösteriyor.
    • Bildiğim kadarıyla UFW bir uygulama güvenlik duvarı değil; yalnızca sistem genelindeki port numaralarını engeller/izin verir.
  • Bunu macOS'a port etme planı var mı? Bir süre Little Snitch kullandım, ama ödeme dışı nedenlerle açık kaynak olanı daha çok tercih ederim.

    • LuLu'yu deneyebilirsiniz.
  • Birkaç kez aralıklı olarak kullanmayı denedim, ama rastgele çökmeler çok fazla olduğu için kullanması epey zordu.