無線LANのメリットや運用の注意点、電波や規格などの用語、要件定義や基本設計から
設定・構築・テストにいたるまで、たくさんのことをまとめています。
さらに、Arubaの機器を中心とした無線LANの設計と設定を解かりやすく解説しています。

カテゴリ:6.各種サーバの設定 > 6-5 FreeRadius

CentOS6.3でFreeRadiusを構築する方法。

主要なパラメータは、以下のとおり
RADIUSクライアントの登録(client.conf)
RADIUSクライアント名IPアドレス共有シークレット
WLC
IAP

・・・


PAP用のユーザ登録(users)
ユーザ名パスワード
user1
user2
・・・




1)FreeRadiusのインストール
CentOS6.3をインストール後、yumコマンドでfreeradius関係のパッケージをインストールする。

# yum install freeradius freeradius-utils


2)radius.confの修正
デフォルト設定では、認証のログが記録されない。認証の成功、失敗をログに残すように設定変更する。

# vi /etc/raddb/radiusd.conf

 443行目付近の、auth = no をauth = yes に変更する。

3)radiusクライアントを登録する。

# vi /etc/raddb/clients.conf
で編集、次のようにRADIUSクライアントを追加する

client 10.0.1.200{ ←RADIUSクライアント(WLCやIAP)のIPアドレス
        secret = ******* ←共有シークレット
}

4)iptablesの変更
デフォルトのiptablesの設定では、RADIUS用のUDP1812/1813への通信が許可されていない。iptablesの設定を変更しておこう。

# vi /etc/sysconfig/iptables

-A INPUT -p udp --dport 1812 -j ACCEPT ←追加
-A INPUT -p udp --dport 1813 -j ACCEPT ←追加

5)アカウントの追加

# vi /etc/raddb/users
でユーザアカウントを追加する。

testuser1       Cleartext-Password := "*****"
testuser2       Cleartext-Password := "*****"
testuser3       Cleartext-Password := "*****"

左側がユーザ名、*****の部分がパスワード(プレーンテキスト)である。
なお、usersを書き換えた後はradiusdをrestartしないと反映されない。

6)Freeradiusの起動

# /etc/init.d/radiusd start

自動起動するようにも設定しておく。

# chkconfig radiusd on
# chkconfig --list radiusd
radiusd         0:off   1:off   2:on    3:on    4:on    5:on    6:off

ランレベル3と5がONになっているのでOK。

7)ログの確認方法

# tail -f /var/log/radius/radius.log

あらかじめ、PEAPと同じ設定をしておく。

そして、eap.confをを1行だけ修正する。
# vi /etc/raddb/eap.conf

・558行目付近
    #       EAP-TLS-Require-Client-Cert = Yes
     ↓
    EAP-TLS-Require-Client-Cert = Yes

たったのこれだけである。

なお、peapの設定が残っていると、peapでも接続できてしまう。
peapを無効にするのであれば、
               #peap {
      #  ・・・・
               #}
のように、peap設定をすべてコメントアウトしておく。

※CRLの設定をしていないので、証明書の無効化ができないので注意。
追記予定。

証明書はただのデータであり、無効にしたいからといって回収はできない。PKIにおいてはCRLという、証明書のブラックリストを管理するしくみで証明書を無効にするしくみがある。

CRLの作成方法は、こちらを参照のこと。
EAP-TLSでも、CRLを利用するようにしておかないと、漏洩した秘密鍵や退職した社員による情報漏えいが危惧される。

ここでは、FreeRadiusでCRLを参照し、無効になった電子証明書でのアクセスを拒否する設定を紹介する。

まず、CRLのファイルをFreeRadiusの証明書フォルダにコピーしておく。
認証局とFreeRadiusが同じサーバで動いていればシンボリックリンクを張ればよい。
# mkdir /etc/raddb/certs/crl
# ln -s /etc/pki/CA/crl/crl.pem /etc/raddb/certs/crl/

別のサーバで動いていれば、rsyncなりwgetで定期的、あるいはCRL発行の都度コピーしておく。

CRLを有効にするには、/etc/raddb/eap.conf ファイルを修正し、tlsセクションで次の2行を有効にしておく。
                        check_crl = yes
                        CA_path = ${cadir}/crl
