Iptables Linux rifiutati - Come si riattiva?


8

quindi sto avendo un client nella mia rete collegato al router attraverso il mio computer con arpspoof. Quando so che voglio interrompere l'inoltro di pacchetti eseguo:

iptables -A FORWARD -j REJECT

funziona come mi aspettavo. Ma quando provo a fare qualcosa del genere:

iptables -A FORWARD -j ACCEPT

Non riesco a far passare i pacchetti come all'inizio.

Sto facendo qualcosa di sbagliato o ci sono altri argomenti che dovrei usare diversi da "ACCETTA"?


4
Ad ogni modo -A, potresti voler usare -Pper impostare la P olicy (azione predefinita quando non si applicano altre regole nella catena). Ad esempio, iptables -P FORWARD DROP(non può essere REJECT).
JoL

Che cosa significa "la domanda dovrebbe dimostrare ragionevoli capacità di gestione del sistema"? :)
Marco,

Risposte:


35

IPtables ha un elenco di regole e, per ogni pacchetto, controlla l'elenco delle regole in ordine. Una volta trovata una regola che corrisponde al pacchetto e specifica una politica (ACCEPT, REJECT, DROP), viene determinato il destino del pacchetto corrispondente; non vengono più esaminate le regole.

Ciò significa che l'ordine in cui si eseguono i comandi è importante. Quando lo usi iptables -A, aggiungi una regola alla fine dell'elenco di regole, quindi finirai con un elenco di regole simile al seguente:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     all  --  anywhere             anywhere

Poiché la REJECTregola viene prima della ACCEPTregola, viene innescata per prima, quindi l'inoltro non avverrà.

Sarà quindi necessario eliminare la REJECTregola anziché aggiungere una ACCEPTregola. Per eliminare la regola REJECT, eseguire

iptables -D FORWARD -j REJECT 

Per maggiori informazioni, leggi la manpage iptables.


18

Il -Aflag dice a iptables di aggiungere la regola alla catena, il che significa che finisce sotto la tua REJECTregola, e poiché la prima regola corrisponde, non viene mai usata.

Elencate le vostre regole iptables -L FORWARDe lo vedrete da soli. Per sbarazzarsi della regola aggiunta, eseguire

iptables -D FORWARD -j REJECT 

Fino a quando non ci saranno più tali regole nella catena.


1

Che ne dici di stabilire la fine della FORWARDregola per saltare in una nuova catena in cui sarà solo una regola. Potrebbe essere ACCEPTo REJECT. Dire...

iptables -N accept-chain
iptables -A accept-chain -j ACCEPT
iptables -A FORWARD -j accept-chain

Dopodiché, puoi cambiare questa regola in accept-chainqualcosa del genere

iptables -R accept-chain 1 -j REJECT

per disabilitare il traffico o -j ACCEPTper abilitare.

Anche ciò che conta per attivare e disattivare il routing

echo "0" > /proc/sys/net/ipv4/ip_forward

per disabilitare l'inoltro di pacchetti e "1"- per abilitare.


0

L'ordine è importante. Questo inserirà la tua regola in alto invece di aggiungere.

iptables -I FORWARD 1 -j ACCEPT

-Io per inserire e # 1 è la posizione

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.