Perché iptables -F mi esclude dalla mia sessione ssh?

Nov 20 2020

Volevo aggiungere alcune regole a iptables da https://askubuntu.com/questions/37412/how-can-i-ensure-transmission-traffic-uses-a-vpn domanda e risposte per instradare il traffico dal programma torrent Trasmissione attraverso una VPN (surfshark nel mio caso).

Almeno due delle risposte utilizzano iptables -Fper svuotare le tabelle prima di aggiungere le regole personalizzate.

Una di queste risposte fa riferimento in modo specifico a un server headless (come il mio). Quindi sospetto che dovrebbe funzionare.

Ma se uso iptables -Fvengo immediatamente espulso dalla mia sessione ssh al server. Non riesco a digitare alcun nuovo comando sul terminale e devo riavviare il server per accedere nuovamente.

Ho un firewall in esecuzione sul server che consente la porta 22 a ogni IP.


Per chiarimenti aggiungerò alcuni output da prima e dopo aver applicato la risposta accettata:

Prima (avviso policy DROP):

     $ sudo iptables -xvnL
Chain INPUT (policy DROP 21 packets, 5628 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
     387    31969 f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
   27008 50413306 ufw-before-logging-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   27008 50413306 ufw-before-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
     153    26176 ufw-after-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
      21     5628 ufw-after-logging-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
      21     5628 ufw-reject-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
      21     5628 ufw-track-input  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
       0        0 ufw-before-logging-forward  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
       0        0 ufw-before-forward  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
       0        0 ufw-after-forward  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
       0        0 ufw-after-logging-forward  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
       0        0 ufw-reject-forward  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
       0        0 ufw-track-forward  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 7 packets, 324 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
    7130   870596 ufw-before-logging-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    7130   870596 ufw-before-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
     997   113175 ufw-after-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
     997   113175 ufw-after-logging-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
     997   113175 ufw-reject-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
     997   113175 ufw-track-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0      

 

Dopo:

 $ sudo iptables -L -v
Chain INPUT (policy ACCEPT 12648 packets, 12M bytes)

Risposte

3 DougSmythies Nov 20 2020 at 16:14

Sì, iptables -F chaincancellerà tutte le regole di iptables per quella catena, e quindi verrà utilizzata solo la regola della politica predefinita.

Sembra probabile che il criterio predefinito per i tuoi riferimenti fosse ACCEPT, mentre il criterio predefinito sul tuo computer lo è DROP.

Controlla tramite sudo iptables -xvnL. Se vuoi eliminare tutte le tue regole in una catena, ma mantenere la tua sessione ssh, cambia prima la politica predefinita ACCEPT. Puoi cambiarlo di nuovo in DROPdopo aver impostato le regole che desideri e aver confermato che i tuoi pacchetti ssh non si basano più sulla politica predefinita per passare.

sudo iptables -P INPUT ACCEPT

Potrebbe essere necessario anche sulla catena OUTPUT.