Her program için internet erişimi nasıl kontrol edilir?


59

Hangi programın internete bağlanabileceğini kontrol etmek için bir yazılım kullanmak istiyorum. Bu davranışın "güvenlik duvarı" kelimesiyle ilişkili olduğunu biliyorum, ancak birileri Kişisel Güvenlik Duvarı isterse bazı Linux kullanıcıları çok üzgündür. Böyle bir program talep ederek sizi üzmek istemiyorum.
"Bağlantı noktalarını güvenli hale getirmek" veya Kişisel Güvenlik Duvarı'nın Windows'ta vaat ettiği diğer şeyleri istemiyorum. Baktım iptablesama gereksinimlerime uymuyor.

Burada mükemmel bir cevap gördüm ( "Şarap uygulamaları için internet erişimini nasıl engelleyebilirim" ) ama bunu ayarlamak çok rahatsız edici.

Her program için internete erişip erişemediğini soran bir yazılım var mı?


Mac'te bunu yapan küçük snitch adında bir yazılım var . Sanırım ayrıca bir windows versiyonu var ...
Alvar

Yanıtlar:


6

Bir yoktur Perl komut (Almanca Ubuntu forumu İngilizce'ye Google çevrilmiştir bunu görünüyor). Hiç denemedim ve senaryoya daha yakından bakmadım, ama belki sizin için işe yarar. Açıklama yalnızca Almancadır, bu nedenle bir çeviri hizmetine ihtiyacınız olabilir (Google Translate gibi; yukarıya bakın).


Bir göz atacağım. Bu ilginç ve doğru araç olabilir. Ne yazık ki, gui yok, ama beni durdurmamalıydı :)
guerda

34

Hala bu tür bir uygulama arıyorsanız, şu anda tam olarak bu uygulamayı geliştiriyorum: http://douaneapp.com/ https://gitlab.com/douaneapp/Douane

Uygulamam bilinmeyen uygulamaları engelliyor (yetkili bir uygulamanın yeni sürümleri engellenmiş) ve trafiğine İzin Ver veya İzin Verme seçeneğini soruyor.

Web sitesine bir göz atın ;-)

ekran görüntüsü


Güzel! Ayrıca ppa'ya baktım ancak orada uygulama yapılmasına rağmen paket yok. Ayrıca okunabilir bir site adına çözülen ipin gösterilip gösterilmediğini merak ediyorum. Ve derleme talimatlarını takip edeceğim, orada ubuntu dep paketleri için birçok ipucu gördüm ve yükseltmeleri kolayca yönetmek için yerel .deb paketlerini kopyalamak için checkinstall kullanacağım (kaldırma / yükleme). Sanırım dağıtılabilirlerinizi oluşturmak için checkinstall kullanılabilir.
Kova Gücü

Özellik talebini Github'da açabilirsiniz ( github.com/Douane/Douane/issues ) :)
ZedTuX

2
tam olarak ihtiyacım olan şey gibi görünüyor !! Ancak Ubuntu'ya kurmak için bir paket bulamıyorum.
azerafati

Hala Ubuntu için paket değil misiniz?
Anwar

1
Douaneapp.com geri döndü! :)
ZedTuX

26

Ben buldum sorunu çözer uygun bir çözüm. İnterneti kullanmasına asla izin verilmeyen ve programı bu grubun bir üyesi olarak başlatan bir grup oluşturursunuz.

  1. Bir grup oluşturun no-internet. Do not Bu gruba katılmak

    sudo addgroup no-internet
    
  2. Gruba ait tüm işlemlerin no-internetağı kullanmasını engelleyen iptables'a bir kural ekleyin ( ip6tablesIPv6 trafiğini de önlemek için kullanın )

    sudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
    
  3. Yürütme sudo -g no-internet YOURCOMMANDyerine YOURCOMMAND.

Kolayca sudo kullanan bir sarmalayıcı komut dosyası yazabilirsiniz. Ekleyerek şifre isteminden kurtulabilirsiniz.

