螺子です。今回は連載記事とは別に、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と間違えて通信できなくて少し焦りました^^;)。
SSBの設定
RADIUS サーバーの準備ができましたので、SSBで以下設定を行います。
[AAA]>[Settings]で、以下を設定します。
- RADIUSサーバーの
Address
、Port
およびShared secret
。 Password expiration
を0、Number of passwords to remember
を0、Minimal password strength
をdisabledにします。
[AAA]>[Local Users]で、ユーザーを作成します。
※パスワードは必須ですので任意のパスワード(RADIUSパスワードと同一ではなくとも大丈夫です)を入力してください。
ログイン時に、RADIUSで設定したパスワードを入力してログインします。
RADIUSサーバーでユーザー認証され正しくログインできました。
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サーバーへユーザー認証を行ってみました。
それでは、次回の連載記事をお楽しみに!
「リモートアクセスログを調査」連載記事リスト
- (その1)「フィルターログスペースを使用して必要なログのみ検索・抽出してみる!」
- (その2)「マルチログスペースを使用してログを集約してみる!」
- (その3)「リモートログスペースを使用して他のSSBに保存したログを検索・抽出してみる!」
- (その4)「サービス残業させていない?リライトを使用して日時を指定して検索してみる!」
- (その5)「サービス残業させていない?業務時間外勤務の実態をグラフで見やすく!」
- (その6)「サービス残業させていない?レポートを日ごと、週ごと、月ごとに定期的に送信!」
- (その7)「不正アクセスされていない?アクセス元IPアドレスから国・都市・ASNの調査!」
- (その8)「不正アクセスされていない?認証エラーの確認はしなくて大丈夫?」
- (その9)「不正アクセスされていない?認証エラーのログを見逃さない!(コンテンツベースアラート)」
- (その10)「不正アクセスされていない?認証エラーのログを見逃さない!(パターンデータベースアラート)」
「syslog-ng Store Box大活用連載企画」連載記事リスト
- 第1回「syslog-ng Store Boxを知る」
- 第2回「syslog-ng Store Boxを仮想環境にインストールする」
- 第3回「syslog-ng Store Boxで出来ることまとめ」
- 第4回「Wiresharkでsyslogプロトコルパケットを覗く」
- 第5回「Ciscoスイッチ、FortigateファイアウォールログをSSBで受信!よりログを検索しやすく」
- 第6回「RPC APIを使ってみる、自社システムに統合!ログ検索の自動化!」
- 第7回「Active Directoryと連携して、Active Directoryユーザー認証!」
- 第8回「SSBをHA(High Availability)構成で構築してみる!」
- 第9回「ログをバイナリおよびテキスト形式で保存、違いを比較してみる」
- 第10回「ログファイルを共有して、外部ホストからアクセスしてみる!」
- 第11回「フィルターを使用して、必要なログのみ保存してみる!」
- 第12回「SSBの監視とアラート!SNMPマネージャーで監視およびSNMPトラップを受信してみる」
- 第13回「コンテンツベースアラート。重要なログを見逃さない!」
- 第14回「設定変更履歴。コンプライアンスにも対応!」
- 第15回「トラブルシューティングに役立つ機能。問題を迅速に解決!」
- 第16回「ユーザーアクセス制御。アクセス権限とタイプを設定してみる!」
- 第17回「リライト機能。ログの整形や正規化!」
- 第18回「バックアップリストア。システムデータおよびログデータをバックアップ、リストアしてみる!」
- 第19回「アーカイブ/クリーンアップ。ログデータをアーカイブ、クリーンアップしてみる!」
- 第20(最終)回「SSBの有効活用および安定稼働のためのポイントを紹介!」
SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。
syslog-ng Store Boxについての詳細は、製品紹介ページ・製品ガイドをご参照ください。