IPv6ピンホール:チュートリアルと例
IPv6はセキュリティ機能を内蔵しており、追加機能は不要です。認証ヘッダーとESP拡張ヘッダーがどのように暗号化、認証、リプレイ攻撃対策を実現するのかをご覧ください。
デントン千倉

クイックダウンロード:
IPv6のピンホール攻撃はIPv4よりも簡単で、NATがない場合にははるかに危険です。
-
IPv4では、NATは内部アドレスを隠すことでデフォルトのセキュリティ層として機能します。IPv6ではNATが完全に削除されるため、すべての内部デバイスがインターネットに直接アクセス可能になり、設定ミスのある脆弱性は即座に露呈します。
-
IPv6ピンホールを作成するのは、エッジルーターにアクセスリストを設定するのと同じくらい簡単です。特定のホストとポートへのあらゆる送信元からのトラフィックを許可し、それ以外のすべてのトラフィックを拒否します。
-
手動で設定された静的なピンホールは深刻なセキュリティリスクです。ピンホールは常に認証および認可メカニズムを使用して動的に開閉する必要があります。
-
ほとんどの場合、DMZまたはオフサイトホスティングはピンホールよりも優れた代替手段です。ピンホールは、他に有効な代替手段がなく、アクセス要件が厳しく制限されている場合にのみ使用してください。
IPv6ピンホール:チュートリアルと例
ネットワークにおいて、ファイアウォールのピンホールを作成するとは、企業ネットワーク外部のホストが、企業ネットワーク内部にあるWebサーバーなどのリソースにアクセスできるようにする手法です。「ピンホール」とは、保護されていないトランスポート層の宛先ポートを指し、これにより受信トラフィックがファイアウォールを通過できるようになります。
IPv4環境では、ネットワークアドレス変換(NAT)はほぼ常に企業ネットワークのエッジで実装されます。この場合、ポートフォワーディングと呼ばれる手法が用いられますが、これは一種のピンホールとも考えられています。
ファイアウォールやネットワークエッジのピンホールを実装する際には、セキュリティが常に最大の懸念事項となります。ピンホールとは、TCPまたはUDPで使用される65,000以上のポートのうちの1つのポートのことです。そのため、攻撃者が開いているポートを1つ見つけるのは、干し草の山から針(またはピン)を探すようなもので、非常に難しいように思えるかもしれません。しかし、今日では攻撃者がピンホールを発見するのは非常に簡単なので、そのような構成では適切なセキュリティ対策を講じる必要があります。
ピンホールの概念は、IPv6においてもIPv4においても基本的に同じです。しかし、IPv6の特性上、NATが排除されるため、ピンホールは比較的容易になる一方で、セキュリティ上の問題も発生しやすくなります。
この記事では、ファイアウォールのピンホール全般、それに伴うセキュリティ上の懸念事項と対策、そしてIPv6のピンホールを効率的かつ安全に行う方法について考察します。
主要概念の要約
| 概念 | 詳細説明 |
|---|---|
| ファイアウォールピンホール | ファイアウォールのピンホールとは、ファイアウォール上で保護されていないトランスポート層ポートを設定する行為のことです。 |
| NATによるピンホール | NAT環境内でのピンホールは、ポートフォワーディングとも呼ばれます。 |
| IPv6によるピンホール | IPv6ピンホールは、パブリックIPv6アドレスが企業ネットワーク内で日常的に使用されているため、簡単です。 |
| IPv6ピンホール攻撃のセキュリティ上の懸念 | IPv6ピンホールは、内部のIPv6ホストを悪意のある攻撃にさらす可能性がある。 |
| ピンホール攻撃のためのセキュリティ技術 | ピンホール処理には、ユーザー認証と認可を実装することでピンホールを動的に開閉するメカニズムが伴わなければならない。 |
説明
ネットワークエッジのセキュリティ確保
企業ネットワークは、PC、無線アクセスポイント、IP電話、カメラ、プリンター、その他のネットワーク機器などの内部ホストが接続された1つ以上のローカルエリアネットワーク(LAN)で構成されます。これらのLANは、1つ以上のインターネットサービスプロバイダ(ISP)を介してインターネットに接続されています。ISPに接続する企業ネットワーク機器は、通常、ファイアウォールなどのセキュリティ機器、ルーターなどのエッジデバイス、またはその両方の組み合わせです。ネットワークのこの部分はエッジネットワークと呼ばれます。
エッジネットワークの役割の一つは、インターネットからの悪意のある攻撃を阻止することです。これは、インターネットから発信され、企業ネットワークへの侵入を試みるトラフィックを拒否することによって実現されます。

