FreeRADIUSの設定

まずはFreeRADIUSの設定を行う。yumでインストールした場合、おそらく/etc/raddbに設定ファイルが一式インストールされているはずだ。

参考までに検証環境でのls出力を記載する。

# ls /etc/raddb/
acct_users    dictionary  ldap.attrmap      preproxy_users  sqlippool.conf
attrs         eap.conf    naslist           proxy.conf      users
certs         example.pl  naspasswd         radiusd.conf
clients       hints       otp.conf          realms
clients.conf  huntgroups  otppasswd.sample  snmp.conf

この中で、ごく初歩的な認証のみを実施する場合、編集するファイルは以下の2つである。

  • radiusd.conf
  • clients.conf

順に見ていこう。



radius.conf

RADIUSサーバーに関する設定を記載するためのファイル。
今回の目的において、デフォルトの状態で確認が必要なのは以下の2点である。

port = 0
  • /etc/servicesからポート番号を取得するため(Port 1812)
  • おそらくデフォルトが0であるため変更の必要はない
user = root 
  • /etc/shadowをradiusdが読めるようにするため
  • 通常はradiusdとなっている

認証はmoduleディレクティブに定義されている方式分(preprocess, CHAP, MS-CHAP, EAP等)実行される。

clients.conf

認証を実施するクライアントに関する設定を記載するためファイル。
認証を実施するクライアントをここに登録する。このファイルの末尾に以下のような記述を追加すればよい。

client [認証を行うクライアントのIP Address/Domain Name] {
        secret = [クライアントとなるためのパスワード]
        shortname = [任意の名前]
}

実際に例を挙げる。

client 192.168.1.254 {
        secret = juniper
        shortname = ns5gt
}

起動/確認

これでとりあえずはLinuxユーザーを利用したRADIUS認証の準備が整った。早速起動して確認するとしよう。

# /etc/init.d/radiusd start

もし、認証プロセスを検証する必要がある場合はデバッグモードで立ち上げることもできる。

# radiusd -X -A

radiusdが無事に起動したら、テストコマンドを使用してRADIUS認証が行えることを確認する。

# radtest [User] [Pass] localhost [NAS Port] [secret]

これはあくまでlocalhostに対してRADIUS認証が可能かどうかのテストであるため、先ほど設定した値ではないことに注意。

# radtest hoge hogehoge localhost 1 testing123
Sending Access-Request of id 146 to 127.0.0.1 port 1812
        User-Name = "hoge"
        User-Password = "hogehoge"
        NAS-IP-Address = 255.255.255.255
        NAS-Port = 1
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=146, length=20

hogeは自分のサーバーのユーザー名、hogehogeはそのパスワードを入力して欲しい。localhostのsecretはデフォルトでtesting123になっている。実行した結果、Access-Acceptと帰ってくればFreeRADIUSは正常に動作していることになる。

インストール

CentOSなので、yumの使用を前提に進める。

個人的にLinuxDebianGentooを愛用しているため、RedHat系のディストリビューションに触るのは久しぶりである。

RHL9では基本的にyumはインストールされていないかもしれないが、細かい検証が必要ないただの試験環境であれば、rpmでいちいちダウンロードと依存性の解決をするのは時間の無駄なので、まずyumを入れることをおすすめしたい。

RedHat Linux 9の開発は終了しているが、Fedora Legacy Projectでメンテナンスがされている。

詳細は以下を参照。

@IT:サポートが終了したRed Hat Linuxをアップデートするには(yum編)

yumをインストールしたら、アップデートやリポジトリの設定変更などをしたいところだが、今回の目的はFreeRADIUSの構築であるため割愛する。

さて、まずはfreeradiusがyumによって提供可能かどうかとそのバージョンを確認しよう。当然ながら、全ての作業はroot権限で実行する必要がある。

# yum list freeradius
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * updates: rsync.atworks.co.jp
 * addons: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
Available Packages
freeradius.i386                        1.1.3-1.4.el5                        base