このあと、CRLのディレクトリをハッシュ化する作業が必要。c_rehashコマンドが必要になるので、インストールする。
# yum install openssl-perl
c_rehashコマンドが使えるようになったら、/etc/raddb/certs/crl/に対して実行する。
# c_rehash /etc/raddb/certs/crl/
Doing /etc/raddb/certs/crl/
crl.pem => 3ccdfed5.r0
終わったら、radiusdをrestart。

無効化した証明書では、認証できないことを確認する。/var/log/radius/radius.logには次のようなログが残るはず。
Thu May  2 11:27:04 2013 : Error: --> verify error:num=23:certificate revoked
Thu May  2 11:27:04 2013 : Error: TLS Alert write:fatal:certificate revoked
Thu May  2 11:27:04 2013 : Error:     TLS_accept: error in SSLv3 read client certificate B
Thu May  2 11:27:04 2013 : Error: rlm_eap: SSL error error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
Thu May  2 11:27:04 2013 : Error: SSL: SSL_read failed in a system call (-1), TLS session fails.
Thu May  2 11:27:04 2013 : Auth: Login incorrect (certificate revoked): [testuser4] (from client 10.0.1.135 port 0 cli 1ce62b******)

この作業を自動化するのであれば、
・CRLファイルの取得
・c_rehash
・radiusdのrestart
の実行をcronに組み込むようにする。ハッシュを再実行してもradiusdは自動的に再読み込みしてくれない。radiusdのrestartは必須。

・注意事項
CRLを使うときには、有効期限に注意が必要。詳しくは、こちらを参照。

FreeRADIUSを使って、認証ユーザごとに異なるVLANを割り当てる設定方法を説明する。
AP側の設定はこちらを参照のこと。

FreeRADIUSでは、/etc/raddb/usersファイルでユーザを管理する。この中に、ユーザ情報とともに属性値(VLANIDの情報など)を設定する。設定する属性値は3つ。
・Tunnell-Typeとは、どのようなトンネルの方式を使うかの設定(802.1Xの場合"VLAN")
・Tunnel-Medium-Typeとは、トンネルプロトコル(上記で設定したVLAN)をどのようにトランスポート(輸送)するかを設定(802.1Xの場合"IEEE-802")
Tunnel-private-Group-Idは認証後に所属するVLANIDを指定する。

設定例は以下のとおり。
testuser001       Cleartext-Password := "パスワード"
        Tunnel-Type = VLAN,    ←全ユーザでVLAN固定
        Tunnel-Medium-Type = IEEE-802,      ←全ユーザでIEEE-802固定
        Tunnel-Private-Group-Id = 210       ←VLANIDを210に設定
testuser002       Cleartext-Password := "パスワード"
        Tunnel-Type = 13,    ←全ユーザでVLAN固定(別の書き方)
        Tunnel-Medium-Type = 6,   ←全ユーザでIEEE-802固定(別の書き方)
        Tunnel-Private-Group-Id = 220       ←VLANIDを220に設定
testuser003       Cleartext-Password := "パスワード"
        Tunnel-Type = 13,
        Tunnel-Medium-Type = 6,
        Tunnel-Private-Group-Id = 200
※カンマの有無に注。
※testuser001とtestuser002では、Tunnel-TypeとTunnel-Medium-Typeの記述の仕方を変えているが、同じ意味の設定である。Tunnel-Typeが6であればVLANを意味し、 Tunnel-Medium-Typeが13ならばIEEE-802を意味するからだ。
※Arubaの設定では、本来Tunnel-Private-Group-IDにVLANIDを設定するだけでVLANを割り当て可能。しかし、一般的には3つの属性値を必要とする機種もあるため、ここでは3箇所とも設定している。
※DEFAULT設定が残っているときちんと動作しないことがある。余分な設定を全部消して、ユーザ情報だけにしておくほうがよい。

