【syslog-ng Store Box (SSB)】RADIUSサーバーへのユーザー認証

螺子です。今回は連載記事とは別に、SSBで、RADIUSサーバーへのユーザー認証についてご紹介したいと思います。

はじめに

SSBは外部のRADIUS (Remote Authentication Dial In User Service)サーバーにユーザー認証することができます。

これにより、Wi-Fiアクセスポイントの認証と同じようにSSBもユーザー認証できたり、SSBの管理者とは別にパスワード管理できたりします。また、他のシステムと組み合わせてワンタイムパスワードなどによるログインなどが可能になります。

今回は、`FreeRADIUS`を使用して、SSBでRADIUSサーバーへのユーザー認証を行ってみます。

また、SSBでRADIUS サーバーにユーザー認証する場合は、以下の留意事項があります。

  • ユーザーのグループメンバーシップはSSBのローカルまたはLDAP データベースのどちらかで管理する必要があります。
  • チャレンジレスポンス認証方式は、現在サポートしていません。他の認証方式(例、パスワード、SecureID)は動作します。

FreeRADIUSのインストールおよび設定

今回は、CentOS 7に`FreeRADIUS`をインストール、設定しました。

# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
# yum -y update
:

# yum info freeradius
:

# yum -y install freeradius freeradius-utils    // ユーティリティもあわせてインストール。
:

# rpm -qa | grep freeradius
freeradius-utils-3.0.13-15.el7.x86_64
freeradius-3.0.13-15.el7.x86_64

以下の設定ファイルを変更します。

  • /etc/raddb/radiusd.conf
    RADIUSサーバー全般の設定。
  • /etc/raddb/clients.conf
    RADIUS Clientsの定義ファイル。
  • /etc/raddb/users
    RADIUS認証を行うユーザ名、パスワードの定義ファイル。

radiusd.confファイルを修正して、認証ログを取得します。以下では、元のファイルを.originalとして保存して比較しています。

# diff radiusd.conf.original radiusd.conf
342c342
<       auth = no
---
>       auth = yes
350,351c350,351
<       auth_badpass = no
<       auth_goodpass = no
---
>       auth_badpass = yes
>       auth_goodpass = yes

clients.confファイルを修正して、アクセス可能な`Authenticator`のIPアドレスと、Radiusサーバ通信時に利用する`Secret`を指定します。SSBでは、secretの値が、`Shared secret` (共有シークレット)パラメーターに対応します。

# diff clients.conf.ogiginal clients.conf
250a251,255
> client network {
>       ipaddr          = 0.0.0.0/0
>       secret          = testing123
> }
>

usersファイルを修正して、ユーザーを設定します。書式は、`<ユーザー名> Cleartext-Password := <パスワード>`です。

# diff users.original users
90a91,93
> user-a Cleartext-Password:="password-a"
> user-b Cleartext-Password:="password-b"

必要に応じてファイアウォールのポートを開けます。

# firewall-cmd --add-port=1812/udp --permanent
success
# firewall-cmd --reload
success

最後に、`FreeRadius`を有効化してサービスを起動します。

# systemctl enable radiusd
Created symlink /etc/systemd/system/multi-user.target.wants/radiusd.service → /usr/lib/systemd/system/radiusd.service.
# systemctl start radiusd

認証テスト

念のため、認証テストを行ってみます(テスト用コマンドは、`freeradius-utils`に含まれています、リモートホストからテストする場合は、`freeradius-utils`をインストールしてください)。

成功時例。

# radtest -4 user-a password-a 192.168.91.145 1812 testing123
Sent Access-Request Id 191 from 0.0.0.0:46083 to 192.168.91.145:1812 length 76
        User-Name = "user-a"
        User-Password = "password-a"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00
        Cleartext-Password = "password-a"
Received Access-Accept Id 191 from 192.168.91.145:1812 to 10.0.2.212:46083 length 20

失敗時例。

# radtest -4 user-a password-b 192.168.91.145 1812 testing123
Sent Access-Request Id 187 from 0.0.0.0:36911 to 192.168.91.145:1812 length 76
        User-Name = "user-a"
        User-Password = "password-b"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00
        Cleartext-Password = "password-b"
