So blockieren Sie den Internetzugriff auf bestimmte Programme unter Linux


20

Vor kurzem bin ich auf das Problem gestoßen, den Internetzugang auf bestimmte Programme zu beschränken. Könnte jemand einen guten Weg empfehlen, ohne eine bestimmte Software zu verwenden?

Antworten:


31

Die Lösung für mich war einfach.

  1. Neue Gruppe erstellen, validieren ; füge benötigte Benutzer zu dieser Gruppe hinzu:
    • Erstellen: groupadd no-internet
    • Bestätigen: grep no-internet /etc/group
    • Benutzer hinzufügen: useradd -g no-internet username

      Hinweis: Wenn Sie bereits vorhandene Benutzer ändern, sollten Sie Folgendes ausführen usermod -a -G no-internet userName :sudo groups userName

  2. Erstellen Sie ein Skript in Ihrem Pfad und machen Sie es ausführbar:
    • Erstellen: nano /home/username/.local/bin/no-internet
    • Ausführbar: chmod 755 /home/username/.local/bin/no-internet
    • Inhalt: #!/bin/bash
                    sg no-internet "$@"

  3. Fügen Sie die iptables-Regel zum Löschen der Netzwerkaktivität für die Gruppe no-internet hinzu :
    • iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP

      Hinweis: Vergessen Sie nicht, die Änderungen dauerhaft zu speichern, damit sie nach dem Neustart automatisch angewendet werden . Dies hängt von Ihrer Linux-Distribution ab.


   4. Überprüfen Sie dies, beispielsweise in Firefox, indem Sie Folgendes ausführen:

  • no-internet "firefox"

Falls Sie eine Ausnahme machen und einem Programm den Zugriff auf das lokale Netzwerk erlauben möchten :

  • 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

HINWEIS: Beim Laichen werden die Regeln beibehalten. Wenn Sie beispielsweise ein Programm ohne Internetregel ausführen und dieses Programm ein Browserfenster öffnet, werden die Regeln trotzdem angewendet.


2
Ein paar Anmerkungen Ilia: Ad 1: - Bestehenden Benutzer ändern: usermod -a -G groupName userName - Häkchen bei: sudo groups userName Ad 3: - Ich habe bereits viele Regeln in iptables. Die Position der neuen Regel ist entscheidend . sollte die erste Regel in der Kette OUTPUT sein. Deshalb benutze ich insert: iptables -I OUTPUT 1 -m Eigentümer --gid-Eigentümer no-internet -j DROP So erlauben Sie den Zugriff auf das LAN: Stellen Sie sicher, dass die ACCEPT-Regeln über der DENY-Regel liegen. Klappt wunderbar. Verwenden Sie es zum Beispiel auf Wifiguard. Prog überprüft das WLAN auf unbekannte Geräte, aber "telefoniert nach Hause" bei jedem Start.

Das Skript übergibt nur den Befehl. Wenn Sie versuchen, ein Programm mit Parametern zu starten, sollten Sie "$ @" anstelle von "$ 1" verwenden. Aus irgendeinem Grund musste ich es vorübergehend in einer Variablen speichern, damit bash es korrekt verarbeiten konnte: cmd = "$ @"; sg no-internet "$ {cmd}"
onse

benutze "nointernet" anstelle von "no-internet". Aus irgendeinem Grund kann Ubuntu 14.04 den Bindestrich nicht verarbeiten, wenn Sie versuchen, sg oder chgrp zu verwenden (es fordert zur Eingabe eines Kennworts auf und schlägt dann fehl).

1
Heben Sie die Freigabe von -n YourAppToBlock auf> Verwenden Sie "nointernet" anstelle von "no-internet". vielleicht 'no \\ - internet'?
SarK0Y

Ich habe es wie beschrieben versucht, aber für mich, nachdem ich mich zu "no-internet" hinzugefügt und die IP-Tabellen eingestellt habe, kann ich keine Verbindung mehr zum Internet herstellen (mit und ohne das Bash-Skript no-internet).
Viatorus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.