Dlaczego iptables -F wyrzuca mnie z mojej sesji ssh?

Nov 20 2020

Chciałem dodać kilka reguł do iptables z https://askubuntu.com/questions/37412/how-can-i-ensure-transmission-traffic-uses-a-vpn pytania i odpowiedzi dotyczące kierowania ruchu z programu torrent Transmisja przez VPN (w moim przypadku surfshark).

Co najmniej dwie odpowiedzi służą iptables -Fdo opróżniania tabel przed dodaniem reguł niestandardowych.

Jedna z tych odpowiedzi odnosi się konkretnie do serwera bezgłowego (takiego jak mój). Więc podejrzewam, że to powinno działać.

Ale jeśli używam iptables -F, natychmiast wyrzucają mnie z sesji ssh na serwer. Nie mogę wpisać żadnego nowego polecenia na terminalu i muszę ponownie uruchomić serwer, aby się ponownie zalogować.

Mam firewall na serwerze, który zezwala na port 22 do każdego adresu IP.


Dla wyjaśnienia dodam wyniki sprzed i po zastosowaniu zaakceptowanej odpowiedzi:

Przed (uwaga 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      

 

Po:

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

Odpowiedzi

3 DougSmythies Nov 20 2020 at 16:14

Tak, iptables -F chainspowoduje opróżnienie wszystkich reguł iptables dla tego łańcucha i dlatego zostanie użyta tylko domyślna reguła zasad.

Wydaje się prawdopodobne, że domyślną zasadą dla odniesień była ACCEPTzasada, podczas gdy domyślną zasadą na komputerze jest DROP.

Sprawdź przez sudo iptables -xvnL. Jeśli chcesz usunąć wszystkie reguły w łańcuchu, ale zachować sesję ssh, zmień domyślną politykę na ACCEPTpierwszą. Możesz zmienić to z powrotem na DROPpo ustaleniu reguł, które chcesz, i potwierdzeniu, że twoje pakiety ssh nie są już zależne od domyślnej polityki, aby się przedostać.

sudo iptables -P INPUT ACCEPT

Możesz go również potrzebować w łańcuchu OUTPUT.