1. RADIUS簡介
RADIUS的全稱為Remote Authentication Dial-In User Service,是一種能夠讓服務器驗證各種接入用戶身份的協議,RADIUS可以對用戶身份進行集中管理,安全性更好,策略也更靈活,同時還可以記錄用戶的網絡使用情況用于網管分析或者計費,已經成為比較常用的工業標準。在使用中,路由器、交換機等設備在需要驗證用戶身份的時候,向RADIUS服務器發送請求,RADIUS服務器則返回用戶的相關信息,交給路由器、交換機等設備處理。
在本文中,我們將基于Ubuntu(Linux的一個比較流行的發行版本),以FreeRADIUS+MySQL+OpenSSL搭建一個RADIUS服務器,其認證方式是PEAPv0/EAP-MSCHAPv2。
本文中所用的Linux及軟件的版本如下:
OS:Ubuntu 8.04 (Linux Kernel 2.6.24-21)
FreeRADIUS:FreeRADIUS 1.1.7
FreeRADIUS-MySQL:FreeRADIUS-MySQL 1.1.7
MySQL:MySQL 5.0.51a
OpenSSL:OpenSSL 0.9.8g (操作系統自帶)
2. 安裝RADIUS
安裝完Ubuntu8.04后,首先更新管理器,在終端輸入如下命令:
sudo apt-get update
sudo apt-get dist-upgrade
安裝基本的編譯環境,命令如下:
sudo apt-get install build-essential autoconf automake1.9 cvs subversion
apt-get install dpkg-dev
安裝MySQL,命令如下:
sudo apt-get install mysql-server mysql-client
#安裝過程中按提示設定管理MySQL數據庫的密碼(如123456)
安裝FreeRADIUS:
從FreeRADIUS的官方網站http://freeradius.org下載FreeRADIUS 1.1.7。然后在終端輸入如下命令:
tar zxvf freeradius-1.1.7.tar.gz
cd freeradius-1.1.7
fakeroot dpkg-buildpackage -b –uc
#提示缺少什么包就通過 apt-get install 安裝什么包
cd ..
dpkg -i freeradius_1.1.7-0_i386.deb freeradius-mysql_1.1.7-0_i386.deb
3. 配置FreeRADIUS
修改配置文件:/etc/freeradius/radiusd.conf(注意如果在文件末尾修改的話,后面的值不會覆蓋前面的值,所以要直接在原位置上修改),需更改的幾個log項:
log_auth = yes
log_auth_badpass = yes
log_auth_goodpass = yes
適當延長發送認證失敗消息之前的暫停秒數,防止暴破,默認為1秒。
reject_delay = 5
把authorize、accounting、session、post-auth幾個部分中sql一句前的注釋取消掉,啟用MySQL認證。
修改配置文件:/etc/freeradius/clients.conf,設置允許使用radius服務的設備,一般是AP的IP地址,secret是AP連接radius的密碼,在配置文件最后添加如下語句:
client 192.168.0.0/24 {???? secret = testing123???? shortname = dlink???? nastype = other }
修改配置文件:/etc/freeradius/eap.conf,將tls,ttls,peap三段的注釋全部取消,這是啟用PEAP的關鍵。
修改配置文件:/etc/freeradius/users,修改users文件中的如下內容:
#DEFAULT Auth-Type = System
#Fall-Through = 1
修改配置文件:/etc/freeradius/sql.conf,設置與MySQL相關的信息:
server = "localhost"
login = "radius"
password = "radius"
4. 配置MySQL
先建庫和用戶,命令如下:
mysql -u root –p123456
…………
mysql> create database radius;
mysql> GRANT ALL PRIVILEGES ON radius.* to radius@localhost IDENTIFIED BY ‘radius’;
mysql> FLUSH PRIVILEGES;
mysql> exit;
創建radius相關的表和初始數據:
將/usr/share/doc/freeradius/examples/mysql.sql.gz解壓,將解壓后的mysql.sql導入radius數據庫,命令如下:
cd /usr/share/doc/freeradius/examples/
mysql -u radius -pradius radius <./mysql.sql
表結構創建好之后,就可以創建使用者賬號了,默認是存儲在radcheck表中的,可以使用這樣的命令和sql語句:
mysql -u radius -pradius radius
mysql> insert into radcheck (username,attribute,op,value) values (‘test’, ‘User-Password’, ‘:=’, ‘test’);
…………
mysql> select * from radcheck
+-+———–+—————–+–+—–+
|id|UserName|Attriubute?? |op |Value|
+-+———–+—————–+–+—–+
| 1|test???? |User-Password|:= |test? |
+-+———–+—————–+–+—–+
現在重啟freeradius服務,可以簡單測試一下(test1/test1是錯誤的用戶名/密碼,testing123是默認在clients.conf中定義的本機用戶的secret),在終端輸入如下命令:
radtest test1 test1 localhost 0 testing123
Sending Access-Request of id 5 to 127.0.0.1 port 1812????????
User-Name = "test1"????????
User-Password = "test1"????????
NAS-IP-Address = 255.255.255.255????????
NAS-Port = 0
Re-sending Access-Request of id 5 to 127.0.0.1 port 1812????????
User-Name = "test1"????????
User-Password = "test1"????????
NAS-IP-Address = 255.255.255.255????????
NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=5, length=20
可以看到服務器接收到了請求,并返回了用戶名/密碼=test1/test1的reject信息。
5. 無線AP的設置
主要設置項如下:
Secrity Mode: WPA2
Clipher Type: AES(比TKIP方式更加安全)
RADIUS Server IP/Secret: RADIUS服務器所在的IP以及在“clients.conf”中設置的對應的“secret”。
6. 客戶端設置
無線網絡連接屬性->無線網絡配置Tab頁->首選網絡(屬性)->關聯Tab頁,網絡驗證:WPA2,數據加密:AES;
然后在“驗證”Tab頁,EAP類型:受保護的EAP(PEAP),在屬性中,不選“驗證服務器證書”,選擇“啟用快速重新連接”,驗證方法:安全密碼(EAP-MSCHAP v2),并在“配置”中不選擇“自動使用windows登錄名和密碼”。
配置步驟截圖如下所示:
登錄的時候,狀態欄上會彈出提示用戶更換憑證的小圖標,其實就是提示用戶輸入用戶名/密碼(如test/test)。
評論
查看更多