建立RADIUS認證服務器

 

建立RADIUS認證服務器


■ 林崗



不需要使用昂貴的專業系統,採用PC服務器和Linux系統的Freeradius+MySQL就能可靠地實現RADIUS認證服務器。

RADIUS認證服務器(Remote Authentication Dial In User Service,遠程用戶撥號認證系統)是目前應用最廣泛的AAA協議(AAA=authentication、Authorization、Accounting,即認證、授權、計費)。隨着網絡安全需求提高,中小企業的局域網集中用戶認證,特別是使用VPDN專網的也逐漸需要建立自己的認證服務器以管理撥號用戶。但這些用戶不需要使用昂貴的專業系統,採用PC服務器和Linux系統的Freeradius+MySQL就能可靠地實現。

● Freeradius的安裝

筆者採用FC4 for x86_64系統上的freeradius-1.1.2,在中檔PC服務器上運行,系統運行穩定可靠。Linux FC4自帶Freeradius和MySQL,不過實測不理想。FC4 MySQL對中文支持不好,而freeradius則僅支持其自帶MySQL。所以,在編譯MySQL時要加入選項“--with-charset=gb2312”以支持中文字符編碼。編譯Freeradius時可使用缺省選項。在64位Linux系統上編譯前配置時需要加入選項“—with-snmp=no”,因爲與庫文件snmp相關的庫對64位支持有問題(最新的FC7也許沒有這些問題)。Freeradius提供了MySQL建庫腳本——db-MySQL.sql,不過建nas庫有1個語法錯誤,將“id int(10) DEFAULT‘0’; ”中的“DEFAULT ‘0’”去掉即可正常建立Radius庫。

● Freeradius的設置

用戶數量較少的情況下可使用Freeradius缺省的users文件配置用戶,根據文件制定的規則工作。安裝完畢後啓動Radius服務: /usr/local/sbin/radiusd-X。本機運行radtest test test localhost 0 testing123發認證請求,得到迴應表示Radius服務器工作正常。

Radius服務器缺省使用/usr/local/etc/raddb/users文件認證,簡單易行。但如果管理幾十個或更多用戶,則應使用數據庫,對於用戶數少於一萬的情況而言,MySQL是合適的選擇。

● MySQL認證的設置

在配置文件radiusd.conf中,在authorize{}和accountingt{}設置中去掉sql前註釋符。在sql.conf中設置MySQL的連接信息、用戶/密碼和地址、本機用localhost即可。還需要在users中對DEFAULT用戶做如下設置: Auth-Type = Local,Fall-Through = 1。這樣,纔可正確使用MySQL進行認證。

在MySQL中設置用戶的規則與users文件用戶設置有對應關係。Radius認證是以Attribute = Value的形式提供認證和應答消息。在users文件中,與用戶名位於同一行,以“,”分隔的各個屬性是認證請求必須提供而且需要驗證的屬性。

實際使用時,往往使用username@domain形式用戶進行認證。用文件方式時,可以通過設置剝離域名,只建立username認證即可。需要在radiusd.conf中加入一項realm domain { format=suffix… }域說明,並在proxy.conf中realm DEFAULT使用LOCAL認證。用MySQL認證時,缺省的sql.conf中使用帶域名的全名進行認證。

最後,打開防火牆是必要的。缺省Radius認證服務器使用UDP 1812端口認證,UDP1813端口計費,應該開放UDP包的進出。

● CISCO路由器的設置

CISCO路由器是經典的RADIUS客戶端,在VPDN撥號系統中LNS作爲二次認證客戶端。在clients.conf中定義客戶端IP地址和共享密鑰。對單網口的低級路由器來說,客戶端的IP地址就是網口IP。對於中高級路由器來說,路由器缺省使用第一個網口IP作爲客戶端源IP,如果是不可路由的內網地址,則客戶端無法收到認證應答包。要指定IP,使用如下語句:

ip radius source-interface FastEthernet0/1

其中FastEthernet0/1的IP指定作爲認證客戶端的源地址。一般做法是在VPDN-GROUP定義中使用source-ip 語句指定IP,不過重啓路由器後必須重新設置RADIUS服務器才能生效。

另一個關於CISCO的設置是使用多個認證服務器。中高檔路由器通常可支持不同的撥號接入。不同撥號接入使用不同的認證服務器。CISCO中使用不同的server-group實現。

aaa authorization network aaa-radius1 start-stop group radius1

aaa authorization network aaa-radius2 start-stop group radius2

也可根據需要定義authentication/accounting使用的server-group。

● 用戶物理綁定的實現

實現用戶物理綁定,特定用戶只能在特定的電話號碼或端口號上發起連接才能認證成功,可以大大提高認證安全性。在窄帶系統中,LAC在撥入接入服務器LAC進行一次認證時,就向RADIUS服務器提供主叫號碼,二次認證時該屬性就被提交給RADIUS服務器。如電話號碼爲1234567,用戶撥號,請求中包含屬性Calling-Station-Id = "1234567"。爲了實現主叫號碼綁定,首先在radiusd.conf配置文件中起用對主叫號碼的檢查,即checkval {}中的內容。在使用users文件認證時,在用戶名定義的同一行內加入Calling-Station-Id = "1234567"即可。使用MySQL認證時,在radcheck表中加入“Calling-Station-Id,”+=”,”1234567””這條記錄即可。

對於ADSL寬帶來說,不能使用電話號碼綁定。不同寬帶設備可提供不同的綁定方式。其實現要點也是必須在發出認證請求中包含其物理端口或其他物理信息,Radius服務器在字典定義該屬性,在users文件或MySQL中加入約束值即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章