iptablesはDENYをキャッチしますが、チェーン内のその前のACCEPTの場所ではキャッチしません。

iptablesはDENYをキャッチしますが、チェーン内のその前のACCEPTの場所ではキャッチしません。

私の iptables ファイアウォールには奇妙な問題があります。2 つの連続した同一のルール (最初のルールが で、ACCEPT2 番目のルールが )を設定するとDENY、着信パケットが拒否され (そのようにログに記録されます) ます。

着信パケットが最初のルールでは無視され、2 番目のルールではキャッチされるというのはどういうことでしょうか?

fwbuilder ビューはここにあります: ここに画像の説明を入力してください

ダンプは次のとおりですiptables:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state     RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain In_RULE_0 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0     level 6 prefix "FW RULE 0 -- ACCEPT "
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain In_RULE_1 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 6 prefix "FW RULE 1 -- DENY "
DROP       all  --  0.0.0.0/0            0.0.0.0/0  

ルールだけでも試してみましたACCEPTが、引っかかりませんでした。

私が見つけた唯一の違いは、DENYルールが ではないことですstate NEWが、これは私がすでに構成していて正常に動作している数十のファイアウォールでも同じです。

答え1

次の点に注意してください: iptables オプションを持つルールは、-Iルールをリストの先頭に配置します。 オプションを持つルールは、-Aルールをリストの末尾に配置します。

あなたの場合: 両方の (ほぼ同一の) iptables ルールで「-I」を使用した可能性があります。2 番目のルールはリストの先頭に最初のルールの前に挿入され、そのため、ルールが次の順序で含まれるルール リストが作成されます:

match -s x.x.x.x action DROP
match -s x.x.x.x action ACCEPT

パケットは両方のルールに一致するため、DROP実際の動作テーブル (RAM 内に存在する) の順序で最初のルール ( ) が有効になります。順序は、iptable 構成ファイル内の順序とは関係ありません。

順序を入れ替えると、結果が異なります。

答え2

わかりました。私の FW は完全に正常でしたが、仮想ホストの設定が間違っていました。エラーはありませんでしたが、iptables は許可されていませんでした。許可すると、FW は動作するようになりました... iptables レベルでエラーが見つからないのも不思議ではありません... ご協力ありがとうございました :)

答え3

を使用する場合、 iptables はIn_RULE_0新しい接続にのみ適用されますstate NEW

また、これは INPUT チェーン (サーバーへのパケット) ではなく、FORWARD チェーン (サーバーを通過するパケット) に設定されます。

どのようにテストしていますか? サーバーの特定のインターフェースを ping していますか?

以下の完全な出力を投稿できますか:

iptables -vnL

INPUTチェーン上のトラフィックをログに記録するには、次のルールを試してください(サーバーインターフェースへのping)。

iptables -I INPUT 1 -j In_RULE_0

関連情報