Linux'ta belirli programlara internet erişimi nasıl engellenir


20

Son zamanlarda, Internet Erişimini belirli programlarla sınırlamada bir sorunla karşılaştım. Herhangi bir yazılım kullanmadan bunu yapmanın iyi bir yolunu önerebilecek olan var mı?

Yanıtlar:


31

Benim için çözüm çok açıktı.

  1. Yeni grup oluşturun, doğrulayın ; bu gruba gerekli kullanıcıları ekleyin:
    • Oluşturmak: groupadd no-internet
    • Doğrulama: grep no-internet /etc/group
    • Kullanıcı ekle: useradd -g no-internet username

      Not: Mevcut kullanıcıyı değiştiriyorsanız şunları çalıştırmalısınız usermod -a -G no-internet userName :sudo groups userName

  2. Yolunuzda bir komut dosyası oluşturun ve çalıştırılabilir yapın:
    • Oluşturmak: nano /home/username/.local/bin/no-internet
    • çalıştırılabilir: chmod 755 /home/username/.local/bin/no-internet
    • İçerik: #!/bin/bash
                    sg no-internet "$@"

  3. Grup no-internet için ağ etkinliğini bırakmak için iptables kuralı ekleyin :


   4. Örneğin Firefox'ta çalıştırarak kontrol edin:

  • no-internet "firefox"

Bir istisna yapmak ve bir programın yerel ağa erişmesine izin vermek istemeniz durumunda :

  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP

NOT: Yumurtlama durumunda kurallar korunacaktır. Örneğin, internet kuralı olmayan bir program çalıştırırsanız ve bu program tarayıcı penceresini açarsa , yine de kurallar uygulanır.


2
Birkaç not Ilia: Reklam 1: - mevcut kullanıcıyı değiştirmek için: usermod -a -G grupAdı kullanıcıAdı - ile kontrol et: sudo grupları kullanıcıAdı Reklam 3: - İptables'da zaten çok fazla kuralım var, Yeni kuralın konumu çok önemli . OUTPUT zincirindeki ilk kural olmalıdır. Bu nedenle insert: iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP LAN'a erişime izin vermek için: ACCEPT kurallarının DENY kuralının üstünde olduğundan emin olun. Tıkır tıkır çalışıyor. Örneğin Wifiguard'da kullanın. Prog, wlan'ı bilinmeyen cihazlar için kontrol eder, ancak her başlangıçta "telefonlar ana sayfası" nı kontrol eder.

Komut dosyası yalnızca komutu iletir. Parametreleri olan bir program başlatmayı denerseniz, "$ 1" yerine "$ @" kullanmalısınız. Nedense, bash düzgün işlemek için bir değişken geçici olarak saklamak zorunda kaldı: cmd = "$ @"; SG no-internet "$ {cmd}"
onse

"internet yok" yerine "nointernet" kullanın. Hangi nedenle olursa olsun, Ubuntu 14.04, sg veya chgrp kullanmaya çalıştığınızda tireyi işleyemez (parola ister, sonra başarısız olur).

1
unshare -n YourAppToBlock> "internet yok" yerine "nointernet" kullanın. belki, 'hayır \\ - internet'?
SarK0Y

Açıklandığı gibi denedim ama benim için, "no-internet" beni ekledikten ve artık internete bağlanamıyorum ip tabloları ayarladıktan sonra (bash script no-internet ile ve olmadan).
Viatorus
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.