今日は初めて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
オプション~のため言葉が多い:
詳細な出力。このオプション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
-vv
iptables