iptables – Cancellare tutte le regole PREROUTING con un indirizzo di destinazione specifico

Ho uno script che aggiunge le regole iptable PREROUTING. Tutti hanno lo stesso per affrontare. Quando eseguo questo:

iptables --list PREROUTING -t nat 

Vedo l'output come questo:

  DNAT tcp -- anywhere 165.193.122.18 tcp dpt:https to:192.168.2.1:443 DNAT tcp -- anywhere 63.135.91.11 tcp dpt:https to:192.168.2.1:443 DNAT tcp -- anywhere 63.135.90.224 tcp dpt:https to:192.168.2.1:443 

Sembra che dovrei essere in grado di abbandonare tutte queste regole scrivendo un command come questo …

 "drop all PREROUTING rules that go to 192.168.2.1:443" 

Quindi, guardando le opzioni per itables sembra che ho bisogno di utilizzare l'opzione -D. Ma non conosco il rulenum per darlo. 🙁

Quindi, probabilmente ho bisogno di interrogare le regole esistenti, grep per limitarlo alla destinazione 192.168.2.1:443 e eseguire -D passando il rulenum per ognuno. Non ho idea di come farlo. Qualsiasi aiuto sarebbe apprezzato.

Grazie!

EV

  • Come faccio a utilizzare IPTABLES per creare un passo HTTPS (443) attorno a Squid?
  • IP multipli, un'interface - come configurare la connessione in output con diversi IP?
  • I pacchetti sono bloccati da iptables sulla port 22
  • SNAT in IP6Tables
  • Perché iptables improvvisamente bloccava HAProxy
  • Regola del firewall per consentire solo Postfix di submit e-mail tramite SMTP sulla port 25
  • Arresti gli attacchi DoS con una regola di tabelle IP?
  • Come posso bloccare tutte e tre le porte in Ubuntu?
  • 4 Solutions collect form web for “iptables – Cancellare tutte le regole PREROUTING con un indirizzo di destinazione specifico”

    Qualcosa come questo:

     #!/bin/bash for line_num in $(sudo iptables --line-numbers --list PREROUTING -t nat | awk '$7=="to:192.168.2.1:443" {print $1}') do # You can't just delete lines here because the line numbers get reordered # after deletion, which would mean after the first one you're deleting the # wrong line. Instead put them in a reverse ordered list. LINES="$line_num $LINES" done # Delete the lines, last to first. for line in $LINES do sudo iptables -t nat -D PREROUTING $line done unset LINES 

    Potrebbe essere necessario regolare il numero di field in awk se non corrisponde.

    Puoi semplificare l'inversione di linea con tac:

     #!/bin/bash for line in $(sudo iptables --line-numbers --list PREROUTING -t nat | awk '$7=="to:192.168.2.1:443" {print $1}' | tac) do # You can't just delete lines here because the line numbers get reordered # after deletion, which would mean after the first one you're deleting the # wrong line. Instead put them in a reverse ordered list. sudo iptables -t nat -D PREROUTING $line done 

    È ansible utilizzare il seguente un-liner:

     sudo iptables -S | grep $pattern | cut -d " " -f 2- | xargs -L1 sudo iptables -D 

    Dove $ pattern è il tuo model desiderato.

    Vi consiglio di echeggiare i risultati di questo command, per evitare drammi

    Usare --line-numbers per visualizzare il numero della regola, grep e awk it e lo avete.

     # iptables -vnL -t nat --line-numbers |grep 10.1.1.0|awk '{print $1}' 1 

    Puoi quindi utilizzare for cancellare tutte le regole corrispondenti a un determinato IP.

     # for rule in $(iptables -vnL -t nat --line-numbers |grep 10.1.1.0|awk '{print $1}'); do iptables -D INPUT $rule; done 

    Ricorda che questi numbers sono mostrati per tabella, quindi potrebbe essere necessario limitare il command di elenco per tabella e cancellare uno per uno.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.