• このエントリーをはてなブックマークに追加

うちでは無線LANの認証方式にEAP-PEAPを使用しており、アカウント名やパスワードはLDAPで管理しているが、今回LDAPからWindows ServerのActive Directoryへ変更してみました。Active Directoryを使用している企業等ではLDAPよりこちらが便利だと思います。FreeRadiusの設定方法は下記の通り。なおRadiusの今回FreeRadiusのバージョンは「2.1.12-2」(Fedora15)を使用しています。

FreeRadiusからActive Directoryへ認証のリクエストをするには、Sambaのコマンドを使用するので、「samba-winbind」がインストールされていることが条件となる。また、デーモン「winbind」が起動されている必要がある。

yum install samba samba-winbind
chkconfig winbind on
/etc/init.d/winbind start

最初にSambaとkrb5の設定ファイルを変更します。まずは「/etc/samba/smb.conf」を変更。(デフォルトから変更した箇所は赤字)

[global]
     workgroup = AD
     server string = Samba Server Version %v
     log file = /var/log/samba/log.%m
     max log size = 50

     security = ads
     passdb backend = tdbsam

     realm = ad.example.com
     password server = ad.example.com

     load printers = yes
     cups options = raw

次にkerberos(krb5)の設定ファイル「/etc/krb5.conf」を変更。

[libdefaults]
  default_realm = AD.EXAMPLE.COM
  dns_lookup_realm = false
  dns_lookup_kdc = false
  ticket_lifetime = 24h
  renew_lifetime = 7d
  forwardable = true

[realms]
  AD.EXAMPLE.COM = {
    kdc = ad.example.com
    admin_server = ad.example.com
  }

[domain_realm]
  .ad.example.com = AD.EXAMPLE.COM
  ad.example.com = AD.EXAMPLE.COM

次にFreeRadiusの設定変更を行う。radiusdのmschapモジュール設定「/etc/raddb/modules/mschap」の下の方に「ntlm_auth」の行がコメントアウトされているので有効化して「ntlm_auth」コマンドのパスを正しく修正します。(下記例では/usr/bin/ntlm_auth)

ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{ %{Stripped-User-Name}:-%{User-Name:-None}} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}"

Radiusの設定ファイル「/etc/raddb/sites-available/auth-wireless」を新規作成する。(auth-wirelessは任意。変更する場合はファイル内も変更すること)

server auth-wireless {
     authorize {
          eap
     }

     authenticate {
          eap
     }
}

Radiusの設定ファイル「/etc/raddb/sites-available/inner-tunnel」を下記の様に修正する。

server inner-tunnel {
     listen {
          ipaddr = 127.0.0.1
          port = 18120
          type = auth
     }

     authorize {
          mschap
          eap {
               ok = return
          }
     }

     authenticate {
          Auth-Type MS-CHAP {
               mschap
          }
          eap
     }
}

Radiusの設定ファイル「/etc/raddb/eap.conf」を下記の様に修正する。

eap {
     default_eap_type = peap
     timer_expire = 60
     ignore_unknown_eap_types = no
     cisco_accounting_username_bug = no
     max_sessions = 4096
     tls {
          certdir = /etc/pki/tls/certs
          cadir = /etc/pki/tls/cert
          private_key_password = 'password'
          private_key_file = /etc/pki/tls/private/server.key
          certificate_file = ${certdir}/server.crt
          CA_file = ${cadir}/cacert.pem
          dh_file = ${certdir}/dh2048.pem
          random_file = /dev/urandom
          CA_path = ${cadir}
          cipher_list = "DEFAULT"
          cache {
               enable = no
               lifetime = 24
               max_entries = 255
          }
          verify {
          }
     }
     peap {
          default_eap_type = mschapv2
          copy_request_to_tunnel = no
          use_tunneled_reply = no
          virtual_server = "inner-tunnel"
     }
     mschapv2 {
     }
}

Radiusサーバへ認証リクエストしてくるクライアント(例:無線AccessPoint等)を「/etc/raddb/clients.conf」追加します。「virtual_server」には「/etc/raddb/sites-available/auth-wireless」で指定した「auth-wireless」を設定します。

client 192.168.1.1/32 {
     secret = testing123
     shortname = TEST
     virtual_server = auth-wireless
}

新規に定義した「auth-wireless」の設定を有効にするため、「/etc/raddb/sites-enabled」配下にシンボリックリンクを作成する。

cd /etc/raddb/sites-enabled
ln -s ../sites-available/auth-wireless auth-wireless

最後にSambaの下記ディレクトリをradiusdが参照できるようにグループオーナーを変更する。

chgrp radiusd /var/lib/samba/winbindd_privileged

以上で設定は完了となる。あとはRadiusdを通常通り稼働させるか、もしくはデバックモード「radiusd -X」で稼働させ、radtestやeapol_testで認証試験を行なってみる。

今回はEAP-PEAPなので上記設定となりましたが、通常のRadius認証の場合でも、mschapv2を使用していれば応用効くと思います。なお、今回手本としたページ「Configuring Authentication with Active Directory」もありますのでこちらも参照することおすすめします。

  • このエントリーをはてなブックマークに追加