Dell EMC Networking N-Series MAB & 802.1x (Version 6.6.0.40)

f:id:tcpninja:20200111142142p:plain

この春の WLAN 更新に向けて,PoE Switch 等の検証でお借りしている N3132PX-ON で,有線ポートの認証機能を試してみました.
networking-n3100-series_user's-guide13_en-us.pdf (認証関係は p.253 から) を参考にしていたのですが,6.6 で変更されたコマンド等が反映されていなくて,少し苦労したので纏めておきたいと思います.

今回の認証ポートの要件は以下の通りです.
・認証には Windows NPS と FreeRadius の Radius Proxy を利用する.
MAC Address が登録されている Client は MAB でポート開放.
MAC Address の登録が無い Client は 802.1x で認証してポート開放.
* Switch の基本的な設定については省略します.


Radius サーバと認証設定

まず,Global Configuration mode で 802.1x を有効にします.

n3132(config)#aaa new-model 
n3132(config)#dot1x system-auth-control 


次に radius server auth コマンドで Radius server の IP Address を指定して,Radius Server Configuration mode に入り,以下設定します.
・name コマンドで名称設定(今回は "vmug_radius" )
・primary コマンドで明示的に primary radius server に指定
・usage authmgr で radius サーバの Type を指定します.default は all です.
legacy upper-case だと "18:DB:F2:25:B2:D4" の形式です.

n3132(config)#radius server auth YOUR_RADIUS_SERVER_IP_ADDR
n3132(config-auth-radius)#name "vmug_radius"
n3132(config-auth-radius)#primary
n3132(config-auth-radius)#usage authmgr
n3132(config-auth-radius)#exit


Radius Sever Configuration mode から exit したので,ここから再び Global Configuration mode で設定していきます.

Radius server key を指定します.

n3132(config)#radius server key 7 THIS_IS_YOUR_SECRET


radius server source-ip コマンドで Radius server との通信で利用するソース IPv4 アドレスを指定します.OOB を使用しない際にはこれを設定しないと通信できませんでした.

n3132(config)#radius server source-ip YOUR_NSERIES_IPV4_ADDR


ポートの認証を有効にする前に,uplink port が Block state にならない様 authentication port-control force-authorized を設定しておきましょう.
(Interface Configuration mode で作業します.)

n3132(config-if-Te1/0/3)#authentication port-control force-authorized
n3132(config-if-Te1/0/3)#exit


認証と Dynamic VLAN(Radius らの Attribute で動的に VLAN をアサイン) を有効にします.

n3132(config)#authentication enable
n3132(config)#authentication dynamic-vlan enable


802.1x 認証メソッドの default を radius に,加えて認可も Radius で行うよう設定します.

n3132(config)#aaa authentication dot1x default radius
n3132(config)#aaa authorization network default radius


これで Radius 認証・認可の設定は完了です.続けて認証ポートを設定します.


MAB & 802.1x 認証ポートの設定

Interface Configuration mode で設定します.
・switchport mode コマンドで VLAN Membership mode を general にします.
 (動的に VLAN アサインするため)
・host-mode は multi-auth にします.
 (認証ポート配下の島ハブ接続 Client をそれぞれ個別に認証するため)
・MAB を有効にし,auth-type を PAP にします.
 MAC Address は Radius の users に登録してあるので PAP にします.
・認証の優先順位を MAB -> 802.1x の順にします.

n3132(config-if-Gi1/0/1)#switchport mode general
n3132(config-if-Gi1/0/1)#authentication host-mode multi-auth
n3132(config-if-Gi1/0/1)#mab auth-type pap
n3132(config-if-Gi1/0/1)#authentication order mab dot1x
n3132(config-if-Gi1/0/1)#exit



RADIUS で MAB

まず,MAB 認証を成功させてみます.
Client の MAC Address を FreeRadius の users に 登録して,radiusd を debug mode で起動します.
・user 名は MAC Address,Password も同じです.
・Tunnel-Medium-Type で 6 (IEEE-802) を指定します.
・Tunnel-Type は 13 (VLAN) を指定します.
・Tunnel-Private-Group-Id はアサインしたい VLAN ID です.

18:DB:F2:25:B2:D4  Cleartext-Password := "18:DB:F2:25:B2:D4"
                Tunnel-Medium-Type = 6,
                Tunnel-Type = 13,
                Tunnel-Private-Group-Id = 1234


FreeRadius は -x で debug mode にて起動します.

[root@dradius raddb]# /usr/sbin/radiusd -X


登録済み MAC Address を持つ Client を認証ポートに接続すると,Login が成功します.

(0) Login OK: [18:DB:F2:25:B2:D4] (from client n3132 port 1 cli 18DBF225B2D4)
(0) Sent Access-Accept Id 137 from YOUR_RADIUS_SERVER_IP_ADDR:1812 to YOUR_NSERIES_IPV4_ADDR:37663 length 0
(0)   Tunnel-Medium-Type = IEEE-802
(0)   Tunnel-Type = VLAN
(0)   Tunnel-Private-Group-Id = "1234"
(0) Finished request
Waking up in 4.9 seconds.


Switch 側でも認証された Client が確認できます.

n3132#show authentication clients all

