LoginSignup
5
6

More than 3 years have passed since last update.

FreeRADIUSまとめ

Last updated at Posted at 2020-01-17

FreeRADIUSまとめ

FreeRADIUSとは

FreeRADIUSとは、RADIUSプロトコルを実装したオープンソースソフトウェアである。
FreeRADIUSには、RADIUSサーバ、RADIUSクライアントライブラリなどが含まれている。
EAP-TLS、EAP-TTLSなどにも対応しており、RADIUSサービスを提供するために十分な機能が実装されている。

以下のサイトで詳しく説明してくれています。
FreeRADIUS ~OSSのRADIUSサーバ~

まとめを作成した経緯

仕事で調べてある程度は覚えたものの、どれが何の設定ファイルなのか、時間が経つと公式ドキュメントのどこに記載があったかも忘れて再度同じ作業を繰り返しそうだと思ったため、備忘録としてまとめることにした。
あくまで調査したものに関するもののまとめなので、触れていない設定ファイルもある。
間違い等あればご指摘いただきたい。

環境

Red Hat Enterprise Linux Server release 7.6 (Maipo)
FreeRADIUS Version 3.0.13
(freeradius-mysql,freeradius-utilsインストール済み)

ディレクトリ構成

treeコマンドでディレクトリ構成を取得
それぞれの環境で異なると思うので、一例として表示

