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クライントがサーバに転送して認証する。
不正な認証が行われないようクライアントとサーバの間で共有キーにて認証を行う。
RADIUS | TACACS+ | |
---|---|---|
標準化 | RFC | Cisco独自 |
ポート | 1812,1813/UDP | 49/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のインストール
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
テスト
まずは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という言葉は良く聞くけれど試したことがなかったので新鮮だった。