また、/etc/raddb/eap.confでも設定変更が必要。ユーザ名に基づく属性情報をNAS(オーセンティケータ)に送るかどうかのパラメータである。(noは送らない、yesは送る)
peap {
  ・・・
  use_tunneled_reply = no yes        ←デフォルトがnoなので、yesに変更
  ・・・

オーセンティケータとの認証シーケンスにおいて、アクセス認可と同時にこれらの属性値がRADIUSサーバからオーセンティケータに送信される。オーセンティケータは属性値に基づいて、ユーザのVLANを設定する。
RADIUSサーバからのパケットの一例を示す。usersで設定した属性値がオーセンティケータに送信されている。
RADIUSキャプチャ














(補足)
上記の/etc/raddb/usersは、下記のような書き方もできる。
testuser001       Cleartext-Password := "****"
        Tunnel-Private-Group-Id = 210
testuser002       Cleartext-Password := "****"
        Tunnel-Private-Group-Id = 220
testuser003       Cleartext-Password := "****"
        Tunnel-Private-Group-Id = 200

DEFAULT Auth-Type == EAP
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802
 全ユーザで共通となるTunnel-TypeとTunnel-Medium-Typeをデフォルト値として共用にしておく。こうしておけば、各ユーザのところでは Tunnel-Private-Group-Idを設定しておくだけでよい。
 なお、DEFALUTは全ユーザを定義した後に記述すること。ユーザ名より前に記述するときちんと動作しない。





FreeRADIUSを使って、認証ユーザごとに異なるVLANを割り当てる設定方法を説明する。
AP側の設定はこちらを参照のこと。

基本的にはPEAPと同じである。PEAPとの違いは、Cleartext-Passwordを設定する必要がないという点。

FreeRADIUSでは、/etc/raddb/usersファイルでユーザを管理する。この中に、ユーザ情報とともに属性値(VLANIDの情報など)を設定する。設定する属性値は3つ。
・Tunnell-Typeとは、どのようなトンネルの方式を使うかの設定(802.1Xの場合"VLAN")
・Tunnel-Medium-Typeとは、トンネルプロトコル(上記で設定したVLAN)をどのようにトランスポート(輸送)するかを設定(802.1Xの場合"IEEE-802")
Tunnel-private-Group-Idは認証後に所属するVLANIDを指定する。

設定例は以下のとおり。
testuser001      
        Tunnel-Type = VLAN,    ←全ユーザでVLAN固定
        Tunnel-Medium-Type = IEEE-802,      ←全ユーザでIEEE-802固定
        Tunnel-Private-Group-Id = 210       ←VLANIDを210に設定
testuser002
        Tunnel-Type = 13,    ←全ユーザでVLAN固定(別の書き方)
        Tunnel-Medium-Type = 6,   ←全ユーザでIEEE-802固定(別の書き方)
        Tunnel-Private-Group-Id = 220       ←VLANIDを220に設定
testuser003
        Tunnel-Type = 13,
        Tunnel-Medium-Type = 6,
        Tunnel-Private-Group-Id = 200
※カンマの有無に注。
※testuser001とtestuser002では、Tunnel-TypeとTunnel-Medium-Typeの記述の仕方を変えているが、同じ意味の設定である。Tunnel-Typeが6であればVLANを意味し、 Tunnel-Medium-Typeが13ならばIEEE-802を意味するからだ。
※Arubaの設定では、本来Tunnel-Private-Group-IDにVLANIDを設定するだけでVLANを割り当て可能。しかし、一般的には3つの属性値を必要とする機種もあるため、ここでは3箇所とも設定している。
※DEFAULT設定が残っているときちんと動作しないことがある。余分な設定を全部消して、ユーザ情報だけにしておくほうがよい。

(補足)
上記の/etc/raddb/usersは、下記のような書き方もできる。
testuser001      
        Tunnel-Private-Group-Id = 210
testuser002      
        Tunnel-Private-Group-Id = 220
testuser003      
        Tunnel-Private-Group-Id = 200

DEFAULT Auth-Type == EAP
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802
 全ユーザで共通となるTunnel-TypeとTunnel-Medium-Typeをデフォルト値として共用にしておく。こうしておけば、各ユーザのところでは Tunnel-Private-Group-Idを設定しておくだけでよい。
 なお、DEFALUTは全ユーザを定義した後に記述すること。ユーザ名より前に記述するときちんと動作しない。






スポンサードリンク

このページのトップヘ