コマンド実行の結果、freeradiusのパッケージ情報(赤文字部分)が表示されれば問題なくインストール可能だ。

それが確認できたら続いてインストールを実行する。

# yum install freeradius
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * updates: rsync.atworks.co.jp
 * addons: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
    • > Running transaction check
      • > Package freeradius.i386 0:1.1.3-1.4.el5 set to be updated
    • > Processing Dependency: net-snmp-utils for package: freeradius
    • > Processing Dependency: net-snmp for package: freeradius
    • > Processing Dependency: perl(DBI) for package: freeradius
    • > Running transaction check
      • > Package perl-DBI.i386 0:1.52-2.el5 set to be updated
      • > Package net-snmp-utils.i386 1:5.3.2.2-5.el5 set to be updated
      • > Package net-snmp.i386 1:5.3.2.2-5.el5 set to be updated
    • > Processing Dependency: libsensors.so.3 for package: net-snmp
    • > Running transaction check
      • > Package lm_sensors.i386 0:2.10.7-4.el5 set to be updated
    • > Finished Dependency Resolution
Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: freeradius i386 1.1.3-1.4.el5 base 1.1 M Installing for dependencies: lm_sensors i386 2.10.7-4.el5 base 513 k net-snmp i386 1:5.3.2.2-5.el5 base 711 k net-snmp-utils i386 1:5.3.2.2-5.el5 base 185 k perl-DBI i386 1.52-2.el5 base 600 k Transaction Summary ================================================================================ Install 5 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 3.1 M Is this ok [y/N]:

リポジトリへの問い合わせと依存関係の確認が行われ、必要なすべてのパッケージの一覧が表示される。
確認をし、問題がなければプロンプトにyと答えればダウンロードとインストールが始まる。
インストールの最中にいくつかの警告や質問が表示されることがあるので、都度確認し答える。それが面倒ならばyumのオプションに-yを与えることで、全ての質問に対して同意(y)したものと見なされる。

# yum install freeradius -y

問題なくインストールが実行されればComple!という表示とともにyumの処理が完了する。

Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : perl-DBI                                          [1/5] 
  Installing     : lm_sensors                                        [2/5] 
  Installing     : net-snmp                                          [3/5] 
  Installing     : net-snmp-utils                                    [4/5] 
  Installing     : freeradius                                        [5/5] 

Installed: freeradius.i386 0:1.1.3-1.4.el5
Dependency Installed: lm_sensors.i386 0:2.10.7-4.el5 net-snmp.i386 1:5.3.2.2-5.el5 net-snmp-utils.i386 1:5.3.2.2-5.el5 perl-DBI.i386 0:1.52-2.el5
Complete!

インストールが完了したら念のため以下のコマンドなどで確認をする。

# yum list freeradius
freeradius.i386                     1.1.3-1.4.el5                      installed

# rpm -q freeradius
freeradius-1.1.3-1.4.el5

# command -v radiusd
/usr/sbin/radiusd

無事インストールされたことが確認できたら、いよいよ設定に移る。

発端

知人よりFreeRADIUSの建て方を聞かれた。文書化が面倒なのでブログに記載することにする。前提条件はこんなところだろうか。

  • サーバーに使用しているディストリビューションはRHL9とかそのあたり
  • NetScreenの認証ができるようになればよい(具体的になにをどう認証するかの指定はなし)
  • 実装はFreeRADIUSを指定

とりあえず、RHL9なんていう古いディトリビューションにはとんとお目にかかっていないので、RHELクローンのCentOSで代用することにする。

NetScreenの認証についてだが、何をどう認証するのかの指定がないため、運用やセキュリティは考えないことにして一番単純な構成で構築しようと思う。

具体的にはこうだ。

  • NetScreenのAdmin認証にRADIUSを使用
  • 認証にはLinuxのユーザーを利用

今回の構成はとりあえずFreeRADIUSでユーザー認証ができることのみを目的とするため、実運用には耐えられないものであることを付け加えておく。

