AAA/RADIUS認証 Cisco+FreeRADIUS

サーバー

AAA/RADIUS認証 Cisco+FreeRADIUS ~FreeRADIUS設定~

AAA

AAAとは、Authentication(認証), Authorization(認可), Accounting(アカウンティング)
の頭文字3つを取った略称。これらをそれぞれ独立させて設定を行うことができる。

Authentication認証。ユーザーが誰であるかを明確にする。ID/Pass, 証明書などが利用される。
Authorization認可。認証の通ったユーザに対して権限を制限する。
Accountingアカウンティング。認証の通ったユーザのログを収集し追跡できるようにする。

Ciscoのルータ, スイッチではAAAによる設定が可能であり、RADIUS, TACACS+のような認証サーバやローカル認証にも対応している。
※Cisco独自のTACACS+の設定についてはこのページでは触れない。

RADIUS

Radiusとはユーザ認証のプロトコル。

ユーザー、RADIUSクライアント、RADIUSサーバで構成され、ユーザーの認証要求をRAIDIUSクライントがサーバに転送して認証する。
不正な認証が行われないようクライアントとサーバの間で共有キーにて認証を行う。

RADIUSTACACS+
標準化RFCCisco独自
ポート1812,1813/UDP49/TCP
暗号化パスワードのみ全体
分離認証+認可, アカウンティング認証, 認可, アカウンティング

RADIUSはUDPを利用する。
認証認可がセットになっており、認証認可は1812/UDP,
アカウンティングは1813/UDPが利用される。

認証方式は様々で、
PAP, CHAP, EAP-MD5, EAP-TLS, EAP-TTLS, EAP-PEAP, EAP-SIMなどが利用可能。
また、RADIUSサーバーの先にはLDAPサーバなどを設置することもある。

FreeRADIUS

FreeRADIUSはRADIUSサーバソフトウェアでGNUライセンスのOSS

FreeRADIUS
The world's leading RADIUS server. The project includes a GPL AAA server, BSD licensed client and PAM and Apache modules...
FreeRADIUSのインストール

CentOS7にインストール

#yum install freeradius //本体
#yum install freeradius-utils //テストツールなど
#firewall-cmd --add-service=radius --permanent //ファイアウォール
#firewall-cmd --reload

初期テスト
まずは認証テストを行うため、「/etc/raddb/mods-config/files/authorize」に追記する

testing Cleartext-Password := "password"

追記出来たら、デバッグモードで起動。

#radiusd -X //フォアグラウンドで起動テスト
Ready to process requests  //これが出れば起動成功

【違うターミナルウィンドウから】
#radtest testing password 127.0.0.1 0 testing123
Sent Access-Request Id 205 from 0.0.0.0:47406 to 127.0.0.1:1812 length 77
        User-Name = "testing"
        User-Password = "password"
        NAS-IP-Address = 192.168.1.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "password"
Received Access-Accept Id 205 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

このように「Access-Accept」が帰ってくれば成功。

CiscoでRADIUS認証

非常にシンプルな構成で今回はインターネット接続せず、RADIUSをつかい、LinuxからR1,R2にログインすればOKとする。

基本設定

IPアドレス等基本設定は省略する。
LinuxからRADIUS-Serverに疎通できるように設定。

ユーザーの追加

ユーザの追加は「/etc/raddb/users」で行う。
今回はciscoのルータで利用する前提

user-a   Cleartext-Password := "cisco123"
         Service-Type = NAS-Prompt-User,
         Cisco-AVPair = "shell:priv-lvl=3"

Cleartext-Password => ユーザのパスワード
shell:priv-lvl=3 特権レベル

クライアントの追加

FreeRADIUSにciscoをクライアントとして追加する。
クライアントの追加は「/etc/raddb/clients.conf」で行う

client R1 {
    ipaddr = 192.168.1.254/24
    secret = hogehoge
}
CiscoRouterで設定

aaaの有効化

(config)#aaa new-model

RADIUSサーバを登録

(config)#radius server FreeRADIUS
(config-radius-server)#address ipv4 192.168.1.1 auth-port 1812 acct-port 1813 //ポート
(config-radius-server)#key hogehoge //preshared-key

RADIUSサーバを認証サーバグループに登録(複数のRADIUSサーバが使える)

(config)#aaa group server radius FreeRADIUS-grp
(config-sg-server)#server name FreeRADIUS

aaaの設定

(config)#aaa authentication login default group FreeRADIUS-grp

telnetの有効化
telnetは暗号化されないため利用すべきではないが、今回は楽なので使う

(config)#line vty 0 4
(config-line)#transport input telnet

aaaの認証方法をRADIUSのみにした場合はRADIUSサーバに障害が起きるとログインできない。RADIUSサーバ+ローカルにすれば障害時でも対応可能。

テスト

まずはCiscoルータからテストをしてみる。

#test aaa group radius user-a cisco123 port 1812 new-code
User successfully authenticated

USER ATTRIBUTES

service-type         0   7 [NAS Prompt]
priv-lvl             0   3 (0x3)

成功しており、権限レベルも3になっている。

次にPCからR1に対してログインしてみる。

このように、user-a, cisco123でログインができた。

PCからR1に対してログインするときのR1<=>RADIUS-Serverのパケットをキャプチャしたもの。
ユーザー名は見えているが、パスワードは暗号化されている。

帰りのAcceptについては認可のアトリビュートも設定されている

以上。

実際はもっと細く設定もでき、daloRADIUSなどGUIで設定できたりする。
RADIUSという言葉は良く聞くけれど試したことがなかったので新鮮だった。

コメント

タイトルとURLをコピーしました