Come limitare l'accesso a Internet per un determinato utente sulla lan usando iptables in Linux


11

Diciamo che ci sono due utenti sulla LAN, A e B. Come posso limitare l'utente A dall'accesso a Internet 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 ad un certo punto; come lo riattivo? Sto usando Ubuntu Linux 10.04. Sarebbe bello se qualcuno mi mostrasse come farlo dalla riga di comando, dato che accedo spesso alla macchina usando un login ssh locale.

Risposte:


17

Presumo che gli utenti A e B stiano usando le stesse macchine Linux di cui sei l'amministratore. (Non è del tutto chiaro dalla tua domanda. Se A e B hanno i loro computer su cui sono amministratori, è un problema completamente diverso.)

Il seguente comando 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

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 il ping (perché è setuid root), ma non altro. L'utente sarà comunque in grado di connettersi a un proxy locale se quel proxy è stato avviato da un altro utente.

Per rimuovere questa regola, aggiungi -Dal 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(vedi la guida iptables di Ubuntu per maggiori informazioni).


Grazie mille. E sì, i tuoi presupposti sono veri. Sulla base della tua risposta e della menzionata guida di Ubuntu, è il modo giusto di fare le cose se volessi concedere anche all'utente ssh l'accesso limitato (a volte voglio fare il login usando il suo account su ssh): iptables -t mangle -A OUTPUT - o eth0 -m proprietario --uid-owner 1234 -p tcp --dport ssh -j ACCEPT iptables -t mangle -A OUTPUT -o eth0 -m proprietario --uid-owner 1234 -j DROP Ho inserito queste regole come in il file citato e le cose sembrano funzionare bene.
Marwan Tanager,

@Marwan Penso che sia giusto. Si noti che se si consente l'accesso a SSH, si consente praticamente qualsiasi cosa poiché SSH può banalmente tunnel altri protocolli.
Gilles 'SO- smetti di essere malvagio' il

0

Non userei iptables per questo.

Presumo che A e B siano associati agli IP fissi ClientA e ClientB. Presumo che il tuo proxy Internet sia ServerI (il tuo Ubuntu-Server?).

Quindi aggiungerei una voce di routing nega / elimina da ClientA a ServerI.

Non uso Ubuntu, quindi non posso dirti quale file di configurazione utilizzare per rendere permanente quell'impostazione (sopravvivere al riavvio).

Forse qualcuno può aggiungere quel dettaglio?

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.