3 poin oleh GN⁺ 2024-08-11 | 1 komentar | Bagikan ke WhatsApp
  • OpenSnitch adalah firewall aplikasi untuk GNU/Linux yang berfokus pada pemfilteran interaktif koneksi keluar aplikasi
  • Dapat memblokir domain iklan, pelacak, dan malware di seluruh sistem, dan firewall sistem berbasis nftables juga bisa dikonfigurasi dari GUI
  • GUI mendukung konfigurasi aturan sistem seperti pengaturan kebijakan input dan mengizinkan layanan masuk, serta memungkinkan pengelolaan beberapa node secara terpusat
  • Instalasi dilakukan dengan mengunduh paket deb/rpm lalu memasangnya dengan apt atau dnf, kemudian menjalankan opensnitch-ui atau membuka GUI dari menu aplikasi
  • Menyediakan ruang diskusi Show and tell untuk berbagi kasus saat koneksi tak terduga dicegat, serta fitur integrasi SIEM sehingga dapat dimanfaatkan untuk pemantauan koneksi di lingkungan operasional

Apa yang dilakukan OpenSnitch

Fitur firewall dan pengelolaan node

Unduh dan instalasi

  • Paket deb/rpm dapat diunduh dari GitHub Releases
  • Instalasi paket deb:
    • sudo apt install ./opensnitch*.deb ./python3-opensnitch-ui*.deb
  • Instalasi paket rpm:
    • sudo dnf install opensnitch*.rpm
  • Setelah instalasi, jalankan opensnitch-ui atau buka GUI dari menu aplikasi
  • Untuk informasi instalasi lebih rinci, lihat dokumentasi

Kasus penggunaan dan partisipasi

Informasi proyek