# tree --charset=C /etc/raddb
/etc/raddb
|-- README.rst
|-- certs
|   |-- 01.pem
|   |-- 02.pem
|   |-- Makefile
|   |-- README
|   |-- bootstrap
|   |-- ca.cnf
|   |-- ca.der
|   |-- ca.key
|   |-- ca.pem
|   |-- client.cnf
|   |-- client.crt
|   |-- client.csr
|   |-- client.key
|   |-- client.p12
|   |-- client.pem
|   |-- dh
|   |-- index.txt
|   |-- index.txt.attr
|   |-- index.txt.attr.old
|   |-- index.txt.old
|   |-- passwords.mk
|   |-- serial
|   |-- serial.old
|   |-- server.cnf
|   |-- server.crt
|   |-- server.csr
|   |-- server.key
|   |-- server.p12
|   |-- server.pem
|   |-- user@example.org.pem
|   `-- xpextensions
|-- clients.conf
|-- dictionary
|-- hints -> ./mods-config/preprocess/hints
|-- huntgroups -> ./mods-config/preprocess/huntgroups
|-- mods-available
|   |-- README.rst
|   |-- always
|   |-- attr_filter
|   |-- cache
|   |-- cache_eap
|   |-- chap
|   |-- counter
|   |-- cui
|   |-- date
|   |-- detail
|   |-- detail.example.com
|   |-- detail.log
|   |-- dhcp
|   |-- dhcp_sqlippool
|   |-- digest
|   |-- dynamic_clients
|   |-- eap
|   |-- echo
|   |-- etc_group
|   |-- exec
|   |-- expiration
|   |-- expr
|   |-- files
|   |-- idn
|   |-- inner-eap
|   |-- ippool
|   |-- linelog
|   |-- logintime
|   |-- mac2ip
|   |-- mac2vlan
|   |-- mschap
|   |-- ntlm_auth
|   |-- opendirectory
|   |-- otp
|   |-- pam
|   |-- pap
|   |-- passwd
|   |-- preprocess
|   |-- python
|   |-- radutmp
|   |-- realm
|   |-- redis
|   |-- rediswho
|   |-- replicate
|   |-- rest
|   |-- smbpasswd
|   |-- smsotp
|   |-- soh
|   |-- sometimes
|   |-- sql
|   |-- sqlcounter
|   |-- sqlippool
|   |-- sradutmp
|   |-- unix
|   |-- unpack
|   |-- utf8
|   |-- wimax
|   `-- yubikey
|-- mods-config
|   |-- README.rst
|   |-- attr_filter
|   |   |-- access_challenge
|   |   |-- access_reject
|   |   |-- accounting_response
|   |   |-- post-proxy
|   |   `-- pre-proxy
|   |-- files
|   |   |-- accounting
|   |   |-- authorize
|   |   `-- pre-proxy
|   |-- preprocess
|   |   |-- hints
|   |   `-- huntgroups
|   `-- sql
|       |-- counter
|       |   `-- mysql
|       |       |-- dailycounter.conf
|       |       |-- expire_on_login.conf
|       |       |-- monthlycounter.conf
|       |       `-- noresetcounter.conf
|       |-- cui
|       |   `-- mysql
|       |       |-- queries.conf
|       |       `-- schema.sql
|       |-- ippool
|       |   `-- mysql
|       |       |-- queries.conf
|       |       `-- schema.sql
|       |-- ippool-dhcp
|       |   `-- mysql
|       |       |-- queries.conf
|       |       `-- schema.sql
|       `-- main
|           |-- mysql
|           |   |-- extras
|           |   |   `-- wimax
|           |   |       |-- queries.conf
|           |   |       `-- schema.sql
|           |   |-- queries.conf
|           |   |-- schema.sql
|           |   `-- setup.sql
|           `-- ndb
|               |-- README
|               |-- schema.sql
|               `-- setup.sql
|-- mods-enabled
|   |-- always -> ../mods-available/always
|   |-- attr_filter -> ../mods-available/attr_filter
|   |-- cache_eap -> ../mods-available/cache_eap
|   |-- chap -> ../mods-available/chap
|   |-- date -> ../mods-available/date
|   |-- detail -> ../mods-available/detail
|   |-- detail.log -> ../mods-available/detail.log
|   |-- dhcp -> ../mods-available/dhcp
|   |-- digest -> ../mods-available/digest
|   |-- dynamic_clients -> ../mods-available/dynamic_clients
|   |-- eap -> ../mods-available/eap
|   |-- echo -> ../mods-available/echo
|   |-- exec -> ../mods-available/exec
|   |-- expiration -> ../mods-available/expiration
|   |-- expr -> ../mods-available/expr
|   |-- files -> ../mods-available/files
|   |-- linelog -> ../mods-available/linelog
|   |-- logintime -> ../mods-available/logintime
|   |-- mschap -> ../mods-available/mschap
|   |-- ntlm_auth -> ../mods-available/ntlm_auth
|   |-- pap -> ../mods-available/pap
|   |-- passwd -> ../mods-available/passwd
|   |-- preprocess -> ../mods-available/preprocess
|   |-- radutmp -> ../mods-available/radutmp
|   |-- realm -> ../mods-available/realm
|   |-- replicate -> ../mods-available/replicate
|   |-- soh -> ../mods-available/soh
|   |-- sradutmp -> ../mods-available/sradutmp
|   |-- unix -> ../mods-available/unix
|   |-- unpack -> ../mods-available/unpack
|   `-- utf8 -> ../mods-available/utf8
|-- panic.gdb
|-- policy.d
|   |-- accounting
|   |-- canonicalization
|   |-- control
|   |-- cui
|   |-- debug
|   |-- dhcp
|   |-- eap
|   |-- filter
|   `-- operator-name
|-- proxy.conf
|-- radiusd.conf
|-- sites-available
|   |-- README
|   |-- buffered-sql
|   |-- challenge
|   |-- channel_bindings
|   |-- check-eap-tls
|   |-- coa
|   |-- control-socket
|   |-- copy-acct-to-home-server
|   |-- decoupled-accounting
|   |-- default
|   |-- dhcp
|   |-- dhcp.relay
|   |-- dynamic-clients
|   |-- example
|   |-- inner-tunnel
|   |-- originate-coa
|   |-- proxy-inner-tunnel
|   |-- robust-proxy-accounting
|   |-- soh
|   |-- status
|   |-- tls
|   |-- virtual.example.com
|   `-- vmps
|-- sites-enabled
|   |-- default -> ../sites-available/default
|   `-- inner-tunnel -> ../sites-available/inner-tunnel
|-- templates.conf
|-- trigger.conf
`-- users -> ./mods-config/files/authorize

ファイル・ディレクトリ概要

README.rst

version3.0へ上がったことによるversion2との差異や変更があったモジュールについて記載されている。
エディタ等で見づらい場合は、github上で公開されているものを閲覧するとよい。
Upgrading to Version 3.0

certs

サーバー証明書を作成するスクリプトが含まれるディレクトリ。
今回の調査では対象としていなかったので、デフォルトのままである。
変更等作業を行う場合は本ディレクトリ内のREADMEを見るのがよいだろう。

clients.conf

RADIUSサーバーへアクセスを行うクライアントを定義する設定ファイル。
フォーマットや使用する項目名については本ファイル内に記載されている。

version2とversion3ではフォーマットが異なっているので注意したい。
version2のフォーマットでも動作はするが、プロセスを立ち上げたときに以下のような警告がでてくるので、可能であれば修正するのがよいだろう。

No 'ipaddr' or 'ipv4addr' or 'ipv6addr' field found in client XXX.XXX.XXX.XXX. Please fix your configuration
Support for old-style clients will be removed in a future release

下記にフォーマットの例を示す。

version2
client 192.168.0.0/24 {
    secret      = testing123
    shortname   = private-network-1
}
version3
client private_range {
    ipaddr      = 192.168.0.0/24
    secret      = testing123
    shortname   = private-network-1
}

mods-available / mods-enabled

FreeRADIUSで使用するモジュールの設定を行うディレクトリ。
SQLを使用する場合もここで設定する。

モジュールを使用する場合は、mods-enabledディレクトリに対象モジュールのリンクを張らないと適用されないので注意が必要。

例:sqlのリンクを張る場合
# ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/

詳細はREADME参照 → Modules in Version 3

mods-available/sql

SQLの設定ファイル
SQLを使用する場合は、driver変数とdialect変数の種類が一致しており、DB情報を記載すればよい。
デフォルトではdriver変数にはrlm_sql_nullが、dialect変数にはsqliteが指定されている。
コメントでConnection infoと記載されている箇所にDB情報を記載する箇所があるので、
サーバーIP、ログインID、パスワード、DB名を記載する。

mods-config

各モジュール固有の構成ファイルが格納される。
詳細はREADME参照 → The mods-config Directory

mods-config/attr_filter/pre-proxy

プロキシを行う際の転送するアトリビュートのフィルターを設定する。
記載順序で設定が読み込まれるため、設定を追加する際はDEFAULTよりも前に記載する必要がある。

記載方法等は次のリンクを参照のこと → rlm_attr_filter

policy.d

version2でのpolicy.confが該当する。
属性の正規化や書き換え等のポリシーが格納される。

参照先のページに一部記載あり
How to use radiusd -X (debug mode) - Reading the configuration files

proxy.conf

転送先のHomeRADIUSや、転送を行いたいレルムの設定を行う。

詳細はproxy.conf内の説明を参照

radius.conf

FreeRADIUSの基本設定ファイル
本設定ファイルにコメントでディレクトリの説明もおおまかにされている。
冒頭のコメントを一部翻訳したものを記載する。(Bing翻訳)

この (およびその他の) 構成ファイルの形式は、"man unlang" に記載されています。
多くのサブディレクトリにも README があります。

構成ファイルを編集する前に、"man radiusd" をお読みください。
「デバッグ」というタイトルのセクションを参照してください。
最小限の労力で必要な構成をすばやく作成する方法の概要を示します。

sites-available / sites-enabled

仮想サーバーとしての設定ファイル格納ディレクトリ
詳細はREADME参照

仮想サーバーとしての設定をアクティブにする場合は、mods-available / mods-enabledと同じように
sites-enabledにリンクを張る。

おわりに

まぁ基本的に公式ドキュメント読めってなっちゃうのよね。
ただ目的の公式ドキュメントへすんなり辿り着けないことが多くて疲れることが多い。
英語がすんなり読めればそんなことはぜんぜんないのかもしれないけど。。。

時間があって気力が湧けば、FreeRADIUSを使ってなにかやって記事を充実させたいな。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6