イングレスフィルタリングとは
イングレスフィルタリング(ingress filtering)とは、 送信元を偽装したIPパケットの転送を防ぐ手法の一つで、 RFC2827 (BCP 38)で解説されています。
インターネットでのサービス妨害(DoS)攻撃手法には、 IPパケットの送信元アドレスを偽装して行うものがあります。
例えば、TCP SYNフラッディング(TCP SYN flooding)と呼ばれる攻撃では、 攻撃者は送信元アドレスを偽装したSYNフラグの立ったTCPパケットを、 標的となるホストに送信します。 パケットを受け取った標的ホストはSYN/ACKフラグを立てたパケットを送信元に返送しようとしますが、 送信元アドレスが偽装されているため、正しく返送を完了することができません。 もし、この攻撃で多数の偽装パケットを受け取った場合、 標的ホストはTCPの接続待ち等の処理でCPUやメモリ等のコンピュータ資源を消費させられることになり、 その結果サービス妨害(DoS)攻撃が成立します。
さらに、偽装した送信元アドレスが、 攻撃者とは別の第三者が利用している正規のアドレスだった場合、 標的ホストは攻撃者とは別のそのアドレスに対してSYN/ACKパケットを返送しようとするため、 結果として第三者に対して標的ホストから攻撃してしまうことになり、 被害者である標的ホストが、同時に他者への攻撃者へと仕立てられてしまうことにもなってしまいます。
このような攻撃を防ぐため、推奨されているのがイングレスフィルタリングです。 イングレスフィルタリングは、 イングレス(ingress; 進入)の文字通り自ネットワークからルータに入ってくるパケットに対するフィルタリングで、 あるパケットを転送する時に、そのパケットの送信元アドレスが、 ネットワークに割り当てたアドレスのものかどうかを確認し、 割り当てたアドレスであればパケットを転送し、 そうでないものは拒否するというものです。 これを正しくルータ等のネットワーク機器で設定すれば、 送信元アドレス偽装による攻撃を防ぐことができます。
送信元アドレスを偽装した攻撃の例: 攻撃者のネットワーク →→→ ルータX → ISP-A [192.0.2.0/24] ↓ ↓ 標的ホストのネットワーク ← ルータY ← ISP-B [198.51.100.0/24] このようなネットワーク構成の時、ルータXにイングレスフィルタを 設定すれば攻撃者は送信元を偽装したパケットを送り出すことができ ません。 (送信元アドレスが192.0.2.0/24でないパケットは「攻撃者のネット ワーク」から「ISP-A」や「ISP-B」へ転送されない)
BCP 38では、世界中のネットワーク管理者が、 このイングレスフィルタを設定することが推奨されています。
■参考
Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing
<http://tools.ietf.org/html/bcp38>