Interface    MAC-Address           Method     Host Mode                  Control Mode    VLAN Assigned Reason
---------    -----------------     -------    ------------------------   ------------    --------------------------
Gi1/0/1      18:DB:F2:25:B2:D4     mab        multi-auth                 auto            RADIUS Assigned VLAN (1234)



802.1x に fall back

MAC Address 登録の無い Client を想定して,users ファイルを書き換えて,MAB を失敗させてみます.

(0) pap: WARNING: No "known good" password found for the user.  Not setting Auth-Type
(0) pap: WARNING: Authentication will fail unless a "known good" password is available
(0)     [pap] = noop
(0)   } # authorize = ok
(0) ERROR: No Auth-Type found: rejecting the user via Post-Auth-Type = Reject
(0) Failed to authenticate the user
(0) Using Post-Auth-Type Reject
(0) # Executing group from file /etc/raddb/sites-enabled/default
(0)   Post-Auth-Type REJECT {
(0) attr_filter.access_reject: EXPAND %{User-Name}
(0) attr_filter.access_reject:    --> 18:DB:F2:25:B2:D4
(0) attr_filter.access_reject: Matched entry DEFAULT at line 11
(0)     [attr_filter.access_reject] = updated
(0)     [eap] = noop
(0)     policy remove_reply_message_if_eap {
(0)       if (&reply:EAP-Message && &reply:Reply-Message) {
(0)       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(0)       else {
(0)         [noop] = noop
(0)       } # else = noop
(0)     } # policy remove_reply_message_if_eap = noop
(0)   } # Post-Auth-Type REJECT = updated
(0) Login incorrect (No Auth-Type found: rejecting the user via Post-Auth-Type = Reject): [18:DB:F2:25:B2:D4] (from client n3132 port 1 cli 18DBF225B2D4)
(0) Delaying response for 1.000000 seconds
Waking up in 0.3 seconds.


この直後に 802.1x 認証ダイアログが表示されるので,ID と Password を入力すると認証が成功します. f:id:tcpninja:20200111170822p:plain

(13) Login OK: [kaz@vmug.jp] (from client n3132 port 1 cli 18DBF225B2D4)
(13) Sent Access-Accept Id 154 from YOUR_RADIUS_SERVER_IP_ADDR:1812 to YOUR_NSERIES_IPV4_ADDR:57134 length 0
(13)   Tunnel-Medium-Type:0 = IEEE-802
(13)   Tunnel-Private-Group-Id:0 = "1234"
(13)   Tunnel-Type:0 = VLAN
(13)   EAP-Message = 0x030e0004
(13)   Class = 0x97e9091c0000013700010200caeb807100000000000000000000000001d5b57ca2d0abca000000000055bc3a
(13)   MS-Link-Utilization-Threshold = 50
(13)   MS-Link-Drop-Time-Limit = 120
(13)   MS-CHAP-Domain = "\001AD"
(13)   MS-CHAP2-Success = 0x01533d46443041343137433239444339323738413931463144364645454346373933393643383239333730
(13)   MS-MPPE-Send-Key = 0xa5996bc1486bb255e1027e04e07d086937253f792673b0b5a3c8f13870a14f12
(13)   MS-MPPE-Recv-Key = 0xd810e4c67a67f6178612e9a58ae720af40581a31aa6729804a345a24d3648de1
(13)   Message-Authenticator = 0xc1c0d312d69bb3g39148fa01d155dcc3
(13) Finished request
Waking up in 4.9 seconds.


Switch 側でも Method が 802.1X で認証した事が確認できます.

n3132#show authentication clients all

Interface    MAC-Address           Method     Host Mode                  Control Mode    VLAN Assigned Reason
---------    -----------------     -------    ------------------------   ------------    --------------------------
Gi1/0/1      18:DB:F2:25:B2:D4     802.1X     multi-auth                 auto            RADIUS Assigned VLAN (1234)




今回ハマってた事

最近 Windows を触ってないのと,有線の 802.1x 認証も初めてだった事もあり,MAC Address を登録した Client で802.1X 認証を有効にすると MAB が失敗する原因特定に時間がかかってしまいました.
Log 確認すると,Radius 認証成功後に一旦 Port は Forwarding sate になるのですが,即座に認証された Client が削除されています.

<189> Jan  9 10:20:13 n3132-1 AUTHMGR[authmgrTask]: auth_mgr_client.c(1206) 431920 %% NOTE Deleting client authenticated with VLAN type RADIUS on interface Gi1/0/1.
<189> Jan  9 10:20:11 n3132-1 TRAPMGR[trapTask]: traputil.c(721) 431919 %% NOTE Gi1/0/1 is transitioned from the Learning state to the Forwarding state in instance 0
<189> Jan  9 10:20:08 n3132-1 TRAPMGR[trapTask]: traputil.c(721) 431918 %% NOTE Gi1/0/1 is transitioned from the Forwarding state to the Blocking state in instance 0
<190> Jan  9 10:20:08 n3132-1 AUTHMGR[authmgrTask]: auth_mgr_sm.c(391) 431917 %% INFO Client authorized on port (Gi1/0/1) with VLAN type RADIUS.


しかし,これ単純に「承認されていないネットワーク アクセスにフォールバックする」(default は Off )のチェックをオンにしておけば良かったんですね.Switch の設定ばかり気にしていて気付きませんでした.反省(しかも,今回 VMUG も VMware も全く関係ないし).
f:id:tcpninja:20200111172634p:plain