電脳世界のケーキ屋さん

考えの甘い甘党エンジニアがいろいろ書くブログ

KVMの上のAlpineLinuxの上のFreeRADIUSサーバ

はじめに

802.1X認証がしたかったのでRADIUSサーバを構築する.
物理マシンに空きはないのでKVM上にちょこんと載せる.

構築

ゲストの作成

virt-install でサクっと作る.

virt-install --connect qemu:///system \
  --virt-type kvm \
  --os-type linux \
  --name VM_RADIUS \
  --ram 512 \
  --disk path=/var/lib/libvirt/images/VM_RADIUS.img,size=4 \
  --graphics vnc,port=5902,keymap=ja,listen=0.0.0.0,password=password \
  --cdrom=/iso/alpine-extended-3.6.2-x86_64.iso

ここでハマった点は以下の通り

  • --location でISOを指定するとエラーが出て動作しなかった
  • VNCクライアントから接続した際にキー入力が残念なことになる
    • パイプ | や アンスコ _ が打てないのは致命的
    • keymap オプションで明示することで解決

VNCクライアントで接続できたら, あとは setup-alpine でインストールを進めていく.

FreeRADIUSのインストール

> apk update
> apk add freeradius
> apk add freeradius-radclient

クライアントの設定

テスト用にインストールしたRADIUSクライアントの設定
/etc/raddb/client.conf の末尾に以下を追記.(IPアドレスは変更)

client 192.168.0.21 {
  secret = shared-key
}

PAP-CHAP通信のテスト

radclient に読み込ませるアトリビュートファイルを作成する.
ファイル名は何でも良い.

User-Name=alice
User-password=hello
# 上記のものを利用するとPAP認証になる
# 下記のものを利用するとCHAP認証になる
#Chap-password=hello

次にRADIUSサーバにユーザ登録を行う.
/etc/raddb/users の末尾に下記の内容を追記.

alice Cleartext-Password := "alice"

この状態でRADIUSデーモンを起動させる. 単発で起動させるなら radiusd & で構わない.

> rc-update radiusd default
> rc-service radiusd start

これでRADIUS認証の準備が整ったので radclient でテスト通信を行う.

> radclient -x -f alice.attr 192.168.0.21 auth shared-key

認証が通れば Accept-Acceps と返ってくる. アトリビュート内のパスワードを変えるなどすると Accept-Reject などと返ってくることが確認できる.
no reply from server などというワードが出てきたのならサーバの設定が怪しい.

参考文献

FreeRadiusの初期設定はこのページ通りに行えば上手くいきます.
http://www.nttpc.co.jp/technology/free_radius.html