誰かがloopback
インターフェイスへのトラフィックをフィルタリングするための次のルールを説明できますか?
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
私がそれを解釈する方法:
loopback
へのすべての着信パケットを受け入れます。
loopback
宛てでない127.x.x.x.x
からのすべての着信パケットを拒否します。
これらのルールの実用的な用途は何ですか? 1の場合、これはloopback
へのすべてのパケットが追加のフィルタリングを通過する必要がないことを意味しますか? loopback
への着信パケットが外部ソースからのものである可能性はありますか?
ルールの意味はまさにあなたが説明していることです、
1)ループバックインターフェイスからアクセスされるすべてのパケット。
2)他のソースから受け入れられたループバックアドレスを持つパケットはありません。
ループバックインターフェイスからのデータ自体が追加のフィルタリングを通過する必要があるという意味ではありません。それが何を意味するかというと、ルール2)は、他のインターフェイスからのループバックアドレスを持つ偽造/スプーフィングされたパケットを防止しようとしているということです。
最初のルールは、ループバックインターフェイスに到達するすべてのトラフィックを受け入れるために必要です(他のホストからのトラフィック-LANまたはインターネット-実際の物理NICに到達)
だが!ルールが完了していません。デフォルトの出力ポリシーがある場合は、すべてドロップします。
iptables -P OUTPUT DROP
ループバックインターフェイスはトラフィックを受け入れることができますが、出力ポリシーで許可されていないため、システムはループバックからトラフィックを送信できません。
このため、出力ポリシーを定義する必要があります。
iptables -P OUTPUT ACCEPT
または、ループバックインターフェイスのみのルールを定義します。
iptables -A OUTPUT -o lo -j ACCEPT
2番目のルールは、ループバックインターフェイスではない(LANインターフェイスやインターネットからなど)に到達し、ソースアドレスがループバックであるパケットをドロップするために必要です。これはスプーフィング対策です。
ホストにインターネットに直接接続されているインターフェースがある場合、このインターフェースへのプライベート送信元アドレスを持つパケットの受信を防ぐルールを追加できます。
192.168.0.0/16
ネットワークの例:
iptables -A INPUT -s 192.168.0.0/16 -j DROP
追加の質問に対する回答:
つまり、着信、転送、発信のすべてのトラフィックが許可されます。着信トラフィックと転送トラフィックを必要なものだけに制限することが重要です。
OK。デフォルトでは、すべてのトラフィック(出力、入力、転送)を許可します。しかし、システムがデフォルトのルールを使用しない場合はどうなりますか?デフォルトのルールが変更され、これを忘れた場合はどうなりますか?このため、各iptablesスクリプトでデフォルトルールを設定することをお勧めします。
iptables -P OUTPUT ACCEPT
Iptablesによると、デフォルトのポリシーを設定してすべてを受け入れ、最後のルールのすべてのトラフィックを(必要に応じて)拒否することをお勧めします。
#その後、それらを拒否します。
-A入力-j拒否
-Aフォワード-j REJECT
-A出力-j拒否