%sudo     ALL=(:no-internet)      NOPASSWD: ALL

veya buna benzer bir şey sudo visudo

Güvenlik duvarı kurallarını sürdürmek için iptables-saveve iptables-restoreöğelerini kullanın .


1
Rehberinizi denedim, sudo -g no-internet firefoxvarsayılandan daha hızlı bağlanır. Çalışmıyor.
kenn

1
@ kenn Ben sadece burada iyi çalıştığını söyleyebilirim. Kuralı oluştururken yanlış bir şey yaptığınızı tahmin ediyorum. Kuralı kaydetmemek, betiği çalıştırılabilir kılmak veya benzeri bir şey yapmamak.
Tim

Yeniden
başlattım

1
Firefox ile bile, benim için mükemmel çalıştı. teşekkür ederim!
Kostanos

1
Bu benim için de geçerli değil, Ubuntu 19.04'te. Değişikliklerin yeniden başlatmalar arasında kaydedilmesini sağlamak için iptables-persistent programını kurmak zorunda kaldım. (Yani yukarıdaki çözüme bunu eklemek isteyebilirsiniz). Ancak, sudo -g internet yok firefox, Firefox'un internete erişimini kısıtlamaz. Kavramsal olarak, bu çözüm çalışması gerektiği gibi görünüyor. Göz ardı ediliyor temel bir şey var mı? Örneğin, bunun çalışması için BOTH ipv4 ve ipv6'yı kurmamız gerekiyor mu?
PJ Singh

5

Ubuntu'da zaten bir güvenlik duvarı var ufw, ancak varsayılan olarak devre dışı bırakıldı. Doğrudan Ubuntu Yazılım Merkezi'nden yüklenebilen komut satırı veya öndeki gufw ile etkinleştirebilir ve kullanabilirsiniz .

İnternet erişimini belirli bir uygulamaya engellemeniz gerekirse , hala beta sürümünde olan ve Ubuntu Yazılım Merkezinde bulunmayan LeopardFlower'ı deneyebilirsiniz :


4

Bir programın başka bir kullanıcı altında çalıştırılması, o kullanıcı için yapılandırma dosyalarını sizin kullanmanız yerine kullanacaktır.

Güvenlik duvarı kurallarının değiştirilmesini gerektirmeyen ve aynı kullanıcının altında (üzerinden sudo) çalışan bir kullanıcının bulunduğu my_userve çalıştırmak istediğiniz uygulamanın bulunduğu bir çözüm my_app:

# run app without access to internet
sudo unshare -n sudo -u my_user my_app

Daha fazla ayrıntı için man unshareve bu cevaba bakınız .

Linux GUI güvenlik duvarı

Eğer bir GUI güvenlik duvarı arıyorsanız, OpenSnitch ile iyi sonuçlar aldım - henüz ubuntu depolarında yok ve üretim seviyesi olarak adlandırmazdım, ama github sayfasından derleme adımlarını takip etmek benim için çalıştı.


3

@ psusi: İnsanlara gerçekten kötü davranmalarını ve yararlı bilgi vermemelerini diliyorum. IPTable'lar bunu yapmayı sağlar, bu yüzden "aptalca" olduğunu düşünmezdim. Sadece bir kullanım durumunu anlamadan "HAYIR" demek biraz dar görüşlüdür. http://www.debian-administration.org/article/120/Application_level_firewalling

EDIT bodhi.zazen

NOT - BU SEÇENEĞİ, 2005 YILINDA IPTABLETLERDEN ÇIKTI, BU CEVAP SONRASINDA ÖNCE 8 YIL

SEE - http://www.spinics.net/lists/netfilter/msg49716.html

taahhüt 34b4a4a624bafe089107966a6c56d2a1aca026d4 Yazar: Christoph Hellwig Tarih: Paz 14 Ağustos 17:33:59 2005 -0700

