Soluzione 1:
La soluzione per me si è rivelata semplice.
- Crea, convalida nuovo gruppo; aggiungi gli utenti richiesti a questo gruppo:
- Crea:
groupadd no-internet
- Convalida:
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
controlla con :sudo groups userName
- Crea:
- Crea uno script nel tuo percorso e rendilo eseguibile:
- Crea:
nano /home/username/.local/bin/no-internet
- Eseguibile:
chmod 755 /home/username/.local/bin/no-internet
- Contenuto:
#!/bin/bash
sg no-internet "[email protected]"
- Crea:
- Aggiungi regola iptables per aver interrotto 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 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 deposizione delle uova le regole saranno mantenute. Ad esempio, se esegui un programma con no-internet rule e quel programma aprirà la finestra del browser, le regole verranno comunque applicate.
Soluzione 2:
Una possibilità più semplice:usa firejail . Esegue l'applicazione all'interno della sandbox. Nella sandbox, puoi controllare l'accesso dell'applicazione a qualsiasi rete o cartella nel tuo computer.
Per eseguire una determinata applicazione senza accesso alla rete, procedi come segue:
firejail --net=none <application>
In tal caso, "La sandbox sembra un computer senza interfacce di rete". (Vedi sezione Network nella documentazione)
Ad esempio, firejail --net=none firefox
avvierà firefox senza alcuna connessione di rete.
Installazione
Consulta la documentazione di installazione. Dovresti installare dal sistema di pacchetti nella tua distribuzione, o meglio ottenere l'ultima versione LTS. (Ad esempio, quest'ultima versione LTS, 9.56.2
, funziona anche in Ubuntu 16.04.)