ピンホールとは何ですか?
ネットワークのエッジでセキュリティポリシーを作成することは、インターネットから発生するさまざまな悪意のある攻撃から企業ネットワークを保護する上で不可欠です。しかし、正当なインターネットユーザーが企業ネットワーク上の特定のリソースにアクセスできるようにしたい場合はどうすればよいでしょうか?次の図をご覧ください。

社内ネットワーク上に、パブリックIPv4アドレス(インターネット上で公開されているアドレス)を持つWebサーバーがあるとします。図に示すように、正当なユーザーがそのサーバーにアクセスしようとしています。エッジネットワークデバイス(通常はファイアウォール)は、通常であればトラフィックをブロックする場合でも、そのトラフィックがファイアウォールを通過してWebサーバーに到達することを許可する必要があります。
ここでピンホーリングの出番です。ファイアウォールは、WebサーバーのIPアドレス宛てのトラフィックをすべて許可するように設定できます。 特定のTCPポートで例えば、HTTP用のポート80など、ファイアウォールを通過して目的の宛先に到達するための通信経路です。ピンホールは、このIPアドレスとTCPポートの組み合わせに準拠するトラフィックのみを許可し、それ以外のトラフィックはすべてブロックします。
NATについてはどうでしょうか?
IPv4環境では、企業ネットワークの大部分は、以下のようなIPv4プライベートアドレスを使用する内部デバイスを備えています。 RFC 1918このような場合、エッジネットワークデバイスはNATを実装し、プライベートアドレスをパブリックなルーティング可能なアドレスに変換します。NATは、インターネットから発信された着信トラフィックについては、そのようなトラフィックを変換するように特別に設定されていない限り、通常は拒否します。
NAT環境で設定されるピンホールは、より一般的な名称であるポートフォワーディングとして知られています。例えば、この改訂版の図をご覧ください。

ウェブサーバーの内部IPアドレスは10.10.10.1で、NATを実行するエッジネットワークデバイスの外部インターフェースアドレスは147.52.1.1です。このファイアウォールには、147.52.1.1:8080宛てのすべてのトラフィックの宛先アドレス/ポートの組み合わせを10.10.10.1:80に変換するNATルールが設定されています。そのため、外部インターフェースのポート8080は、ウェブサーバーのポート80にポートフォワーディング(ピンホール)されています。これにより、正当なユーザーは、ピンホールされた適切なポート番号を使用する方法を知っている場合にのみ、ウェブサーバーにアクセスできます。
ピンホールを固定する
鋭い読者なら、この構成が全く安全ではないことに気づくでしょう。NATを使用するかどうかにかかわらず、80番や8080番といったポート番号はよく知られており、攻撃者はセキュリティ上の脆弱性を探るためにこのポートをテストします。たとえ53487番のようなランダムな値を選んだとしても、同じ問題が発生します。なぜなら、正当なユーザーはこのポート番号を使う必要があるため、悪意のある攻撃者はそれを発見してしまうからです。ポートスキャンユーティリティを試している好奇心旺盛な人でも、TCPポートとUDPポートの全範囲を簡単にスキャンして脆弱性を探し出し、「知られていない」ポート番号を文字通り数秒で発見することができます。
ピンホールの作成、維持、および閉鎖を動的に行うためには、追加のセキュリティ機能を適用する必要がある。
ピンホールを用いたIPv6の使用
IPv6の登場は、ピンホール攻撃に新たな次元をもたらしました。IPv6の広大なアドレス空間はNATの必要性をなくし、世界中のあらゆる内部ネットワーク上のあらゆるホストがインターネット上でルーティング可能なパブリックIPv6アドレスを持つことができるため、ピンホール攻撃が大幅に簡素化されます。ネットワークのエッジにあるセキュリティデバイスで、どのトランスポート層ポートを通過させるかを指定するだけで、あらゆる内部ホストにピンホールを開くことができます。ポートフォワーディングは不要なので、時に複雑なNAT設定が不要になります。
本質的に、IPv6のピンホーリングはIPv4のピンホーリングとは逆のものです。IPv4では特定のアドレスに対してNATでピンホールを開く必要がありますが、IPv6のピンホーリングは、IPv6プロトコル自体が到達可能性を保証するため、特定のデバイスやプロセスへの不要なトラフィックをブロックするものと考えることができます。
同時に、NATの削除によりセキュリティ上の懸念が大幅に増加します。最も一般的な実装であるNATの副作用として、他のセキュリティ機能が設定されていない場合、インターネット上の攻撃者が内部ホストに到達することが一般的に困難になります。NATがないため、潜在的な攻撃者に対するこの追加的な抑止力がなくなり、ピンホールの開設はこれまで以上に慎重に行う必要があります。なぜなら、この障害は他の機能の副作用ではありますが、もはや存在しないからです。
IPv6ピンホールの実装
ピンホールの適切な設定方法は、使用するセキュリティデバイスによって大きく異なります。ファイアウォール、侵入検知システム(IDS)、侵入防御システム(IPS)、あるいは単なるルーターに設定されたアクセスリストなどが考えられます。以下の例では、特定のTCPポート経由でのWebアクセスを許可するように設定されたCiscoルーター上のIPv6アクセスリストの簡単な設定方法について説明します。
この例では、以下のトポロジーを使用します。

