在ubtunu使用apt-get安裝和配置freeradius


首先先確定本機沒有安裝radius的任何軟件包、以確定干凈安裝、可以使用dpkg的命令來查看

dpkg -l | grep radius

如果返回沒有的話就繼續下一步、如果存在、使用dpkg -P來把freeradius的程序文件和配置文件完全刪除、然后就開始干凈的安裝freeradius、


安裝freeradius之前先要確保已經安裝了mysql、因為后來要用到、沒有安裝使用apt-get來安裝

apt-get install mysql

然后就是安裝freeradius的部件

sudo apt-get install freeradius freeradius-ldap freeradius-mysql

安裝完成后freeradius就會自動啟動了、由於莪們要使用調試模式來啟動freeradius、所以先關閉freeradius服務先

service freeradius stop

 

注意:

使用ubtuntu的apt-get方式來安裝freeradius的位置會和源碼不同、源碼安裝的默認位置是

/usr/local/etc/raddb/

而使用ubuntu的apt-get方式的配置文件則安置在

/etc/freeradius/

 

然后修改/etc/freeradius/下的users文件、

steve   Cleartext-Password := "testing"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = "std.ppp",
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP

把這幾行反注釋、也就是使用一個名為steve、密碼為testing的用戶來測試一下是否通則登錄freeradius服務器、保存后退出然后啟動radius的調試模式

freeradius -X

然后打開另一個終端、使用radtest來測試用戶是否能夠通過

radtest steve testing localhost 1812 testing123

這句前steve和testing代表用戶和密碼、localhost和1812則是freeradius的IP地址和端口號、testing123則是freeradius服務端與客戶端之間通訊的key、由/etc/freeradius目錄下的clients.conf定義、在client localhost字段的secret參數、

client localhost {
...
...
secret = testing123
...
...
}

注意這個secret字段最好不要少於8個字節、更多具體的詳細說明請看clients.conf文件中secret參數前面的注釋說明

 

radtest成功通過后則會顯示Access-Accept狀態、

另外、如果邇一個不好運、確實在linux系統中存在steve的用戶、這樣子的話freeradius服務器則會跳過邇現在的用戶配置直接去查詢系統的配置、這時的密碼就會以系統密碼為准、這里在users文件中定義的密碼就會失效、而且如果改用戶是禁止在linux上登錄的話、則會直接把用戶打回成 Access-Reject

 

 

另外、如果邇打算把freeradius的服務器和客戶端分開兩個服務器來運行、就需要自行在服務器端的client.conf加上客戶端的IP地址好通知服務器

vim /etc/freeradius/client.conf

如邇的freeradius客戶端IP是10.0.0.124、那么便要在freeradius服務端的client.conf加上如下內容

client 10.0.0.124 {
ipaddr = 10.0.0.124
secret = testing123
require_message_authenticator = no
nastype = other
}


保存client.conf然后重啟服務器、便可以在IP為10.0.0.124的radius客戶端來訪問服務器了、可以使用radtest命令來測試一下、測試把localhost改成相應的服務器IP地址、

P.S.:如果客戶端不具備公網地址或者由於處於某種防火牆之下、會有可能造成訪問失敗、

===============================================================

接下來的工作是使用mysql數據庫與freeradius連接

首先要做的就是建立相應的radius數據庫、進入mysql

mysql -uroot -p

然后建立radius數據庫

CREATE DATABASE radius;

之后使用exit退出mysql、然后建立一系統的表格、freeradius已經自帶有sql腳本、莪們執行這些腳本就可以自行建立了、首先定位到這些腳本的位置先

cd /etc/freeradius/sql/mysql

看見有不少sql文件

-rw-r--r-- 1 root root      661 2010-01-04 21:56 admin.sql
-rw-r----- 1 root freerad 4543 2010-01-04 21:56 counter.conf
-rw-r--r-- 1 root root 1242 2010-01-04 21:56 cui.conf
-rw-r--r-- 1 root root 452 2010-01-04 21:56 cui.sql
-rw-r----- 1 root freerad 14375 2012-01-31 23:26 dialup.conf
-rw-r----- 1 root freerad 14379 2012-01-31 23:25 dialup.conf.bak
-rw-r----- 1 root freerad 4058 2010-01-04 21:56 ippool.conf
-rw-r----- 1 root freerad 579 2010-01-04 21:56 ippool.sql
-rw-r----- 1 root freerad 400 2010-01-04 21:56 nas.sql
-rw-r----- 1 root freerad 4318 2010-01-04 21:56 schema.sql
-rw-r--r-- 1 root root 1844 2010-01-04 21:56 wimax.conf
-rw-r--r-- 1 root root 407 2010-01-04 21:56 wimax.sql

其中admin.sql可以為mysql建立一個專門管理radius數據庫的管理員

schema.sql則是用來建立radius數據庫最基本的表格、

其它的sql就不用管先了、是其它附加模塊才需要導入的

首先導入admin.sql

mysql -uUSERNAME -pPASSWD radius < admin.sql

其中的USERNAME和PASSWD代表mysql管理員的帳戶和密碼、通常是使用最高權限的root用戶來執行、

schema.sql同樣也是照此格式來執行導入到數據庫、如果結果正常的話、可以使用radius賬戶進入mysql數據庫

mysql -uradius -p

默認密碼是"radpass"(沒有引號)、登錄后再查看數據庫、

use radius;
show tables;

會看到已經建立有相應的表格了、現在就完成了mysql數據庫的部署了、之后再去配置freeradius的相關數據吧、

 

修改/etc/freeradius/radiusd.conf、定位到該行

 $INCLUDE  sql.conf

將之反注釋、啟動sql.conf、

然后編輯/etc/freeradius/sql.conf

