GRE(Generic Routing Encapsulation)とAH(Authentication Header)は、異なるプロトコルですが、組み合わせて使用することができ、特にIPsec環境でセキュアなトンネルを構成する際に重要な役割を果たします。以下では、GRE と AH の組み合わせについて解説し、それがどのようにセキュリティを強化するかを説明します。
GRE と AH の概要
-
GRE (Generic Routing Encapsulation):
- GRE は、任意のネットワークレイヤプロトコル(IPv4、IPv6、または非IPプロトコルなど)をカプセル化してトンネリングするためのプロトコルです。
- 主に、異なるネットワークをトンネルを使って接続し、経路情報やデータを一括して送信する際に使用されます。
- GRE トンネルは、セキュリティ機能を持たないため、暗号化や認証などの追加のセキュリティ対策を行わないと、データが平文で送信されることになります。
-
AH (Authentication Header):
- AH は、IPsec(Internet Protocol Security)の一部で、パケットの認証と整合性を確保するために使用されるプロトコルです。
- AH は、パケットの送信元認証と改ざん防止を提供します。具体的には、送信元の正当性を確認し、パケットが途中で改ざんされていないことを検証します。
- 暗号化機能は持たないため、データの機密性(秘匿性)は提供しませんが、改ざん防止と認証(Integrity & Authentication)を行います。
GRE における AH の役割
GRE と AH を組み合わせることで、GRE トンネルを通じて送信されるパケットの認証と整合性を確保できます。特に、IPsec トンネルの一部として使用されることが一般的です。
GRE と AH の組み合わせのメリット
-
パケットの認証と改ざん防止:
- AH を GRE トンネルに適用することで、トンネルを通過するパケットの送信元を認証し、途中でパケットが改ざんされていないことを保証します。
- AH は、パケット全体(ただし、一部のIPヘッダフィールドを除く)に対してハッシュ(HMACなど)を計算し、受信側は同じハッシュを計算して一致を確認することで、パケットの完全性を確認します。
-
送信元認証:
- AH により、送信元IPアドレスやパケットに含まれる情報の正当性を確認できるため、信頼できない送信元からの不正なパケットを防ぐことができます。
-
軽量なセキュリティ対策:
- AH は暗号化を行わないため、CPU の負荷が比較的軽く、暗号化よりもパケットの整合性や送信元の認証を重視する環境に適しています。
- パフォーマンスを優先しつつ、パケットの改ざん防止を行いたい場合に有効です。
GRE + AH の設定例
GRE トンネルに AH を適用するには、IPsec トンネルを GRE トンネルに適用する必要があります。これを実現するには、Cisco 機器の設定を使用した以下の例を参照してください。
bash
! GRE トンネルの設定
interface Tunnel0
ip address 10.1.1.1 255.255.255.0
tunnel source GigabitEthernet0/0
tunnel destination 192.168.1.1
tunnel mode gre ip
! IPsec の設定 (AH を使用)
crypto isakmp policy 1
encr aes
authentication pre-share
group 2
crypto isakmp key cisco123 address 192.168.1.1
! IPsec Transform-Set の定義 (AH のみを使用)
crypto ipsec transform-set TRANSFORM_SET ah-sha-hmac
! IPsec プロファイルの作成
crypto ipsec profile IPSEC_PROFILE
set transform-set TRANSFORM_SET
! GRE トンネルに IPsec プロファイルを適用
interface Tunnel0
tunnel protection ipsec profile IPSEC_PROFILE
上記の設定例では、ah-sha-hmac
を使用して、GRE トンネル内のパケットに対して AH の認証ヘッダを適用しています。
AH を使用した際の注意点
-
NAT 越えの問題:
- AH は、IP ヘッダの一部(送信元 IP アドレスなど)を含むデータに対してハッシュ計算を行うため、NAT (Network Address Translation) を経由すると、IP アドレスの変更により認証が失敗します。
- NAT 環境では、ESP(Encapsulating Security Payload)を使用することが推奨されます。ESP では、IP ヘッダを認証範囲に含めないため、NAT 越えの際に問題が発生しません。
-
機密性(暗号化)の不足:
- AH は認証と整合性を提供しますが、データを暗号化しないため、パケット内容が平文で送信されます。データの機密性が必要な場合は、ESP を使用して暗号化を行う必要があります。
- そのため、セキュリティの観点からは、AH 単体での使用ではなく、ESP と組み合わせる(トンネルモードで ESP と AH を同時に使用する)ことを検討するとよいでしょう。
-
オーバーヘッドの増加:
- AH を使用すると、各パケットに AH ヘッダ(通常 32 バイト程度)が追加されるため、パケットのサイズが増加し、オーバーヘッドが大きくなります。これにより、パケット断片化のリスクも増えるため、MTU の調整が必要です。
まとめ
- GRE と AH の組み合わせは、GRE トンネルを通じて送信されるデータの認証と整合性を確保するための手法です。
- GRE 単体ではセキュリティ機能がないため、AH を適用することで、送信元の認証とパケットの改ざん防止を実現できます。
- ただし、AH はデータの暗号化を行わないため、機密性が必要な場合は ESP と組み合わせて使用するか、IPsec トンネルを使用して GRE トンネルをカプセル化する方法が適しています。
このように、GRE トンネルに AH を適用することで、トンネル内の通信の認証と整合性を確保できるようになります。さらに詳しい設定や例を確認したい場合は、使用するネットワーク機器のマニュアルや Cisco の公式ドキュメントを参照すると良いでしょう。