AWS Directory Serviceを使ってEnterprise WI-FIを使う (2)
AWS Directory Serviceを使ってEnterprise WI-FIを使うの続き
802.1X認証を行っているので所属グループに応じたVLANの割り当てまで行えるようにします。
当然ながら認証を依頼する機器側がこの機能に対応している必要があります。
RADIUS側でユーザに応じてどのVLANを使えばいいかを返答するようにします。
ADの所属しているグループに応じてVLAN番号を渡してあげるようにします。対応機器なら通常下記を応答することでVLANを設定できるはずです。
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-ID = VLAN番号
/etc/raddb/modules/ldap
LDAPモジュールは別RPMなのでインストールしておきます。
yum install freeradius-ldap
LDAPモジュールでADの情報を取ってこれるようにします。
ldap {
+ server = "ds.wacul.co.jp"
+ identity = "administrator@ds.wacul.co.jp"
+ password = "adのpassword"
+ basedn = "dc=ds,dc=wacul,dc=co,dc=jp"
+ filter = "(&(objectCategory=person)(objectClass=user)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(sAMAccountName=%{mschap:User-Name}))"
+ groupname_attribute = cn
+ groupmembership_filter = "(&(objectcategory=group)(member:1.2.840.113556.1.4.1941:=%{control:Ldap-UserDn}))"
+ groupmembership_attribute = memberOf
mail=*
はメールアドレスが入っていたら、(!(userAccountControl:1.2.840.113556.1.4.803:=2))
はユーザがdisableになっていなかったらという条件です。
(member:1.2.840.113556.1.4.1941:=%{control:Ldap-UserDn})
はユーザが所属しているグループをネストされていてももってこれるようにします。
/etc/raddb/sites-enabled/default
ldapモジュールを追加した上で、LDAP-GroupでどのVLAN番号を渡すかの判定を追加します。
authorize {
preprocess
auth_log
+ ldap
...
post-auth {
exec
+ if (LDAP-Group == "Marketing") {
+ update reply {
+ Tunnel-Private-Group-ID = 10
+ }
+ }
+ else {
+ reject
+ }
+ update reply {
+ Tunnel-Type = VLAN
+ Tunnel-Medium-Type = IEEE-802
+ }
これでLDAP-Groupで指定した名前のグループに所属させたユーザでRADIUS認証するとTunnel-Private-Group-IDが返ってくるようになります。
elifでグループごとに設定を追加していくようにすると複数グループに所属している場合は記述順でVLAN番号が決まります。