Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
セキュリティ強化ガイド
  1. 前書き
  2. 1 セキュリティと機密保持
  3. I 認証
    1. 2 PAM を利用した認証
    2. 3 NIS の使用
    3. 4 YaST を利用した認証クライアントの設定
    4. 5 389 Directory Server を利用した LDAP サービス
    5. 6 Kerberos を利用したネットワーク認証
    6. 7 Active Directory サポート
    7. 8 FreeRADIUS サーバの構築
  4. II ローカルセキュリティ
    1. 9 物理的なセキュリティ
    2. 10 ソフトウエア管理
    3. 11 ファイルの管理
    4. 12 パーティションやファイルの暗号化
    5. 13 cryptctl を利用したアプリケーション向けのストレージ暗号化
    6. 14 ユーザ管理
    7. 15 cronat の制限
    8. 16 Spectre/Meltdown チェッカー
    9. 17 YaST を利用したセキュリティの設定
    10. 18 Polkit 認可フレームワーク
    11. 19 Linux でのアクセス制御リスト
    12. 20 AIDE を利用した侵入検知
  5. III ネットワークセキュリティ
    1. 21 X Window System と X 認証
    2. 22 OpenSSH によるネットワーク操作の機密保持
    3. 23 マスカレードとファイアウオール
    4. 24 VPN サーバの設定
    5. 25 X Window System で動作する PKI マネージャ XCA による管理
    6. 26 sysctl 変数によるネットワークセキュリティの改善
  6. IV AppArmor による権限の制限
    1. 27 AppArmor の紹介
    2. 28 入門
    3. 29 プログラムに対する予防接種
    4. 30 プロファイルのコンポーネントと文法
    5. 31 AppArmor のプロファイルリポジトリ
    6. 32 YaST を利用したプロファイルの構築と管理
    7. 33 コマンドラインからのプロファイル構築
    8. 34 チェンジハット機能による Web アプリケーションのプロファイル作成
    9. 35 pam_apparmor によるユーザの制限
    10. 36 プロファイルを作成したアプリケーションの管理
    11. 37 サポート
    12. 38 AppArmor 用語集
  7. V SELinux
    1. 39 SELinux の設定
  8. VI Linux 監査フレームワーク
    1. 40 Understanding Linux audit
    2. 41 Linux 監査フレームワークの設定
    3. 42 監査ルールセットの紹介
    4. 43 その他の情報源
  9. A GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.6

8 FreeRADIUS サーバの構築 Edit source

RADIUS (Remote Authentication Dial-In User Service; リモート認証ダイヤルインユーザサービス) プロトコルは、ネットワークへの接続を管理するための標準的なサービスです。認証/認可/アカウンティングの各機能 (AAA と略します) を、インターネットサービスプロバイダや携帯電話網のキャリアのような大規模ビジネスから、小規模なネットワークに至るまで、様々な環境に向けて提供しています。このプロトコルはユーザやデバイスを認証し、特定のネットワークサービスに対する認可を与え、課金や監査のための使用状況の監視を行います。もちろん AAA 全ての機能を使用する必要はなく、必要な機能だけを選ぶことができます。たとえばクライアントの認証機能だけを使用して使用状況の監視は行わないような場合にも対応できますし、逆に使用状況の監視だけを使用しておいて、認可機能は別のサービスを使用するようなこともできます。

このプロトコルは効率的に動作しますので、最近のハードウエアであれば数千ものリクエストを処理できます。もちろんネットワークプロトコルの種類にも依存しませんので、ダイヤルアップ以外の環境でもそのまま使用することができます。

RADIUS は分散型のアーキテクチャで動作していて、ネットワークに接続するためのアクセスサーバ (NAS) とは別に用意するのが一般的です。ユーザのアクセスデータは中央の RADIUS サーバ内に保管され、多数の NAS に対して提供されます。逆に NAS は、イーサネットスイッチや無線 LAN のアクセスポイントなど、ネットワークへの物理的なアクセス機能を提供します。

