「オープンポート」のリスクを阻止:FreeRADIUSによる802.1X有線セキュリティの構築

Networking tutorial - IT technology blog
Networking tutorial - IT technology blog

オフィスのネットワークに潜む大きなセキュリティホール

中規模のオフィスに入り、空いているデスクを見つけてラップトップを壁のポートに差し込んでみてください。多くの場合、すぐにIPアドレスが付与され、内部ファイルサーバーや機密データベースに直接接続できてしまいます。これは、すぐ目の前にあるにもかかわらず見落とされている大きな脆弱性です。

私たちは何十年もかけて、バッジスキャナーやスマートロックによる物理セキュリティを完成させてきました。しかし、訪問者や侵入者が受付を通り過ぎてしまえば、ネットワークポートは通常「使い放題(ホット)」の状態です。「デフォルトでオープン」というポリシーに頼ることは、データ漏洩の種をまいているようなものです。クライアントの個人データや独自のコードを扱うネットワークを管理しているなら、物理ポートを無防備なままにしておくわけにはいきません。

スイッチが「お人好し」である理由

標準的なレイヤー2スイッチは、ゲートキーピング(門番)ではなく利便性を重視して設計されています。デフォルトでは、スイッチポートは未認証の状態ですが、リンクを検出した瞬間にトラフィックの転送を開始します。スイッチは身元を確認しません。単にMACアドレスを記録し、すぐにフレームの転送を始めます。

このアイデンティティベースの制御の欠如は、エンタープライズグレードのファイアウォールであっても救いにならないことを意味します。攻撃者が境界の内側に座っていれば、彼らはすでに家の中にいるのです。根本的な原因は、ポートレベルでのゲートキーパー、つまりデータパスが実際に開く前に資格情報を要求する仕組みが存在しないことにあります。

中途半端な対策はやめよう

セットアップに入る前に、一般的な「クイックフィックス(応急処置)」が実際の環境でなぜ失敗するのかを見てみましょう。

  • MACフィルタリング: 許可されたデバイスのホワイトリストを作成します。50人のチームの場合、突然100個以上のユニークな識別子を管理することになります。これは手動でエラーが発生しやすい悪夢です。さらに悪いことに、基本的なコマンドラインツールを使えば、MACアドレスの偽装(スプーフィング)は10秒ほどで完了します。
  • スタティックIPマッピング: 特定のIPのみに通信を許可します。攻撃者はネットワークトラフィックを2分間スニッフィングするだけで、サブネットを特定し、未使用のアドレスを手動で自分に割り当てることができます。
  • 802.1X(ゴールドスタンダード): このプロトコルはEAP(Extensible Authentication Protocol)を使用して、データパケットを1つも通す前に身元を確認します。これには3つの要素が必要です。サプリカント(ラップトップ)、オーセンティケーター(スイッチ)、および認証サーバー(RADIUS)です。

私の経験では、802.1Xをマスターすることは、セキュリティの焦点を「どこに接続されているか」から「誰であるか」へとシフトさせる最も効果的な方法です。これにより、許可されたハードウェアだけが、実際にデータを運ぶリンクライトを点灯させることができます。

ラボの構築:FreeRADIUSとLinux

これを学ぶために5,000ドルのエンタープライズスイッチは必要ありません。Linuxサーバーを仮想スイッチとして使用し、完全に機能するラボを構築できます。頭脳としてFreeRADIUS、オーセンティケーターとしてhostapdを使用します。

ステップ1:FreeRADIUSバウンサーのセットアップ

まず、UbuntuまたはDebianシステムにFreeRADIUSをインストールします。このサーバーは、許可されたデバイスの中央データベースとして機能します。

sudo apt update
sudo apt install freeradius freeradius-utils -y

次に、「クライアント」を定義します。RADIUSの世界では、クライアントはスイッチそのものを指し、エンドユーザーではありません。/etc/freeradius/3.0/clients.conf を編集して、仮想スイッチを追加します。

# これを /etc/freeradius/3.0/clients.conf に追加します
client lab_switch {
    ipaddr = 127.0.0.1
    secret = testing123
}

次に、/etc/freeradius/3.0/users にユーザーを作成します。これは、アクセス権を得るためにラップトップが提供する資格情報です。

# これを /etc/freeradius/3.0/users の先頭に追加します
"itfromzero_user" Cleartext-Password := "secure_password_2026"
    Reply-Message = "セキュアなネットワークへようこそ"

