はじめに
この記事は、管理しないといけないASAがたくさんあって、下記のように考えている人向けです。
・ASAにログインするときに、RADIUSで認証したい
・ログイン後、enableコマンドを打ちたくない
やってみたこと
下の構成図のように構築して、タイトルの内容をやってみました。
ログインに成功すると、すぐさまプロンプトが#
になります。
User Access Verification
Username: bob
Password: *****
User bob logged in to fw1
Logins over the last 1 days: 10. Last login: 04:23:19 UTC Aug 20 2022 from 192.168.0.100
Failed logins since the last login: 0.
Type help or '?' for a list of available commands.
fw1#
手順
①事前準備
ASA、Rocky Linux、PCの初期セットアップとPing疎通確認を行いますが、
詳細は省略します。
②FreeRADIUSインストール
下記を順番に実行してインストールします。LDAPは今回は不要ですが、インストールしておきます。
$ sudo dnf -y update
$ sudo dnf makecache --refresh
$ sudo dnf -y install freeradius
$ sudo dnf -y install freeradius-ldap
$ sudo dnf -y install freeradius-utils
③FreeRADIUS設定
/etc/raddb/client.conf
を編集して、Cisco ASAからの認証リクエストを受け付けるようにします。緩めに設定します。
client test-network {
ipaddr = 192.168.0.0/24
secret = testing123
}
/etc/raddb/mods-config/files/authorize
を編集して、テストで使用するユーザーbob
を追加します。
1行目は、同じ内容が設定ファイルにコメントアウトされて記載されていますので、
近辺に追加します。
bob Cleartext-Password := "hello"
Service-Type = Administrative-User,
Cisco-AVPair = "shell:priv-lvl=15"
④証明書作成
EAP-TLSを実施したいわけではないのですが、作成しないとFreeRADIUSが動かないようなので作成します。
rootユーザになってから実行します。
# cd /etc/raddb/certs/
# make ca.pem
# make server.pem
# make client.pem
# openssl pkcs12 -export -in ca.pem -out ca.p12
# openssl dhparam -out /etc/raddb/certs/dh 2048
# chmod 644 /etc/raddb/certs/client.crt
# chmod 644 /etc/raddb/certs/client.key
# chmod 644 /etc/raddb/certs/server.pem
⑤Rocky LinuxのFirewall設定
初期状態でFirewallが有効になっていると、RADIUSの通信パケットが破棄されますので、破棄されないように許可設定を追加します。
$ sudo firewall-cmd --zone=public --permanent --add-service=radius
$ sudo firewall-cmd --reload
⑥FreeRADIUS起動と確認
FreeRADIUSを起動させます。2行目のコマンドで状態を確認します。
$ sudo systemctl start radiusd
$ sudo systemctl status radiusd
起動している場合、2行目のコマンドの実行結果として、active (running)
という表示が見つかると思います。
⑦Cisco ASAの設定
Interfaceは設定済ということで進めていますが、Interface設定も書いておきます。
下記を設定します。コピペですね。
hostname fw1
interface Management0/0
management-only
nameif management
security-level 100
ip address 192.168.0.200 255.255.255.0
exit
aaa-server freeradius protocol radius
aaa-server freeradius (management) host 192.168.0.43
key testing123
authentication-port 1812
accounting-port 1813
exit
telnet 192.168.0.0 255.255.255.0 management
username woo password hello privilege 15
no username bob
aaa authentication telnet console freeradius LOCAL
aaa authorization exec authentication-server auto-enable
⑧テスト
いきなり、Telnetしてみても動くと思いますが、動かない場合を考慮して動作確認です。下記はCisco ASA側でのテスト成功例です。
fw1# test aaa-server authentication freeradius host 192.168.0.43 username bob password hello
INFO: Attempting Authentication test to IP address (192.168.0.43) (timeout: 12 seconds)
INFO: Authentication Successful
fw1#
成功しない場合は、Rocky Linux側で下記を実施してみます。
下記は成功例です。
$ radtest bob hello 192.168.0.43 0 testing123
Sent Access-Request Id 203 from 0.0.0.0:42680 to 192.168.0.43: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 203 from 192.168.0.43:1812 to 192.168.0.43:42680 length 51
Service-Type = Administrative-User
Cisco-AVPair = "shell:priv-lvl=15"
$
③で設定したkey
が違う場合は、RADIUS Serverが応答しませんので、応答がないという表示がでます。ユーザー名/パスワードが違う場合は、応答として、Access-Rejectを受け取ります。
やってみた
Cisco ASAにTelnetを実行してみます。下記のようにログインできて、プロンプトがfw1#
となっていれば、成功です。
User Access Verification
Username: bob
Password: *****
User bob logged in to fw1
Logins over the last 1 days: 10. Last login: 04:23:19 UTC Aug 20 2022 from 192.168.0.100
Failed logins since the last login: 0.
Type help or '?' for a list of available commands.
fw1#
補足
Rocky Linuxを再起動した場合に、FreeRADIUSを自動起動させるには、下記を実行する必要があります。
$ sudo systemctl enable radiusd