[NETFILTER]: ipt {, 6} sahibindeki görev listesinin_ kötüye kullanımını kaldır

Cmd / sid / pid eşleşmesini yok edilemez kırıldığından ve görev listesindeki_lock değişikliklerini kilitleme şeklinde durduğundan beri ayırın.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>

2
Bunu işaretlemeyi düşünen kimseye: Bu onun yerine yorum olmamalı , sorulan soruyu yanıtlıyor . @ user141987 iptablesBununla birlikte, uygulama başına kısıtlamaları nasıl uygulayacağınız konusunda daha fazla bilgi sağlamak için bunu genişletmenizi tavsiye ederim . Cevabınıza önemli bilgileri eklemenizi öneririm (ve hala referans için bağlantıyı sağladım).
Eliah Kagan

2
iptables, uygulamaya göre filtreleme yapmaz.
Panter

Böyle bir seçenek olmadığı için bu makale yanlış anlaşılıyor gibi görünüyor. Geçmişte böyle bir seçenek yaratma isteklerinin reddedilmesinin nedeni, doğası gereği güvenilmez olmasıydı; bir uygulama sadece adını değiştirebilir.
psusi

3
@ psusi "Eğer çekirdeğiniz CONFIG_IP_NF_MATCH_OWNER ile derlendiyse iptables firewall'unuzu paket başına komut sırasına göre izin vermek veya reddetmek için yapılandırabilirsiniz" diyor musunuz? Ya da basitçe çoğu çekirdek seçeneği içermez mi? Eğer bu yanlışsa, onu harap eden bilgi kaynakları var mı? (Ayrıca, uygulama başına güvenlik duvarı kısıtlamalarının birincil amacının, güvenilmeyen uygulamaları çalıştırmanın tamamen güvenli olmasını sağlamaya çalışmak olmadığını unutmayın. Amaç, kullanıcıya, uygulamaların yerleşik yapılandırma seçeneklerinin ötesinde bir kontrol ölçüsü vermektir. )
Eliah Kagan,

Bu seçenek, bu cevabın verilmesinden 8 yıl önce 2005 yılında çekirdekten çıkarıldı - spinics.net/lists/netfilter/msg49716.html ve bunun aksine iddiaların yanlış olmasına rağmen, iptables içeren bir uygulama filtresi uygulayamazsınız.
Panter,

3

Diğer bir seçenek ise ateşböceği . Uygulamanın ağı görüp görmediğini kontrol ettiğiniz sanal alanın içindeki uygulamayı çalıştırır:

firejail --net=none firefox

Bu komut, Firefox tarayıcısını internet erişimi olmadan başlatacak. Ubuntu deposundaki firejail dağılımının eski olduğunu unutmayın; en son LTS sürümünü firejail ana sayfasından indirin.


2

Ben yayınlanmıştır çözüm bulduk burada iyi biri olmak. İnternet erişimine izin verilen bir kullanıcı grubu oluşturmayı ve yalnızca bu grup için erişime izin vermek için güvenlik duvarı kurallarını ayarlamayı içerir. Bir uygulamanın internete erişmesinin tek yolu, bu grubun bir üyesi tarafından çalıştırılıyorsa. Bir kabuk açarak bu grubun altındaki programları çalıştırabilirsiniz sudo -g internet -s.

Yukarıda bağladığım yazının içinde ne olduğunu özetlemek için:

  1. Aşağıdakileri bir kabuğa yazarak "internet" grubunu oluşturun: sudo groupadd internet

  2. Aşağıdaki betiği çalıştıracak kullanıcının sudogruba eklendiğinden emin olun /etc/group. Bu dosyayı değiştirmeyi bitirirseniz, aşağıdaki betiğin çalışabilmesi için oturumu kapatıp tekrar açmanız gerekir.

  3. Aşağıdakileri içeren bir komut dosyası oluşturun ve çalıştırın:

    #!/bin/sh
    # Firewall apps - only allow apps run from "internet" group to run
    
    # clear previous rules
    sudo iptables -F
    
    # accept packets for internet group
    sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
    
    # also allow local connections
    sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
    sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
    
    # reject packets for other users
    sudo iptables -A OUTPUT -p tcp -j REJECT
    
    # open a shell with internet access
    sudo -g internet -s
    
  4. Yukarıdaki betiği çalıştırarak, uygulamaları internet erişimli çalıştırabileceğiniz bir kabuğunuz olacaktır.