Received Access-Reject Id 187 from 192.168.91.145:1812 to 10.0.2.212:36911 length 20
(0) -: Expected Access-Accept got Access-Reject

アクセスログは`/var/log/radius/radius.log`に出力されています。

# cat /var/log/radius/radius.log
Wed May 10 09:34:00 2023 : Auth: (11) Login OK: [user-a/password-a] (from client network port 1812)
Wed May 10 09:34:21 2023 : Auth: (12) Login incorrect (pap: Cleartext password does not match "known good" password): [user-a/password-b] (from client network port 1812)

リモートホストからの認証テストで、以下のように`No reply from server`で接続できない場合、Cent OS側でファイアウォールの設定(ポートの許可)がされているか確認してください。

# radtest -4 user-a password-a 192.168.91.145 1812 testing123
Sent Access-Request Id 179 from 0.0.0.0:33186 to 192.168.91.145:1812 length 76
        User-Name = "user-a"
        User-Password = "password-a"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00
        Cleartext-Password = "password-a"
Sent Access-Request Id 179 from 0.0.0.0:33186 to 192.168.91.145:1812 length 76
        User-Name = "user-a"
        User-Password = "password-a"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00
        Cleartext-Password = "password-a"
Sent Access-Request Id 179 from 0.0.0.0:33186 to 192.168.91.145:1812 length 76
        User-Name = "user-a"
        User-Password = "password-a"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00
        Cleartext-Password = "password-a"
(0) No reply from server for ID 179 socket 3

認証成功時と失敗時のパケットをキャプチャしたので、上げておきます。もちろんパスワードは暗号化されていますね。また、プロトコルはUDPを使用しています(ファイアウォールの設定時にTCPと間違えて通信できなくて少し焦りました^^;)。

図1. 認証成功時のキャプチャ
図2. 認証失敗時のキャプチャ

SSBの設定

RADIUS サーバーの準備ができましたので、SSBで以下設定を行います。

[AAA]>[Settings]で、以下を設定します。

  • RADIUSサーバーのAddressPortおよびShared secret
  • Password expirationを0、Number of passwords to rememberを0、Minimal password strengthをdisabledにします。
図3. [AAA]>[Settings]設定例

[AAA]>[Local Users]で、ユーザーを作成します。

※パスワードは必須ですので任意のパスワード(RADIUSパスワードと同一ではなくとも大丈夫です)を入力してください。

図4. [AAA]>[Local Users]設定例

ログイン時に、RADIUSで設定したパスワードを入力してログインします。

図5. ログイン例

RADIUSサーバーでユーザー認証され正しくログインできました。

図6. ログイン成功画面例

SSBの機能

本記事で使用したSSBの機能は以下の通りです。

  • RADIUS サーバーへのユーザー認証

参考資料

RADIUS サーバーへのユーザー認証のの詳細については、syslog-ng Store Box 6 LTS管理者ガイドの「5.5 RADIUS サーバーへのユーザー認証」を参照してください。

また、`FreeRADIUS`の構築については、以下サイトを参考にさせていただきました。

なお、SSBは、外部の LDAP データベースにユーザー認証することもできます。ご興味のある方は、過去記事「「Active Directoryと連携して、Active Directoryユーザー認証!」syslog-ng Store Box活用連載企画vol.7」もあわせてご覧ください。

いかがでしたでしょうか。今回は、SSBで、RADIUSサーバーへユーザー認証を行ってみました。

それでは、次回の連載記事をお楽しみに!

「リモートアクセスログを調査」連載記事リスト

「syslog-ng Store Box大活用連載企画」連載記事リスト



SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。

syslog-ng Store Boxについての詳細は、製品紹介ページ・製品ガイドをご参照ください。

こんな記事も読まれています

最新記事

おすすめ記事

  1. 産業スパイを発見し、防ぐ方法とは

  2. Flexible NetFlowとは?を5分で理解する

  3. WinSyslog 使い方ガイド#2 受信時刻とデバイスタイムスタンプ両方を出力する

製品カテゴリー

JTC IT用語集
TOP