変更を反映させるためにサービスを再起動します:

sudo systemctl restart freeradius

ステップ2:仮想スイッチの設定

本番のオフィスではCiscoやJuniperのスイッチを使用しますが、このラボでは、標準的なエーサネットポートで802.1Xステートマシンを処理するために hostapd を使用します。

sudo apt install hostapd bridge-utils -y

/etc/hostapd/wired-8021x.conf に設定ファイルを作成します。eth1 をロックダウンしたいインターフェースに置き換えてください。

# /etc/hostapd/wired-8021x.conf
interface=eth1
driver=wired
ieee8021x=1

# RADIUS サーバー設定
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=testing123

hostapdを起動すると、eth1 は実質的に「ブロック」状態になります。EAPハンドシェイクが成功するまでトラフィックを通過させません。

ステップ3:サプリカントの設定

クライアントデバイスは802.1Xの通信プロトコルに対応している必要があります。Linuxでは wpa_supplicant を使用します。クライアントマシンに wired-client.conf という名前のファイルを作成します:

# wired-client.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=0 # 有線802.1Xには必須

network={
    key_mgmt=IEEE8021X
    eap=MD5 # ラボの簡略化のためMD5を使用。本番環境ではPEAP/TLSを使用してください
    identity="itfromzero_user"
    password="secure_password_2026"
}

以下を実行して接続を開始します:

sudo wpa_supplicant -Dwired -i eth0 -c wired-client.conf

プロのようにトラブルシューティングする

うまくいかない場合は、FreeRADIUSサービスを停止し、デバッグモードで実行して、ハンドシェイクがどこで失敗しているかを正確に確認します。

sudo systemctl stop freeradius
sudo freeradius -X

私はこれらのハンドシェイクのデバッグで何度も睡眠不足になりました。通常、原因はEAPタイプの不一致や、UDPポート1812をブロックしている単純なファイアウォールルールです。Sent Access-Accept という行を探してください。それがポートのロックが解除された合図です。

最後に

ポートベースのアクセス制御の実装は、ネットワークの成熟度における大きなマイルストーンです。管理の手間は増えますが、許可されていない物理デバイスが足場を築くリスクを効果的に排除できます。FreeRADIUSの基本に慣れたら、LDAPやActive Directoryと統合

オフィスのネットワークに潜む大きなセキュリティホール

中規模のオフィスに入り、空いているデスクを見つけてラップトップを壁のポートに差し込んでみてください。多くの場合、すぐにIPアドレスが付与され、内部ファイルサーバーや機密データベースに直接接続できてしまいます。これは、すぐ目の前にあるにもかかわらず見落とされている大きな脆弱性です。

私たちは何十年もかけて、バッジスキャナーやスマートロックによる物理セキュリティを完成させてきました。しかし、訪問者や侵入者が受付を通り過ぎてしまえば、ネットワークポートは通常「使い放題(ホット)」の状態です。「デフォルトでオープン」というポリシーに頼ることは、データ漏洩の種をまいているようなものです。クライアントの個人データや独自のコードを扱うネットワークを管理しているなら、物理ポートを無防備なままにしておくわけにはいきません。

スイッチが「お人好し」である理由

標準的なレイヤー2スイッチは、ゲートキーピング(門番)ではなく利便性を重視して設計されています。デフォルトでは、スイッチポートは未認証の状態ですが、リンクを検出した瞬間にトラフィックの転送を開始します。スイッチは身元を確認しません。単にMACアドレスを記録し、すぐにフレームの転送を始めます。

このアイデンティティベースの制御の欠如は、エンタープライズグレードのファイアウォールであっても救いにならないことを意味します。攻撃者が境界の内側に座っていれば、彼らはすでに家の中にいるのです。根本的な原因は、ポートレベルでのゲートキーパー、つまりデータパスが実際に開く前に資格情報を要求する仕組みが存在しないことにあります。

中途半端な対策はやめよう

セットアップに入る前に、一般的な「クイックフィックス(応急処置)」が実際の環境でなぜ失敗するのかを見てみましょう。

  • MACフィルタリング: 許可されたデバイスのホワイトリストを作成します。50人のチームの場合、突然100個以上のユニークな識別子を管理することになります。これは手動でエラーが発生しやすい悪夢です。さらに悪いことに、基本的なコマンドラインツールを使えば、MACアドレスの偽装(スプーフィング)は10秒ほどで完了します。
  • スタティックIPマッピング: 特定のIPのみに通信を許可します。攻撃者はネットワークトラフィックを2分間スニッフィングするだけで、サブネットを特定し、未使用のアドレスを手動で自分に割り当てることができます。
  • 802.1X(ゴールドスタンダード): このプロトコルはEAP(Extensible Authentication Protocol)を使用して、データパケットを1つも通す前に身元を確認します。これには3つの要素が必要です。サプリカント(ラップトップ)、オーセンティケーター(スイッチ)、および認証サーバー(RADIUS)です。

