Radius服務全名為遠端用戶撥入驗證服務(RADIUS, Remote Authentication Dial In User Service),是一個AAA協議,三個A代表的意思是指驗證(Authentication)、授權(Authorization)和計費(Accounting),三種服務的一種網路傳輸協議,用於網路存取、流動IP服務。
一、安裝MariaDB資料庫
- 登入root帳號
- 使用yum安裝MariaDB資料庫
# yum install mariadb mariadb-server
- 啓動和設置開機啓用MariaDB
# systemctl enable mariadb.service # systemctl start mariadb.service
- 檢查MariaDB是否運行狀態
# systemctl status mariadb # systemctl is-enabled mariadb.service enabled
- 安裝後初始化資料庫安全設置
# mysql_secure_installation
二、建立FreeRadius資料庫
- 使用root帳號登入MariaDB
# mysql -u root -p
- 建立命為radius的資料庫
MariaDB> CREATE DATABASE radiusdb;
- 新增與設置用戶名及密碼
MariaDB> GRANT ALL ON radiusdb.* TO dbuser@localhost IDENTIFIED BY "dbpassword"; MariaDB> GRAND ALL ON radiusdb.* TO dbuser@'%' IDENTIFIED BY "dbpassword"; MariaDB> FLUSH PRIVILEGES; MariaDB> quit;
三、安裝FreeRadius
- 使用yum安裝FreeRadius
# yum install freeradius freeradius-utils freeradius-mysql
- 匯入radius資料庫schema
# mysql -u root -p radiusdb < /etc/raddb/mods-config/sql/main/mysql/schema.sql
- 配置FreeRadius使用MariaDB
啟用SQL模組# ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/ # chgrp -h radiusd /etc/raddb/mods-enabled/sql
配置連接MariaDB資料庫的文件,以下為主要修改的文件內容
# vim /etc/raddb/mods-available/sql sql { driver = "rlm_sql_mysql" dialect = "mysql" server = "localhost" port = 3306 login = "dbuser" password = "dbpassword" radius_db = "radiusdb" } - 調整FreeRadius與MariaDB的開機啓動順序
設置開機啓用FreeRadius# systemctl enable radiusd.service
FreeRadius服務必須在資料庫正常啓動後才能正常啓動,否則會無法啓動並報錯,所以需要修改Radius服務的開機啓動順序
# vim /etc/systemd/system/multi-user.target.wants/radiusd.service
在[Unit]部分,增加以下內容
[Unit] Description=FreeRADIUS high performance RADIUS server. After=syslog.target network.target After=mariadb.service
- 添加客戶端連接設置
編輯/etc/raddb/clients.conf文件,為允許連接的客戶端設置相對應的共享密鑰client localhost { ipaddr = 127.0.0.1 proto = * secret = demo_radius_secret } # IPv6 Client client localhost_ipv6 { ipv6addr = ::1 secret = demo_radius_secret } - 啓動Radius服務
# systemctl start radiusd.service # systemctl status radiusd.service
- 測試Radius
使用root帳號登入MariaDB
選用radiusdb資料庫MariaDB> use radiusdb;
SQL添加一筆測試記錄到radcheck資料表
MariaDB> INSERT INTO radcheck (id, username, attribute, op, value) VALUES (1,'testuser','Cleartext-Password',':=','testpassword');
使用radtest指令測試
# radtest testuser testpassword localhost 0 demo_radius_secret
認證成功的輸出結果如下
Sent Access-Request Id 167 from 0.0.0.0:36533 to 127.0.0.1:1812 length 78User-Name = "testuser" User-Password = testypassword" NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Message-Authenticator = 0x00 Cleartext-Password = "testpassword" Received Access-Accept Id 167 from 127.0.0.1:1812 to 0.0.0.0:0 length 20 - Radius的調試
如果Radius啓動出現問題,可以先停止Radius的程序,使用 -x 參數的方式啓動調試模式# pkill radius # radiusd -x
四、防火牆配置Radius相關規則
- 配置防火牆,打開Radius服務端口
# systemctl enable firewalld # systemctl start firewalld # systemctl status firewalld
- 添加Radius服務
cat /usr/lib/firewalld/services/radius.xml firewall-cmd --add-service=radius --permanent firewall-cmd --reload firewall-cmd --list-services
如果不想讓Raidus端口暴露在公網上,可以只允许特定IP地址訪問Radius服務
firewall-cmd --permanent --new-zone=radius firewall-cmd --reload firewall-cmd --permanent --zone=radius --set-target=ACCEPT firewall-cmd --permanent --zone=radius --add-service=radius firewall-cmd --permanent --zone=radius --add-source=192.168.x.x/32 firewall-cmd --permanent --zone=radius --add-source=192.168.x.x/32 firewall-cmd --reload firewall-cmd --get-active-zones
鏈結到這頁!
