GNU/Linux >> Linux Esercitazione >  >> Linux

Iptables e proxy trasparenti?

Ho impostato un proxy TCP locale e trasparente su localhost . Voglio reindirizzare TUTTO il traffico TCP a questo proxy, in modo che possa gestirlo e nulla "fuoriesca", aggirando il proxy. Devo usare IPTables per reindirizzare il traffico. Ho pensato di utilizzare TPROXY, ma ciò richiede il supporto dell'applicazione e al momento è supportato solo il target REDIRECT.

Ho utilizzato le seguenti regole di IPTables:

iptables -t nat -A OUTPUT -o lo -j RETURN
iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j RETURN
iptables -t nat -A OUTPUT -d 192.168.0.0/16 -j RETURN
iptables -t nat -A OUTPUT -m owner --uid-owner proxy-owner -j RETURN
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $PROXY_PORT

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner proxy-owner -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j LOG
iptables -P OUTPUT DROP

sembrano per funzionare bene, tuttavia sono confuso sul perché.

Ecco due domande a cui ancora non so rispondere:

1) Per quanto riguarda l'ultima regola nella tabella NAT, perché voglio reindirizzare i pacchetti SYN solo alla porta proxy locale (--syn )?
Voglio reindirizzare TUTTI i pacchetti TCP. Nella configurazione corrente sembra che solo il pacchetto SYN
venga reindirizzato al proxy locale e che tutti gli altri pacchetti possano fluire direttamente alla destinazione, portando (in teoria) a un pasticcio totale (o tutti tranne SYN essendo bloccato dalla tabella dei filtri).
Tuttavia, se elimino --syn opzione e reindirizza TUTTI i pacchetti al proxy locale, il proxy non funziona affatto. Perché?

2) Per quanto riguarda la quarta regola nella tabella dei filtri, perché devo consentire esplicitamente le connessioni stabilite in uscita? Il proxy è l'unica applicazione a cui è comunque consentito inviare pacchetti a destinazioni non localhost, ed è già autorizzato a farlo (regola 3), quindi a cosa serve la quarta regola? Sembra che consenta alle connessioni non proxy di aggirare il proxy.

Grazie!

Risposta accettata:

Entrambe le parti della tua domanda sono collegate.

La parte (1) acquisisce un pacchetto SYN e lo reindirizza come suggerito. Da questo punto conntrack (2) prende il sopravvento e riconosce che ogni pacchetto successivo in quel flusso fa parte della stessa connessione e lo reindirizza allo stesso modo del pacchetto SYN originale.

Correlati:cambiare l'ambiente di un processo in esecuzione?

Una panoramica di Connection Tracking può essere trovata su http://en.wikipedia.org/wiki/Netfilter#Connection_Tracking


Linux
  1. Blocco host blacklist e iptables

  2. Come funzionano l'input da tastiera e l'output di testo?

  3. Intercetta input e output da un eseguibile specifico?

  4. Come reindirizzare l'output su un file e stdout

  5. Domande su IPTables e DHCP?

16 suggerimenti e trucchi di iptables per gli amministratori di sistema

50 regole utili e semplici di IPtables per l'amministratore Linux

Spiegazione:input, output e reindirizzamento degli errori in Linux

Qual è la differenza tra le catene OUTPUT e FORWARD in iptables?

readlink -f e -e descrizione delle opzioni non chiara

Debug di iptables e insidie ​​comuni del firewall?