私の経験では、802.1Xをマスターすることは、セキュリティの焦点を「どこに接続されているか」から「誰であるか」へとシフトさせる最も効果的な方法です。これにより、許可されたハードウェアだけが、実際にデータを運ぶリンクライトを点灯させることができます。

ラボの構築:FreeRADIUSとLinux

これを学ぶために5,000ドルのエンタープライズスイッチは必要ありません。Linuxサーバーを仮想スイッチとして使用し、完全に機能するラボを構築できます。頭脳としてFreeRADIUS、オーセンティケーターとしてhostapdを使用します。

ステップ1:FreeRADIUSバウンサーのセットアップ

まず、UbuntuまたはDebianシステムにFreeRADIUSをインストールします。このサーバーは、許可されたデバイスの中央データベースとして機能します。

sudo apt update
sudo apt install freeradius freeradius-utils -y

次に、「クライアント」を定義します。RADIUSの世界では、クライアントはスイッチそのものを指し、エンドユーザーではありません。/etc/freeradius/3.0/clients.conf を編集して、仮想スイッチを追加します。

# これを /etc/freeradius/3.0/clients.conf に追加します
client lab_switch {
    ipaddr = 127.0.0.1
    secret = testing123
}

次に、/etc/freeradius/3.0/users にユーザーを作成します。これは、アクセス権を得るためにラップトップが提供する資格情報です。

# これを /etc/freeradius/3.0/users の先頭に追加します
"itfromzero_user" Cleartext-Password := "secure_password_2026"
    Reply-Message = "セキュアなネットワークへようこそ"

変更を反映させるためにサービスを再起動します:

sudo systemctl restart freeradius

ステップ2:仮想スイッチの設定

本番のオフィスではCiscoやJuniperのスイッチを使用しますが、このラボでは、標準的なエーサネットポートで802.1Xステートマシンを処理するために hostapd を使用します。

sudo apt install hostapd bridge-utils -y

/etc/hostapd/wired-8021x.conf に設定ファイルを作成します。eth1 をロックダウンしたいインターフェースに置き換えてください。

# /etc/hostapd/wired-8021x.conf
interface=eth1
driver=wired
ieee8021x=1

# RADIUS サーバー設定
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=testing123

hostapdを起動すると、eth1 は実質的に「ブロック」状態になります。EAPハンドシェイクが成功するまでトラフィックを通過させません。

ステップ3:サプリカントの設定

クライアントデバイスは802.1Xの通信プロトコルに対応している必要があります。Linuxでは wpa_supplicant を使用します。クライアントマシンに wired-client.conf という名前のファイルを作成します:

# wired-client.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=0 # 有線802.1Xには必須

network={
    key_mgmt=IEEE8021X
    eap=MD5 # ラボの簡略化のためMD5を使用。本番環境ではPEAP/TLSを使用してください
    identity="itfromzero_user"
    password="secure_password_2026"
}

以下を実行して接続を開始します:

sudo wpa_supplicant -Dwired -i eth0 -c wired-client.conf

プロのようにトラブルシューティングする

うまくいかない場合は、FreeRADIUSサービスを停止し、デバッグモードで実行して、ハンドシェイクがどこで失敗しているかを正確に確認します。

sudo systemctl stop freeradius
sudo freeradius -X

私はこれらのハンドシェイクのデバッグで何度も睡眠不足になりました。通常、原因はEAPタイプの不一致や、UDPポート1812をブロックしている単純なファイアウォールルールです。Sent Access-Accept という行を探してください。それがポートのロックが解除された合図です。

最後に

ポートベースのアクセス制御の実装は、ネットワークの成熟度における大きなマイルストーンです。管理の手間は増えますが、許可されていない物理デバイスが足場を築くリスクを効果的に排除できます。FreeRADIUSの基本に慣れたら、FreeRADIUSやActive Directoryと統合して、従業員が標準のログイン情報を使用してデスクのロックを解除できるようにすることも可能です。

Share: