Come bloccare l'accesso a Internet a determinati programmi su Linux


20

Di recente, ho riscontrato un problema di limitazione dell'accesso a Internet a programmi specifici. Qualcuno potrebbe raccomandare un buon modo per farlo, senza utilizzare alcun software particolare?

Risposte:


31

Per me la soluzione è stata semplice.

  1. Crea, convalida nuovo gruppo ; aggiungere gli utenti richiesti a questo gruppo:
    • Creare: groupadd no-internet
    • Convalidare: grep no-internet /etc/group
    • Aggiungi utente: useradd -g no-internet username

      Nota: se stai modificando un utente già esistente dovresti eseguire: usermod -a -G no-internet userName verifica con:sudo groups userName

  2. Crea uno script nel tuo percorso e rendilo eseguibile:
    • Creare: nano /home/username/.local/bin/no-internet
    • eseguibile: chmod 755 /home/username/.local/bin/no-internet
    • Soddisfare: #!/bin/bash
                    sg no-internet "$@"

  3. Aggiungi la regola iptables per eliminare l'attività di rete per il gruppo no-internet :
    • iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP

      Nota: non dimenticare di rendere permanenti le modifiche, in modo che vengano applicate automaticamente dopo il riavvio . Farlo dipende dalla tua distribuzione Linux.


   4. Controllalo, ad esempio su Firefox eseguendo:

  • no-internet "firefox"

Nel caso in cui si desideri fare un'eccezione e consentire a un programma di accedere alla rete locale :

  • 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

NOTA: in caso di spawn verranno mantenute le regole. Ad esempio, se si esegue un programma senza regola Internet e quel programma aprirà la finestra del browser, verranno comunque applicate le regole.


2
Alcune note Ilia: Annuncio 1: - per modificare l'utente esistente: usermod -a -G groupName userName - verificare con: sudo group userName Annuncio 3: - Ho già molte regole in iptables, la posizione della nuova regola è cruciale . dovrebbe essere la prima regola nella catena OUTPUT. Quindi uso insert: iptables -I OUTPUT 1 -m proprietario --gid-owner no-internet -j DROP Per consentire l'accesso alla LAN: assicurarsi che le regole ACCEPT siano sopra la regola DENY. Funziona come un fascino. Usalo ad esempio su Wifiguard. Prog verifica la presenza di dispositivi sconosciuti su wlan, ma "telefoni a casa" ad ogni avvio.

Lo script passerà solo il comando. Se si tenta di avviare un programma con parametri, è necessario utilizzare "$ @" anziché "$ 1". Per qualche motivo, ho dovuto memorizzarlo temporaneamente in una variabile per bash per elaborarlo correttamente: cmd = "$ @"; sg no-internet "$ {cmd}"
corso il

usa "nointernet" invece di "no-internet". Per qualsiasi motivo Ubuntu 14.04 non è in grado di gestire il trattino quando si tenta di utilizzare sg o chgrp (richiede una password, quindi fallisce).

1
unshare -n YourAppToBlock> usa "nointernet" invece di "no-internet". forse "no \\ - internet"?
SarK0Y,

L'ho provato come descritto, ma per me, dopo avermi aggiunto a "no-internet" e impostato le tabelle ip non posso più collegarmi a internet (con e senza lo script bash no-internet).
Viatorus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.