CentOS7 安裝FreeRadius

Radius服務全名為遠端用戶撥入驗證服務(RADIUS, Remote Authentication Dial In User Service),是一個AAA協議,三個A代表的意思是指驗證(Authentication)、授權(Authorization)和計費(Accounting),三種服務的一種網路傳輸協議,用於網路存取、流動IP服務。

一、安裝MariaDB資料庫

  1. 登入root帳號
  2. 使用yum安裝MariaDB資料庫
    # yum install mariadb mariadb-server
  3. 啓動和設置開機啓用MariaDB
    # systemctl enable mariadb.service
    # systemctl start mariadb.service
  4. 檢查MariaDB是否運行狀態
    # systemctl status mariadb
    # systemctl is-enabled mariadb.service
    enabled
  5. 安裝後初始化資料庫安全設置
    # mysql_secure_installation

二、建立FreeRadius資料庫

  1. 使用root帳號登入MariaDB
    # mysql -u root -p
  2. 建立命為radius的資料庫
    MariaDB> CREATE DATABASE radiusdb;
  3. 新增與設置用戶名及密碼
    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

  1. 使用yum安裝FreeRadius
    # yum install freeradius freeradius-utils freeradius-mysql
  2. 匯入radius資料庫schema
    # mysql -u root -p radiusdb < /etc/raddb/mods-config/sql/main/mysql/schema.sql
  3. 配置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"
    }
  4. 調整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
  5. 添加客戶端連接設置
    編輯/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
    }
  6. 啓動Radius服務
    # systemctl start radiusd.service
    # systemctl status radiusd.service
  7. 測試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
  8. Radius的調試
    如果Radius啓動出現問題,可以先停止Radius的程序,使用 -x 參數的方式啓動調試模式

    # pkill radius
    # radiusd -x

四、防火牆配置Radius相關規則

  1. 配置防火牆,打開Radius服務端口
    # systemctl enable firewalld
    # systemctl start firewalld
    # systemctl status firewalld
    
  2. 添加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

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*

驗證碼 * Time limit is exhausted. Please reload CAPTCHA.