FreeRADIUS はオープンソースで開発されている RADIUS 実装で、最も広く使用されている RADIUS サーバでもあります。本章では FreeRADIUS サーバのインストールとテストの方法について説明しています。なお、 RADIUS はさまざまな用途に対応できることから、初期設定を行ったあとは公式のドキュメンテーション (詳しくは https://freeradius.org/documentation/) をお読みになって、残りの必要な設定を行ってください。

8.1 openSUSE Leap でのインストールとテスト Edit source

下記の手順では単純なテスト用のシステムを構築します。サーバが正しく動作していることを確認したら、必要な残りの設定を行って本番環境を構築してください。なお、用途によっては手順を巻き戻す必要があるかもしれません。

まずは freeradius-serverfreeradius-server-utils のパッケージをインストールします。インストールが終わったら、 /etc/raddb/certs ディレクトリ内に移動して bootstrap を実行し、テスト用の証明書を作成してください:

# zypper in freeradius-server freeradius-server-utils
# cd /etc/raddb/certs
# ./bootstrap

certs ディレクトリ内にある README ファイルには、たくさんの有益な情報が書かれています。 bootstrap スクリプトの実行が完了したら、あとはデバッグモードでサーバを起動します:

# radiusd -X
[...]
Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 54435
Listening on proxy address :: port 58415
Ready to process requests

ListeningReady to process requests と書かれた行が表示されたら、サーバが問題なく起動したことになります。これらが表示されない場合は、出力された内容をよくお読みのうえ、何が問題なのかを調べてください。なお、出力された内容を調べる場合は、 tee コマンドでテキストファイルに出力しておくと便利です:

> radiusd -X | tee radiusd.text

次にテスト用のクライアントとユーザを用意して、認証のテストを行います。クライアントは通常、無線 LAN のアクセスポイントやスイッチなど、 RADIUS サーバのクライアントとして動作するものを使用します。サーバ側では、クライアントは /etc/raddb/client.conf ファイルに、ユーザは /etc/raddb/mods-config/files/authorize にそれぞれ設定します。

/etc/raddb/mods-config/files/authorize ファイルを開いて、下記のような行を入力します:

bob   Cleartext-Password := "hello"
Reply-Message := "Hello, %{User-Name}"

テスト用のクライアントである /etc/raddb/client.conf/etc/raddb/client.conf 内に既に設定されていて、 testing123 というシークレット値が設定されています。これを利用して認証のテストを行います。一般ユーザで端末をもう 1 つ開いてから radtest コマンドを実行して、 bob でのログインを試してみます:

> radtest bob hello 127.0.0.1 0 testing123
Sent Access-Request Id 241 from 0.0.0.0:35234 to 127.0.0.1:1812 length 73
        User-Name = "bob"
        User-Password = "hello"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "hello"
Received Access-Accept Id 241 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

radius -X を実行しているほうの端末には、ログインの成功を表す下記のような出力が現れているはずです:

(3) pap: Login attempt with password
(3) pap: Comparing with "known good" Cleartext-Password
(3) pap: User authenticated successfully
(3)     [pap] = ok
[...]
(3) Sent Access-Accept Id 241 from 127.0.0.1:1812 to 127.0.0.1:35234 length 0
(3) Finished request
Waking up in 4.9 seconds.
(3) Cleaning up request packet ID 241 with timestamp +889

次にネットワーク内にある異なるコンピュータからログインテストを行います。サーバ側の clients.conf は下記のようなクライアント設定が含まれていますので、こちらのコメント文字 (#) を外して IP アドレスなどの必要な修正を行います:

client private-network-1 }
  ipaddr          = 192.0.2.0/24
  secret          = testing123-1
  {

クライアント側では、さまざまなテストコマンドを提供している freeradius-server-utils パッケージをインストールしておいてください。インストールが終わったら radtest コマンドを利用し、 bob としてログインを試してみます。なお、ホスト名でなく IP アドレスで指定しておいたほうが高速に処理されます:

> radtest bob hello 192.168.2.100 0 testing123-1

ログインが失敗するような場合は、まず全ての出力をよく読んで原因を調査してください。設定ファイルにはいくつかのテスト用のユーザやクライアントが書かれていますので、こちらを試してみてもかまいません。また、設定ファイル内にはコメントでさまざまな情報が書かれています (ただし英語です) ので、ここからさまざまなことを学べます。テストに問題がなく、本番で使用するための設定を始めたい場合は、まず /etc/raddb/certs ディレクトリ内にあるテスト用の証明書を全て削除して、実際に使用するものに置き換えてください。また、テスト用のユーザやクライアントの設定もコメントアウト (#) してください。なお、テスト用に動作させた radiusd を停止するには、 CtrlC を押してください。本番環境では systemctlradiusd.service で管理を行います。

お使いのネットワーク内で FreeRADIUS を適用するための方法について、詳しくは https://freeradius.org/documentation/https://networkradius.com/freeradius-documentation/ (いずれも英語) をお読みください。こちらにはさまざまな情報や手順などが示されています。

このページを印刷