Bu komut dosyasının güvenlik duvarı kurallarınızı kaydetmek ve geri yüklemek için hiçbir şey yapmadığını unutmayın. iptables-saveVe iptables-restorekabuk komutlarını kullanmak için komut dosyasını değiştirmek isteyebilirsiniz .


1

Daha iyisi veya kötüsü için, Linux farklı bir yaklaşım kullanır. Bu işlevi sağlayacak basit bir grafik arayüz yoktur. İnternette bu konuyla ilgili birçok tartışma var ve Google’da arama yaparsanız ilginç tartışmalar bulabilirsiniz. Tartışma ilginç olsa da, bugüne kadar bu işlevselliği yazmak ve sürdürmek isteyen özel bir programcı grubu olmamıştır.

Linux'ta bu işlevselliği sunan araçlar Apparmor, Selinux ve Tomoyo'dur.

Bu araçların hiçbiri öğrenmesi çok kolay değildir ve hepsinin avantaj ve dezavantajları vardır. Şahsen ben SELinux'u tercih ederim, ancak SELinux'un daha dik bir öğrenme eğrisi var.

Görmek:

http://www.linuxbsdos.com/2011/12/06/3-application-level-firewalls-for-linux-distributions/

Leopardflower, zaten referans alınmış bir uygulama vardı. Durumdan / bakımdan emin değilim.




0

Hayır, mümkün değil. Ayrıca, güvenlik duvarının geleneksel tanımının bir parçası değildir. Bu, Microsoft'un temelde kırılan işletim sistemi güvenlik sorunları hakkında yazı yazmak için oldukça yakın zamanda ortaya çıktığı bir şeydir. Linux topluluğunda aptalca ve işlenemez kabul edilir çünkü izin verilmeyen bir program basitçe başka bir programı çalıştırabilir ve bu şekilde erişebilir.

Bir programı çalıştırırken ağda ne yaptığını beğenmiyorsanız, o programı çalıştırmayın.


7
Microsoft'un güvenlik duvarı, bu işlevi sunan ilk büyük güvenlik duvarı değildi . Bunu sunan ilk Windows güvenlik duvarı bile değildi. BlackIce Defender, ZoneAlarm ve Windows için çeşitli diğer yazılım güvenlik duvarları, Windows Internet Bağlantısı Güvenlik Duvarı'nın yıllarca kullanılmasını öngörür. Ayrıca, Linux topluluğunda böyle bir fikir birliği yoktur. Uygulamaların davranışını sınırlamak için genellikle AppArmor (veya SELinux) kullanıyoruz (ve AppArmor'un bu amaca adapte edilip edilmeyeceğini merak ediyorum ...). Hangi uygulamaların İnternete erişebileceğini kontrol etmek istemenin "yanlış" olması için hiçbir neden yoktur.
Eliah Kagan

Diğer birkaç cevabın da kanıtlayabileceği gibi, uygulama başına güvenlik duvarı kısıtlamaları da mümkündür ; Bu işlev iptables / netfilter'ın içine yerleştirilmiştir!
Eliah Kagan

Hayır, ne netfilter ne de iptables uygulama başına filtre uygulayamaz. Kullanıcıya ve bağlantı noktasına göre filtreleyebilirler, ancak uygulama başına değil.
Panter

"Başka bir şeyi çalıştırabilir" ???? O zaman açıkça, hedef programın alt süreçlerini engellemeyen böyle bir programın yaratıcısı büyük ölçüde kusurludur.
trusktr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.