sql {
#
# Set the database to one of:
#
# mysql, mssql, oracle, postgresql
#
database = "mysql"

#
# Which FreeRADIUS driver to use.
#
driver = "rlm_sql_${database}"

# Connection info:
server = "localhost"
#port = 3306
login = "radius"
password = "radpass"

# Database table configuration for everything except Oracle
radius_db = "radius"
    ...
}

默認情況下、使用ubuntu的apt-get命令來安裝freeradius會自動檢測到已經安裝了mysql而自動把database設置為mysql、如果邇的不是這樣顯示請設置成mysql、然后再再看password這個參數、如果邇之前已經更改了radius用戶的密碼、這里要做相應的修改、其余的參數就默認好了、


修改了sql.conf、再設置相應的設備通知其使用mysql作為數據存儲設備、

vim /etc/freeradius/sites-available/default

authorize{}字段下的file注釋掉、反注釋sql、這里的file指的就是usrs文件、將不再把用戶信息寫在users而使用mysql來存儲用戶信息、

accounting{} 字段下的sql反注釋、啟用sql來記錄統計信息、

session{}字段下的sql反注釋、啟用用戶同時登錄限制功能、這里還需要修改其它地方、一會再說

post-auth{} 字段的sql反注釋、啟用用戶登錄后進行數據記錄功能、

整個文件如下所示

authorize {
...
...
# files
sql
...
}

...
...

accounting {
...
sql
...
}

...
...


session {
radutmp

#
# See "Simultaneous Use Checking Queries" in sql.conf
sql
}


post-auth {
...
sql
...
...
}

 

如果邇之前如莪一樣啟動了啟用用戶同時登錄限制功能、那么接下來還要做這一步

編輯dialup.conf文件

vim /etc/freeradius/sql/mysql/dialup.conf

找到這幾行、將之反注釋

    # Uncomment simul_count_query to enable simultaneous use checking
simul_count_query = "SELECT COUNT(*) \
FROM ${acct_table1} \
WHERE username = '%{SQL-User-Name}' \
AND acctstoptime IS NULL"

之后整個對mysql的radius配置就已經完成了



之后在radius數據庫建立幾條用戶信息以測試mysql+freeradius的用戶認證是否成功、插入后整個數據庫表的內容如下

      mysql> select * from radusergroup;
+---------------+-----------+----------+
| UserName | GroupName | priority |
+---------------+-----------+----------+
| fredf | dynamic | 1|
| barney | static | 1|
| dialrouter | netdial | 1|
+---------------+-----------+----------+
3 rows in set (0.01 sec)

mysql> select * from radcheck;
+----+----------------+--------------------+------------------+------+
| id | UserName | Attribute | Value | Op |
+----+----------------+--------------------+------------------+------+
| 1 | fredf | Cleartext-Password | wilma | := |
| 2 | barney | Cleartext-Password | betty | := |
| 2 | dialrouter | Cleartext-Password | dialup | := |
+----+----------------+--------------------+------------------+------+
3 rows in set (0.01 sec)

mysql> select * from radreply;

+----+------------+-------------------+---------------------------------+------+
| id | UserName | Attribute | Value | Op |
+----+------------+-------------------+---------------------------------+------+
| 1 | barney | Framed-IP-Address | 1.2.3.4 | := |
| 2 | dialrouter | Framed-IP-Address | 2.3.4.1 | := |
| 3 | dialrouter | Framed-IP-Netmask | 255.255.255.255 | := |
| 4 | dialrouter | Framed-Routing | Broadcast-Listen | := |
| 5 | dialrouter | Framed-Route | 2.3.4.0 255.255.255.248 | := |
| 6 | dialrouter | Idle-Timeout | 900 | := |
+----+------------+-------------------+---------------------------------+------+
6 rows in set (0.01 sec)

mysql> select * from radgroupreply;
+----+-----------+--------------------+---------------------+------+
| id | GroupName | Attribute | Value | Op |
+----+-----------+--------------------+---------------------+------+
| 34 | dynamic | Framed-Compression | Van-Jacobsen-TCP-IP | := |
| 33 | dynamic | Framed-Protocol | PPP | := |
| 32 | dynamic | Service-Type | Framed-User | := |
| 35 | dynamic | Framed-MTU | 1500 | := |
| 37 | static | Framed-Protocol | PPP | := |
| 38 | static | Service-Type | Framed-User | := |
| 39 | static | Framed-Compression | Van-Jacobsen-TCP-IP | := |
| 41 | netdial | Service-Type | Framed-User | := |
| 42 | netdial | Framed-Protocol | PPP | := |
+----+-----------+--------------------+---------------------+------+
12 rows in set (0.01 sec)

注意了、這些數據類型的屬性值attribute都是特定的字符、不是隨隨便便自己寫上去的、要查看定義這些屬性的文件請查看邇當前配置文件的dictionary目錄、其實里面也啥內容沒定義到、只是寫上了路徑、一般會寫上包含在

$INCLUDE /usr/share/freeradius/dictionary

這里的意思就是整個dictionary文件被放置在這個文件中、其實這個文件也是個路徑信息、所以真正定義的dictionary文件是放在/usr/share/freeradius/這個目錄、比如Framed-IP-Address屬性被定義在dictionary.rfc2865文件中、Cleartext-Password被定義在dictionary.freeradius.internal文件中

 

然后啟動freeradius的調試模式

freeradius -X

注意之前的freeradius服務必須先停掉、不然會出現沖突、然后再使用以上用戶來測試

如使用fredf用戶、密碼為wilma、

radtest fredf wilma localhost 1812 testing123

返回Access-Accept狀態的同時會返回相應reply表格的內容、先返回radreply的用戶返回信息、再返回radgroupreply的所屬組返回信息、返回成功就表示配置已經正確了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM