vol73. IEEE802.1XをLinuxで動かしてみる(EAP-MD5)

前回は、IEEE802.1Xについて調べてみた。

john-rama01.hatenablog.com

今回は実際に動かしてみたので、メモ側代わりにブログに残しておく。

EAPの認証方式は、一番簡単なEAP-MD5を使う。

手順

以下の図のように、今回はRADIUS サーバー(認証サーバー)とauthenticatorは一つのLinux PC上で構成する。

f:id:john-rama01:20211110053007p:plain
IEEE802.1X システム構成

  1. 2つのPCをEthernet ケーブルで接続しておく
     (windows PC/ethernet switch は必要ない。今回はモニター用に接続しているだけ)

  2. authenticator 側設定

    • hostapd を起動する

      $hostapd /etc/hostapd_md5.conf

    • 設定ファイル

      • /etc/hostapd_md5.conf

        interface=eno0
        driver=wired
        ieee8021x=1
        eapol_version=2
        eap_server=1
        eap_user_file=/etc/hostapd_md5.eap_user

      • /etc/hostapd_md5.eap_user

        "user" MD5 "password"

  3. supplicant 側設定

    • wpasupplicant を起動する

      $wpa_supplicant -Dwired -ieno0 -c/etc/wpa_supplicant_md5.conf

    • 設定ファイル
      • /etc/wpa_supplicant_md5.conf

        ctrl_interface=/var/run/wpa_supplicant
        network={
        key_mgmt=IEEE8021X
        eap=MD5
        identity="user"
        password="password"
        }

 

wireshark でpacket確認

実際にどんな通信をやっているのか確認するため、wireshark でメッセージを確認する。

remoteのLinux マシンでのethernetの通信を、windows マシン上のwireshark でモニタするため、以下のように、plinkを利用して、wiresharkを立ち上げる。
 

# DOS promptから

$plink.exe -batch -ssh root@192.168.99.91 "stdbuf -i0 -o0 -e0 tcpdump -i eno0 -s 0 -w - " | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -

 
まずは、supplicant(16:34:01:de:e8:b2) がStart を送信。

f:id:john-rama01:20211109050228p:plain
Start

authenticator はIDをRequestする

f:id:john-rama01:20211109050252p:plain
Request (Identity)

supplicant がID=user で応答。

f:id:john-rama01:20211109050249p:plain
Response(Identity)

authenticator はチャレンジ(乱数)をクライアントに送付

f:id:john-rama01:20211109050246p:plain
Request(MD5-Challenage EAP)

supplicant は、パスワードと受信したチャンレジから、ダイジェスト(MD5)を生成。値を返す。

f:id:john-rama01:20211109050259p:plain
Response(MD5-Challenge EAP)

supplicantから受信したダイジェストと、authenticator が自身で計算したダイジェストが一致していれば、SUCCESSを返す。

f:id:john-rama01:20211109050255p:plain
Success

まとめ

今回は最も簡単なEAP-MD5Linuxを使って動かし、メッセージのやり取りをモニターしててみた。
 
なるほどねー。たしかに、メッセージのやり取りをみてても、サーバー側の認証は一切おこなわないことが確認できる。。  
実際に動かしてみると理解が深まるなぁ。