參考文件

http://phorum.study-area.org/index.php?topic=33002.0


步驟一:安裝MySQL並且修改MySQL root密碼

#apt-get install mysql-server

#mysql -u root -p

mysql>use mysql;

mysql>update user set password=password('新密碼') where user='root';

 

步驟二:安裝Free RADIUS + Free RADIUS MySQL套件

#apt-get install freedradius

#apt-get install freedradius-mysql

 

步驟三:在MySQL中加入Free RADIUS的資料庫與資料表

1.先新增一個資料庫,名稱為radius(這個步驟也可以在改密碼的時候先做)

#mysql -u root -p

mysql>creat database radius;

mysql>exit

2.把Free RADIUS的資料表匯進去

因為我們安裝了freeradius-mysql套件,所以可以在/etc/freeradius/sql/mysql資料夾中看到一些檔案

#cd /etc/freeradius/sql/mysql/

#ls

admin.sql     dialup.conf  ippool.sql  schema.sql
counter.conf  ippool.conf  nas.sql

其中*.sql的就是我們要匯進去mysql的資料,

要注意的是,admin.sql會新增一個radius帳號(密碼為radpass)是Free RADIUS用來連線mysql用的

所以如果不想要用預設連線帳號密碼的話,這組可以不用匯。

#mysql -u root -p radius < ippool.sql

#mysql -u root -p radius < schema.sql

#mysql -u root -p radius < nas.sql

#mysql -u root -p radius < admin.sql

匯完後就可以看到radius資料庫下面多了幾張資料表

mysql> show tables;
+------------------+
| Tables_in_radius |
+------------------+
| nas              |
| radacct          |
| radcheck         |
| radgroupcheck    |
| radgroupreply    |
| radippool        |
| radpostauth      |
| radreply         |
| radusergroup     |
+------------------+
9 rows in set (0.00 sec)

步驟三:新增RADIUS在MySQL裡面的認證資料


#mysql -u root -p

首先加入群組資料

insert into radgroupreply (groupname,attribute,op,value)
values  ('user','Auth-Type',':=','Local');

insert into radgroupreply (groupname,attribute,op,value)
values ('user','Service-Type',':=','Framed-User');

insert into radgroupreply (groupname,attribute,op,value)
values ('user','Framed-IP-Address',':=','255.255.255.254');

insert into radgroupreply (groupname,attribute,op,value)
values ('user','Framed-IP-Netmask',':=','255.255.255.0');


接著加入測試帳號sqltest

insert into radcheck (username,attribute,op,value)
 values ('sqltest','User-Password',':=','test');


最後把帳號加入前面做的群組

insert into radusergroup (username,groupname)
values ('sqltest','user');


之後要加使用者可以透過下面SQL來增加
insert into radcheck (username,attribute,op,value)
values ('帳號','User-Password',':=','密碼');
insert into radusergroup (username,groupname)
values ('帳號','user');


步驟四:設定Free RADIUS可以透過MySQL來認證
設定完上述步驟後,我們得告訴Free RADIUS在認證的時候要查一下MySQL裡面的資料

(這邊步驟可能和一般網路上面的設定不同,debian總是喜歡把設定檔模組化,
所以如果是使用其他Linux的朋友應該只需要修改radiusd.conf就好)

1.編輯/etc/freeradius/radiusd.conf,找到$INCLUDE sql.conf並且把前面的#拿掉
2.編輯/etc/freeradius/sites-enabled/default,找到authorize {}跟accounting {}裡面的sql
並且把前面的#拿掉(不然就是自己加),加完後應該會像下面這樣

authorize {
  preprocess
  chap
  mschap
  suffix
  sql
  }
  accouting {
  ….
  sql
  …
  }

3.編輯Mysql連線設定,在
/etc/freeradius/sql.conf中會存放著MySQL的連線設定

編輯MySQL的連線帳號密碼讓Free RADIUS可以連線到MySQL,編輯完大概會像下面這樣

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"
login = "radius"
password = "radpass"
....略...

用admin.sql匯入的話,那帳號密碼就是預設的(如上),如果不是就要改成自己設定的那組。

其中database就是你的資料庫類型(mysql, mssql, oracle, postgresql),server是資料庫IP,
如果MySQL跟Free RADIUS同一台的話用localhost就好,login跟password則是mysql登入的帳號密碼



步驟五:測試Free RADIUS
完成上述動作後,可以透過freeradius -X來啟動Free RADIUS的debug模式,檢查設定有沒有問題,
沒有問題的話就可以透過/etc/init.d/freeradius start來啟動service,
並且可以透過radtest來測試帳號是否認證成功

#radtest sqltest test localhost 0 testing123

其中sqltest就是我們剛剛建立的帳號,密碼則是test,localhost則是因為我們是跟本地的radius認證,
0代表的是nas-port-number(不知道幹麻的話先填0就對了),
最後則是Free RADIUS連線密碼,這個密碼可以在/etc/freeradius/clients.conf裡面設定。


其他補充:
/etc/freeradius/clients.conf
這個檔案是用來設定誰可以存取此台RADIUS,
假設我有一台ip為192.168.230.129的機器要存取這台RADIUS的話,
則必須要在clients.conf加入下面設定:

client 192.168.230.128{
secret = testing123
}

其中secret就是跟RADIUS連線的認證密碼

/etc/freeradius/users

Free RADIUS除了用Linux本地、MySQL、LDAP等等認證之外,當然也支援用純文字檔來存放使用者帳戶,
users就是拿來放帳戶用的。

譬如我要加個使用者叫做peter密碼為1234,則可以在users裡面加入這樣的設定。

peter Cleartext-Password := "1234"

創作者介紹
創作者 nsysumis94 的頭像
nsysumis94

Nightmare的胡言亂語

nsysumis94 發表在 痞客邦 留言(4) 人氣()


留言列表 (4)

發表留言
  • victor.yu
  • 很有用,谢谢了~
  • 不客氣...有空常來坐

    nsysumis94 於 2009/11/27 23:16 回覆

  • ym
  • hi.
    这行“
    1.編輯/etc/freeradius/radiusd.conf,找到$INCLUDE sql.conf並且把前面。。。”后面的内容怎么没显示?
  • oscar
  • to#2:
    應該是被擋住了,你可以把文字都複製貼到記事本
  • 求學者
  • 不好意思請問,我透過radtest來測試是否通過認證,回應了Access-Reject,然後我進入DEBUG MODE,會出現Error: Failed binding to authentication address * port 1812: Address already in use /usr/local/etc/raddb/radiusd.conf[240]: Error binding to port for 0.0.0.0 port 1812,根據我的問題在網路找到的都是說輸入指令 ps aux | grep radius 去看PID 然後KILL掉,或是killall radius,但是我執行後仍會有一樣的錯誤發生,請問能研判這是甚麼問題嗎?