さて、インストールにかかろう。

Mac OS X Serverで任意のディレクトリに共有ポイントを設定する

仮想マシンと仮想ネットワークの準備は整った。次はApacheで公開(といっても仮想ネットワーク上だが)するディレクトリをゲストOS側にマウントできるようにするための共有設定だ。

さて、個人的な好みであるし、開発環境なので気にする必要もあまりないのだが、HTTPの公開用ディレクトリは/varの直下に設置することにしている。

当然、/varはUNIX領域のため、デフォルトのままではMac OS XGUIから見えない。

これらのファイルを全部表示するようにしてしまってもよいのだが、Finderで扱わない大量のファイルを表示しておくのは気分的に微妙なので、今回はsharingコマンドを使用する。

まずはディレクトリの作成。Djangoチュートリアル用に/var/www/djangoというディレクトリをつくる。

mkdir /var/www
mkdir /var/www/django

ディレクトリができたら、共有ポイントを設定する。

sharing -a /var/www/django

コマンドを使用することで、Mac OS X Serverのサーバー管理からは通常設定できない、不可視領域に共有ポイントをせっていすることができるようになる。

あとは任意のパーミッションを設定し、AFPなりNFSなりで共有にかければよい。

VMware Fusionの仮想マシンIPアドレスを固定にする

仮想マシンのインストールが終了したら、NATを使用した環境で仮想マシンIPアドレスを固定化する。

Mac間はBonjourで勝手にサービス自動検索とアドレス解決をしてくれるが、ブリッジする必要がない限り、仮想マシンなNATの奥に隠蔽し、アドレスは固定しておきたい。

DHCPクライアント側でアドレスを手入力するのはあまり好みではないので、ゲスト側仮想MACアドレスDHCPサーバー側に登録することにする。

NATを使用している場合、仮想マシンネットワークアダプタVMnet8と通信をする。NATやDHCP関係の設定はVMnet8に記述すればよい。

今回はDHCPの設定のため、dhcpd.confを編集する。

vi /Library/Application Support/VMware Fusion/vmnet8/dhcpd.conf

中身は普通のDHCPdのコンフィグであるため、ここに仮想マシン用の設定を追加する。

host VM1 {
    hardware ethernet 00:0c:29:**:**:**; 
    fixed-address 192.168.***.***; 
}

host部分のVM1には任意のホスト名。
haedware ethernet にはVMに割り当てられた仮想MACアドレス
fixed-addresには割り当てるアドレスを、DHCPで配布するアドレスレンジ内で任意に設定することができる。

要件

PythonDjangoによるウェブアプリケーション開発試験プロジェクト。
Python自体はその昔触ったものの、アプリケーション開発実績は無いに等しいため、自分が欲しかった暗号化アカウントマネージャを作ることにした。

その前に、まずは環境構築と簡単なチュートリアルを一通りこなしてみようと思う。

まずは環境構築に向けた要件を洗い出す。

  1. 実運用環境Mac OS X Server
  2. 開発言語にはPython
  3. FrameworkにはDjango
  4. コーディングはTextMateで行いたい

ぱっと思いつくのはこの程度だろうか。

実運用環境でもあり、最初からApacheMySQLPythonが入っているのだからMac OS X Serverを使って開発するのが一番よい。Pythonが入っていれば、Djangoはインストールできるだろうから、開発環境にMac OS X Serverを使えば要件の1から3は解決できる。4に関しては開発環境の領域を、TextMateの入ったマシンにマウントできれば問題ないはずだ。Mac OS X ServerでNFSかAFPを使えばいい。

さすがに実運用環境での開発はできないので、ADCからダウンロードしたMac OS X ServerをVMware FusionのゲストOSとしてインストールする。

ソフトウェア一覧

必要な構成でのインストールと、まっさらな状態でのTimeMachineによるバックアップが完了したので、ソフトウェアのインストールにかかる。

とりあえず一覧。