エッジルーターの外部インターフェースに適用されるアクセスリストを作成し、受信方向においてポート18080以外のすべてのWebサーバーへのアクセスをブロックします。これにより、エッジルーターのポート18080でWebサーバーへの接続を一時的に遮断します。
そのためには、まずアクセスリストを作成し、WebServerPinhole という名前を付けます。以下のように記述します。
次に、以下の条件を満たす交通を許可します。
- TCPプロトコルを使用する
- 送信元は任意の IPv6 アドレスです
- 宛先アドレスは2001:ABCD:0:10::1、宛先TCPポートは18080です。
EdgeRouter(config-ipv6-acl)#permit tcp any host 2001:ABCD:0:10::1 eq 18080
次に、その他のすべての種類のトラフィックをブロックします。これは、次のアクセスリストエントリを追加し、アクセスリスト設定モードを終了することで実行できます。
EdgeRouter(config-ipv6-acl)#deny any any
EdgeRouter(config-ipv6-acl)#exit
EdgeRouter(config)#
Ciscoデバイスはデフォルトで、すべてのアクセスリストの最後に暗黙の拒否ステートメントを必ず含め、それ以外のすべてをブロックしますが、ここでは分かりやすさのために明示的に記述しています。
最後に、このアクセスリストをインターネット接続インターフェースの受信方向に対して適用します。
EdgeRouter(config)#interface gigabitethernet 0/1
EdgeRouter(config-if)#ipv6 traffic-filter WebServerPinhole in
インターネット上にブラウザを備えた実際のホストがない場合、Linuxユーティリティを使用できます。 netcat どのポートが開いていて、どのポートが開いていないかをテストします。インターネットホストがLinuxデバイスであると仮定します。以下のコマンドを実行します。
$ nc -vz 2001:ABCD:0:10::1 18080
2001:ABCD:0:10::1 18080 open
-v オプションは「詳細表示」を意味し、-z オプションはデータ交換を行わず、開いているポートのみを検出することを意味します。
ポートが実際に開いていることに注意してください。他のポートをチェックしようとすると、次の結果が得られます。
$ nc -vz 2001:ABCD:0:10::1 80
2001:ABCD:0:10::1 80 80 (http) : Connection refused
ピンホールが正常に作成されました。
この例の目的は、ピンホーリングの概念とメカニズムを示すことです。実際の運用環境では、未確立のTCPセッションに属するすべてのTCP非SYNパケットを破棄したり、インターネットからの送信元アドレスとして認識されるべきではないIPv6ユニークローカルアドレスをフィルタリングしたりするなど、さらに多くの予防措置を講じる必要があります。
さらに、これは手動で設定されたピンホールです。次のセクションで説明するように、手動で設定されたピンホールは、特にネットワークのエッジにおいては、本番環境では可能な限り避けるべきです。
推奨事項とベストプラクティス
ピンホーリング、特にIPv6環境における実装は、プロトコルの性質上避けられないセキュリティ上の懸念事項を考慮し、細心の注意を払って行う必要があります。以下のセクションでは、実装時に留意すべき最も重要な推奨事項とベストプラクティスについて説明します。
ピンホール加工は控えめに使用してください
- ピンホール法は、他に方法がない場合、または機器の不足や費用が高額すぎるなどの理由で代替方法が現実的でない場合にのみ使用すべきである。
- これは、インターネット全体に公開したい内部リソースが1つか2つしかない場合にのみ使用すべきです。
- これはリスクの低いリソースに適用されるべきであり、金融取引や機密情報または個人データを含むデータベースなど、高度なセキュリティ通信を必要とするサービスには適用されるべきではない。
ピンホールセキュリティの実装
ピンホールは、適切なセキュリティレベルなしに手動または静的に設定してはなりません。そのような状況では、インターネットに対して常に脆弱なポートが露出することになり、攻撃者は比較的すぐにそれを見つけて侵害してしまうでしょう。ピンホールは常に認証と認可技術を使用して動的に作成する必要があります。繰り返しになりますが、NATの存在により、IPv4では次のような技術が使用されます。
- TCPおよびUDPのホールパンチング: NATルーターの背後にある2つのホストを、通常はインターネット経由で接続するために使用される技術。これは、ピアツーピアアプリケーションで特に役立ちます。
- NATトラバーサル(NAT-T): NATを使用するゲートウェイ間でIP接続を確立および維持するために使用される手法。
- ユニバーサルプラグアンドプレイ(UPnP): NATルーターを介したトラフィックを許可または拒否するために、ポートマッピングを動的に追加および削除するために使用できる一連のネットワークプロトコル。
これらの技術は主に、IPv4の使用に伴うNATの問題を解決することを目的としています。IPv6のピンホール処理には、より高度なアプリケーションが必要となり、ユーザー認証を利用してピンホールを開き、不要になったときに閉じる必要があります。
問題は、IPv6 用のそのようなメカニズムがまだ少ないことです。IPv4 NAT が提供していたセキュリティレベルを再現する 1 つの方法は、IPv6 の NAT に相当する NAT66 を使用することです。これは、パブリック グローバル ユニキャスト IPv6 アドレスを、定義どおりのユニーク ローカル アドレス (ULA) に変換します。 RFC 4193これらは IPv6 の IPv4 のプライベート アドレスに相当します (RFC 1918) ただし、これは選択肢の一つではありますが、 NATをネットワークに再導入することで生じる問題は、そのメリットをはるかに上回る。.
ピンホーリングは、次世代ファイアウォール(NGFW)と組み合わせて適用することも可能です。最新の高度なファイアウォールは、パケットをファイアウォールを通過させる前に、ディープパケットインスペクションを実行して特定のパケットの性質を判断できます。パケットの内容は、レイヤー7(アプリケーション層)まで検査され、パケットが有効で正当な送信元からのものか、疑わしい送信元からのものかが判断されます。
ピンホールの代替手段
セキュリティ上の懸念がそれほど大きくない場合を除き、特にIPv6を使用している場合は、インターネット上のユーザーが内部リソースにアクセスできるようにするには、ピンホール以外の方法を使用する方がほぼ常に望ましい。
一つの選択肢として、企業ネットワークのエッジに非武装地帯(DMZ)を構築し、インターネットに接続するすべてのサービスをその中に配置する方法があります。DMZとは、許容できるレベルのセキュリティを維持しながら、インターネットからこれらのサービスへのアクセスを可能にするために特別に設計されたネットワークセグメントです。
もう一つの選択肢は、外部委託先のデータセンターでサービスをホスティングすることです。これは、顧客に定期的にインターネット上で提供したいリソースがある場合に特に検討する価値があります。こうしたデータセンターには、データとサービスの安全性を確保するために必要なセキュリティ対策がすべて整っています。
結論
ファイアウォールのピンホールは、内部ネットワークへのアクセスを制限しつつセキュリティを維持するという、しばしば困難な問題に対する迅速かつ簡単な解決策です。IPv4とNATの時代は、このプロセスはより複雑で、機能させるために様々な追加プロトコルの開発が必要でした。IPv6の登場とそれに伴うNATの不要化により、ピンホールははるかに容易になりましたが、セキュリティリスクも大幅に増加しました。
適切な予防措置を講じることで、ピンホールを正しく安全に実装することが可能です。しかし、可能な限り、ネットワーク内のリソースへのユーザーアクセスを許可する際には、より適切な業界標準の方法を用いることが常に最善策です。
章
ニュースレター
最新情報のメール配信を登録
最新のブログ、ホワイトペーパー、電子ガイドなどを直接受信ボックスにお届けします。
シェア
ピンホールが脆弱性となる前に、IPv6ネットワークを監視しましょう。
IPv6ピンホーリングはNATの安全網を無効化するため、監視を怠るとネットワークのエッジが無防備な状態になります。ネットワーク全体で何が起こっているかをリアルタイムで正確に把握しましょう。
よくあるご質問
IPv6ピンホーリングとは何ですか?また、IPv4ピンホーリングとはどのように異なりますか?
IPv6ピンホールとは、IPv6ファイアウォールで特定のトランスポート層ポートを開放し、外部のインターネットユーザーが内部リソースにアクセスできるようにする手法です。NAT(ポートフォワーディング)と組み合わせて使用されることが多いIPv4ピンホールとは異なり、IPv6ピンホールはNAT変換なしでパブリックIPv6アドレスに直接作用します。これにより設定は容易になりますが、内部ホストがNATという追加の障壁なしにインターネットに直接アクセス可能になるため、セキュリティリスクが高まります。
IPv6のピンホーリングは、IPv4のピンホーリングよりも危険なのはなぜですか?
IPv4ネットワークでは、NATによって内部IPアドレスがインターネットから自然に隠蔽され、暗黙のセキュリティ層が提供されます。IPv6では、すべてのホストがパブリックなルーティング可能なアドレスを持つことができるため、内部アドレスを隠蔽するNATは存在しません。つまり、ファイアウォールルールの設定ミスや脆弱性があると、内部ホストがインターネットに直接公開され、攻撃を遅らせたり複雑化したりする追加のNAT障壁が存在しないことになります。
CiscoルーターでIPv6ピンホールを作成するにはどうすればよいですか?
Ciscoルータで、特定のホストとポートへのトラフィックを許可し(例:「permit tcp any host 2001:ABCD:0:10::1 eq 18080」)、それ以外のトラフィックを拒否するIPv6アクセスリストを作成します。次に、「ipv6 traffic-filter」コマンドを使用して、インターネットに接続するインターフェイスに受信方向のアクセスリストを適用します。これにより、許可されたルールに一致するトラフィックのみが内部ホストに到達できるようになり、その他の受信トラフィックはすべてブロックされます。
IPv6ピンホールに代わる最良の選択肢は何ですか?
IPv6ピンホールに代わる推奨される対策としては、ネットワークエッジにDMZ(非武装地帯)を実装し、インターネットに接続するサービスをアクセス制御された別のネットワークセグメントに配置する方法、または専用のセキュリティインフラストラクチャを備えたオフサイトデータセンターでサービスをホスティングする方法があります。どちらの方法も、外部ユーザーがリソースにアクセスできるようにしながら、ピンホールよりも強力なセキュリティを提供します。ピンホールは、代替手段が現実的ではなく、公開されるリソースのリスクが低い場合にのみ使用すべきです。
デントン・チクラは、テクニカルライターであり、長年にわたりオブザーバビリティを推進してきた人物です。彼は、サイト信頼性エンジニアやエンジニアリングチームがインターネットの回復力を強化するツールや機能を発見できるよう支援することに注力しています。監視、パフォーマンス、インフラストラクチャの交差点で活動し、複雑なシステムをより理解しやすく使いやすいものにすることで、高度な技術的詳細と実際の運用とのギャップを埋めています。彼の目標は、チームがより迅速に構築し、問題を早期に発見し、よりスマートに復旧できるよう支援し、最終的にはインターネットをすべての人にとってより良く、より信頼性の高い場所にすることです。
免責事項: このブログで述べられている見解は著者の見解であり、LogicMonitor またはその関連会社の見解を必ずしも反映するものではありません。
© LogicMonitor 2026 | 無断複写・転載を禁じます。 | ここで言及されているすべての商標、商号、サービス マーク、およびロゴは、それぞれの会社に帰属します。