1 komentar

 
GN⁺ 2024-08-11
Komentar Hacker News
  • Saya sudah berkali-kali mencoba memakai OpenSnitch sebagai firewall interaktif, tetapi ada masalah yang bahkan saya tidak tahu apakah bisa diselesaikan—bukan berarti ini salah OpenSnitch
    Misalnya, saat menjalankan curl di terminal, setiap kali harus memutuskan apakah akan mengizinkannya, atau memasukkannya ke allowlist secara permanen
    Namun jika alat serbaguna seperti curl atau wget diizinkan, malware di mesin yang sudah dibobol juga bisa memakai alat itu untuk keluar ke internet tanpa peringatan firewall, sehingga pintunya terbuka lebar

    • Dengan memakai wildcard subdomain atau subnet, set aturan yang stabil akan terkumpul cukup cepat, dan setelah itu Anda hanya perlu sesekali meninjau permintaan endpoint baru
      Rasa aman bahwa setiap akses baru akan meminta izin membuat kerepotan awal sepadan, dan setelah terbiasa, pengelolaannya juga cukup mudah
      Saya juga sering memakai aturan kedaluwarsa. Misalnya jika memercayai sebuah installer dan ingin memberinya kebebasan sementara, saya membuka aturan untuk executable itu yang akan kedaluwarsa dalam waktu dekat. Opsinya permanen, sampai reboot, 30 detik berikutnya, 5 menit berikutnya, dan seterusnya; pekerjaan dengan banyak endpoint pun jadi jauh lebih sederhana tanpa meninggalkan lubang permanen
    • Sepertinya juga bisa mengizinkan semua trafik curl/wget untuk pengguna dev, sambil tetap mendeteksinya dari pengguna normal
      Pekerjaan pengembangan bisa dijalankan dengan su -c curl … dev, misalnya
      Jika program jahat berjalan di ruang pengguna biasa, app firewall dapat menangkap penggunaan curl dan wget dengan semestinya
      Karena memasukkan kata sandi setiap kali itu merepotkan, PAM juga bisa diatur memakai YubiKey atau autentikasi biometrik, dan pengguna ini sebaiknya tidak bisa login serta tidak punya kata sandi
    • Ini terdengar agak aneh. Kalau memang khawatir, curl atau wget juga bisa diganti namanya
      Di ponsel saya memakai firewall tingkat aplikasi, tetapi bukan dengan memasukkan nama program ke allowlist; yang diizinkan adalah program tertentu mengakses domain/alamat IP tertentu
      Dari pengalaman, cara termudah memblokir komunikasi keluar program atau malware adalah memblokir akses DNS. Saya sudah melakukannya selama puluhan tahun dan sampai sekarang masih bekerja sempurna. “99%” program/malware yang berkomunikasi keluar bergantung pada DNS, bukan IP yang di-hardcode
      Program/malware langka yang tidak membutuhkan DNS juga mudah dideteksi, dan di DNS saya hanya mengizinkan domain tertentu. Saat ini saya bahkan tidak memakai file zone lokal berisi alamat IP yang diperlukan; forward proxy menangani pemetaan domain→IP. Allowlist yang dibaca proxy mirip file zone, tetapi berupa file teks yang lebih sederhana
    • Saya rasa bisa saja dikonfigurasi agar curl lolos jika parent command-nya adalah perintah tepercaya, misalnya bash/zsh milik pengguna, dan diblokir jika tidak. Meski tampaknya cukup merepotkan
    • Masalah seperti itu bisa diselesaikan. Beberapa EDR besar yang bekerja dengan cara serupa memungkinkan Anda mendeklarasikan relasi parent/child dari executable yang akan diblokir
      Misalnya, jika curl dijalankan dan saat menelusuri daftar parent ditemukan proses /usr/bin/trusted, Anda seharusnya bisa mendeklarasikan agar pemanggilan curl ini diizinkan. Dengan begitu, selama parent dari skrip bash adalah /usr/bin/trusted, eksekusi curl dari skrip itu bisa diizinkan
  • Inilah yang akhirnya membuat saya pindah ke NixOS
    Dulu saat memakai app firewall, konfigurasinya banyak, sering rusak saat update mengubah path, dan setiap pindah ke komputer baru semuanya harus diulang, jadi churn dan pemborosannya besar
    Setelah diintegrasikan dengan package manager, masalah itu hilang. Setelah konfigurasi awal allowlist selesai, hanya perlu sedikit pekerjaan saat menambahkan paket baru ke konfigurasi nix
    Jika malas menambahkan allowlist ke konfigurasi nix, saya bisa memasukkan allowlist sementara yang hanya bertahan sampai reboot berikutnya. Kurva belajarnya curam dan pekerjaannya banyak, tetapi sekarang pemeliharaannya sangat mudah

    • Saya penasaran apakah ini diimplementasikan dengan opsi Nix OpenSnitch yang ada di search.nixos.org/options
  • Bagus untuk menemukan aplikasi ceroboh yang membuat terlalu banyak koneksi. Thunderbird, saya sedang bicara tentang kamu
    Saya suka, tetapi ada sedikit ketidaknyamanan. Aturan sementara yang sudah kedaluwarsa tidak dihapus atau tidak ditampilkan di antarmuka, jadi sesekali GUI perlu direstart untuk membersihkannya

    • Tidak enak mengatakannya, tapi PR pasti akan disambut baik. Tentu saja saya sendiri hampir tidak punya waktu
  • Di Fedora, saya bisa merekomendasikan ini daripada mengutak-atik firewalld/firewall-config

  • Saya berharap ada fungsi seperti ini saat menjalankan API atau layanan web di container Docker
    containerA: izinkan semua trafik outbound
    containerB: blokir trafik outbound kecuali saat merespons klien
    containerC: hanya boleh mengakses updates.example.com
    Apakah ini sekadar iptables per container? Mungkin bisa menyisipkan iptables ke image yang sudah ada, tetapi tampaknya banyak pekerjaan. Atau apakah caranya ditangani dengan iptables di host?

    • Saya ingin menambahkan bahwa netfilter, yaitu yang dipakai iptables sebagai frontend, adalah subsistem kernel, sehingga diterapkan secara global ke semua container di host
  • Apakah ada yang seperti ini untuk ponsel Android? Saya penasaran dengan rekomendasi yang bagus

    • Ada NetGuard. Namun sebagian besar fitur kenyamanannya ada di balik pembayaran kecil
      https://netguard.me
    • GrapheneOS setidaknya bisa memblokir trafik internet untuk aplikasi tertentu. Namun tidak bisa per rentang port atau domain tertentu
    • Sayangnya semua firewall sungguhan membutuhkan akses root
      Saya lama memakai AFWall+, dan kontrol untuk mengizinkan atau memblokir Wi-Fi, seluler, dan LAN per aplikasi cukup rapi. Karena ini frontend iptables/nftables, Anda bisa menyesuaikan aturan sebanyak yang diinginkan: https://github.com/ukanth/afwall
      Berfungsi sejak Android 2+
      Tanpa root, yang mungkin hanya solusi berbasis VPN seperti Adguard
      Jika butuh statistik, ada juga GlassWire versi Android. Saya hanya pernah mencoba betanya, jadi tidak tahu kondisinya sekarang, tetapi layak dicek
    • Aplikasi "Rethink: DNS + Firewall + VPN" punya fitur serupa
    • AFWall+
      Saya beralih ke ini dari NetGuard yang disebutkan di atas
  • Akan bagus jika ada paket untuk Arch dan OpenSUSE juga

    • Arch Linux punya paket resmi. Namun entah mengapa modul eBPF tidak disertakan, jadi harus mengambilnya terpisah dari AUR
    • Di repositori extra Arch ada opensnitch, dan di AUR ada opensnitch-ebpf-module
  • Bagaimana dibandingkan dengan sesuatu seperti UFW? Saya penasaran apakah intinya adalah UI untuk melihat aktivitas yang sedang berlangsung

    • OpenSnitch akan bertanya saat ada aktivitas jaringan
      Jika aplikasi sembarang melakukan panggilan telemetri, Anda bisa membuat white/greylist secara terperinci, misalnya apakah hanya koneksi dari executable ini ke alamat ini yang diizinkan, atau alamat ini selalu diizinkan; ada juga opsi durasi seperti sekali saja, selama 15 detik, sampai reboot, dan sejenisnya
      Setelah melewati hambatan awal memasukkan aplikasi yang digunakan dan dipercaya ke allowlist, ini cukup bagus, dan memperlihatkan dengan baik hal-hal yang sebelumnya tidak Anda ketahui dilakukan oleh aplikasi atau game
    • Sejauh yang saya tahu, UFW bukan app firewall, melainkan hanya memblokir/mengizinkan nomor port untuk seluruh sistem
  • Apakah ada rencana mem-porting ini ke macOS? Saya memakai Little Snitch cukup lama, tetapi lebih menyukai open source karena alasan yang tidak terkait pembayaran

    • Coba gunakan LuLu
  • Saya beberapa kali mencoba memakainya secara sporadis, tetapi crash acak terlalu sering terjadi sehingga cukup sulit digunakan