iptablesルールの追跡

iptablesルールの追跡

今日は初めてiptablesを掘り始めました。あまりにも無邪気で申し訳ありません。

ちなみに私が使っている

  • Ubuntu 22.04.4 LTS(ジャムゼリーフィッシュ)
  • iptables v1.8.7(nf_tables)
  • UFW 0.36.1

今私はufwが単にiptablesのラッパーであることを知っています(または最近学んだ)。私は後で何が起こっているのか知りたいと決心し、本を読んで探検し始めました。 iptablesがufwでパケットを処理する方法を理解できないようです。INPUTチェーンから始めます。私はこれが着信パケットが始まる場所であると信じています。

Chain INPUT (policy DROP)
target                   prot opt source   destination
ufw-before-logging-input all  --  anywhere anywhere
ufw-before-input         all  --  anywhere anywhere
ufw-after-input          all  --  anywhere anywhere
ufw-after-logging-input  all  --  anywhere anywhere
ufw-reject-input         all  --  anywhere anywhere
ufw-track-input          all  --  anywhere anywhere

私がすべてを正しく理解した場合、ここの最初の行は、ufw-before-logging-input all -- anywhere anywhereどこからでも任意のポートに入ってくるすべてのパケットがチェーンに沿って転送されることを意味しますufw-before-logging-input。受け入れ、削除、または拒否されずにそのチェーンから返された場合は、次のチェーンに渡されます。この場合、ufw-before-input受け入れ、削除、または拒否されるまで(つまり、遭遇するまでジョブは終了します)。

さて、すべてのパケットが転送される最初のチェーンを見てみましょうufw-before-logging-input

Chain ufw-before-logging-input (1 references)
target     prot opt source               destination

ここには本当に何もないのでufw-before-inputチェーンに進みましょう

Chain ufw-before-input (1 references)
target           prot opt source   destination
ACCEPT           all  --  anywhere anywhere
ACCEPT           all  --  anywhere anywhere     ctstate RELATED,ESTABLISHED
ufw-logging-deny all  --  anywhere anywhere     ctstate INVALID
DROP             all  --  anywhere anywhere     ctstate INVALID
ACCEPT           udp  --  anywhere anywhere     udp spt:bootps dpt:bootpc
ufw-not-local    all  --  anywhere anywhere
ACCEPT           udp  --  anywhere host.name    udp dpt:mdns
ACCEPT           udp  --  anywhere w.x.y.z      udp dpt:num
ufw-user-input   all  --  anywhere anywhere

これが私が混乱しているところです。最初の行は私たちがすべてのパケットを受け入れているように見えますがACCEPT all -- anywhere anywhere...私のファイアウォールルールは機能し、トラフィックをブロックします。

それでは、私がここで何を見逃しているのでしょうか?

(参考までにこの内容を下記に投稿してみてください。スタックオーバーフローしかし、彼らは私をここに送りました。 Google検索で他の場所でこのコンテンツが繰り返される場合に備えて、このコンテンツを含めてください。 )

答え1

それでは、私がここで何を見逃しているのでしょうか?

これ-vオプション~のため言葉が多い:

-v, --verbose

詳細な出力。このオプションlistコマンドにインターフェース名を表示させます。、ルールオプション(存在する場合)、TOSマスク。パケットおよびバイトカウンタもリストされます。 [...]

次のようなものを試したことがあります。

# iptables -L  ufw-before-input
Chain ufw-before-input (1 references)  
target            prot  opt  source    destination                                        
ACCEPT            all   --   anywhere  anywhere                                           
ACCEPT            all   --   anywhere  anywhere         ctstate RELATED,ESTABLISHED      
ufw-logging-deny  all   --   anywhere  anywhere         ctstate INVALID                  
DROP              all   --   anywhere  anywhere         ctstate INVALID
[...]

インターフェイスは表示されません。逆に-v:

# iptables -v -L ufw-before-input
Chain ufw-before-input (1 references)
pkts  bytes  target            prot  opt  in   out  source    destination                                        
   6    504  ACCEPT            all   --   lo   any  anywhere  anywhere                                           
  12   1032  ACCEPT            all   --   any  any  anywhere  anywhere         ctstate RELATED,ESTABLISHED      
   0      0  ufw-logging-deny  all   --   any  any  anywhere  anywhere         ctstate INVALID                  
   0      0  DROP              all   --   any  any  anywhere  anywhere         ctstate INVALID                  
[...]

ACCEPTルールは入力インターフェースに関するものであることがわかりますlo。無条件で許可されています。ループバック交通、そしてただloインターフェイスから。他のすべてはチェーンパトロールを続けます。

それにもかかわらず、この形式は特にQ&Aにルールセットを表示するときの再現性には適していません。特別な一致(たとえば、メモリ状態)など、一致または宛先の状態を確認することは依然として便利です。これらのいずれかを使用することをお勧めしますiptables -Sまたはiptables-save(フルルールセットまたは少なくともテーブル全体の場合)

# iptables -S ufw-before-input
-N ufw-before-input
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
[...]

iptables -S-v他の状態でカウンタを表示するオプションも許可されています。また、iptables-saveカウンターの表示にも使用してくださいiptables-save -c。保存および復元を許可する一連のルールに適した出力をiptables-save提供するように設計されています。追加のデバッグ情報を表示するためにwithを2回iptables-restore使用することもできます。-v-vviptables

関連情報