特定のSRC IPに対してiptablesルールを使用する順序は何ですか?

特定のSRC IPに対してiptablesルールを使用する順序は何ですか?

数時間、特定のアドレスのトラフィックをブロックしたいと思います。私は使うfirehol私を支配するルール。

次のルールは、目標時間内のすべてのトラフィックをブロックします。

ACCEPT     all  --  anywhere          anywhere             ctstate NEW,ESTABLISHED TIME from 06:00:00 to 16:00:00 UTC

特定のIPに対して同じルールを変更する

ACCEPT     all  --  10.10.10.21          anywhere             ctstate NEW,ESTABLISHED TIME from 06:00:00 to 16:00:00 UTC
ACCEPT     all  --  anywhere             anywhere             ctstate NEW,ESTABLISHED

ブロックしないトラフィック10.10.10.21。順序が正しいようです(より具体的なものからより一般的なものまで)。何が欠けている可能性があるのだろうか。

(これはタイムアウトに関連する抜粋ですiptables -L。特定のIPに特定のルールを追加したときに変更されるルール(上記の時間以外のすべてのトラフィックをブロックする -working-ルールとは反対)

答え1

ACCEPTルールのみがあり、一部のトラフィックがブロックされている場合は、ルールのポリシーがDROPであることを意味します。したがって、最初の試みでは、明示的に承認されていないすべてのトラフィックが拒否されます。 2回目の試み返品明示的に承認されていないすべてのトラフィックを拒否しますが、2番目のルールはほとんどのトラフィックを許可します(常に許可する必要があるICMPエラーなど、許可する必要があるいくつかのエントリのみをブロックしますRELATED)。

最初の一致が適用されます。ルール 1 は、特定の時間枠内で 10.10.10.21 のトラフィックを許可します。ルール 2 は常に (ほぼ) すべてのトラフィックを許可します。ルール 1 はルール 2 のサブセットなので、重複します。

指定された期間に加えて10.10.10.21のトラフィックを拒否するには、ルール2を変更して10.10.10.21のトラフィックを除外するか、それらの間にトラフィックを拒否するルールを追加する必要があります。私は2番目のオプションがより明確だと思います。

iptables -A INPUT -j ACCEPT -s 10.10.10.21 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -m time --timestart 06:00:00 --timestop 16:00
iptables -A INPUT -j REJECT -s 10.10.10.21 -m conntrack --ctstate NEW,ESTABLISHED,RELATED
iptables -A INPUT -j ACCEPT -m conntrack --ctstate NEW,ESTABLISHED,RELATED
iptables -A INPUT -j REJECT

気づくブロックされたトラフィックには常にDROPではなくREJECTを使用する必要があります。。チェーンポリシーをDROPに設定できないため、最後に明示的なREJECTルールを追加しました。

関連情報