Diciamo che ci sono due utenti sulla LAN, A e B. Come posso limitare l'accesso a Internet dell'utente A usando le regole di iptables e salvando le regole in modo che dopo il riavvio siano ancora efficaci. Supponiamo anche che io voglia concedere a quell'utente l'accesso a un certo punto; come lo riabilito? Sto usando Ubuntu Linux 10.04. Sarebbe bello se qualcuno mi mostrasse come farlo dalla riga di comando, dato che spesso accedo alla macchina usando un login ssh locale.
Risposta accettata:
Presumo che gli utenti A e B utilizzino le stesse macchine Linux di cui sei l'amministratore. (Non è del tutto chiaro dalla tua domanda. Se A e B hanno i propri computer su cui sono amministratori, è un problema completamente diverso.)
Il comando seguente impedirà all'utente con uid 1234 di inviare pacchetti sull'interfaccia eth0
:
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
ip6tables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
Consiglio di leggere la guida di Ubuntu iptables per acquisire familiarità di base con lo strumento (e fare riferimento alla pagina man per cose avanzate come la tabella mangle).
L'utente sarà comunque in grado di eseguire ping (perché è setuid root), ma non nient'altro. L'utente potrà comunque connettersi a un proxy locale se tale proxy è stato avviato da un altro utente.
Per rimuovere questa regola, aggiungi -D
al comando sopra.
Per rendere permanente la regola, aggiungila a /etc/network/if-up.d/my-user-restrictions
(rendilo uno script eseguibile che inizia con #!/bin/sh
). Oppure usa iptables-save
(consulta la guida di Ubuntu iptables per maggiori informazioni).