radius簡介
RADIUS:Remote Authentication Dial In User Service,遠程用戶撥號認證系統由RFC2865,RFC2866定義,是目前應用最廣泛的AAA協議。
RADIUS是一種C/S結構的協議,它的客戶端最初就是NAS(Net Access Server)服務器,現在任何運行RADIUS客戶端軟件的計算機都可以成爲RADIUS的客戶端。RADIUS協議認證機制靈活,可以採用PAP、 CHAP或者Unix登錄認證等多種方式。RADIUS是一種可擴展的協議,它進行的全部工作都是基於Attribute-Length-Value的向量進行的。RADIUS也支持廠商擴充廠家專有屬性。
由於RADIUS協議簡單明確,可擴充,因此得到了廣泛應用,包括普通電話上網、ADSL上網、小區寬帶上網、IP電話、VPDN(Virtual Private Dialup Networks,基於撥號用戶的虛擬專用撥號網業務)、移動電話預付費等業務。最近IEEE提出了802.1x標準,這是一種基於端口的標準,用於對無線網絡的接入認證,在認證時也採用RADIUS協議。
具體介紹請打開該鏈接http://hi.baidu.com/anyidea/blog/item/89239202987f11dd267fb526.html
radius搭建服務
我使用的radiusmanager3.9這個開源軟件,需要註冊花錢的一個軟件軟件,當然也有破解的。我利用的是破解的rm。
我的實驗環境是centos 5.7 ,搭建認證服務,我們需要個web管理頁面,所以請大家事先搭建好LNMP或者LAMP環境。我環境已經搭建好了。
好的,下面我們開始搭建rm認證!
1.安裝centos 5.6,搭建lnmp環境。
2.改MAC、IP、GATEWAY、nameserver,關閉SELINUX,重啓系統。
改MAC地址
/etc/rc.d/rc.sysinit
ifconfig eth0 down
ifconfig eth0 hw ether 00:D0:09:B8:B7:34
ifconfig eth0 up
配置IP地址,因爲上面改了MAC地址,所以需要重啓網絡
重啓網絡
/etc/init.d/network restart
關閉SELINUX
/etc/sysconfig/selinux
SELINUX=disabled
重啓系統
reboot
3.lnmp環境搭建完成,但是我們還是需要點環境
yum install compat-libstdc++-33 libtool-ltdl-devel -y
4.安裝ionCUBE
安裝ionCUBE
tar zxvf ioncube_loaders_lin_x86.tar.gz
cp -rf ioncube /usr/local/
顯示php版本,記下版本爲5.2
php -v
PHP 5.2.17 (cli) (built: Sep 28 2011 22:08:39)
修改php.ini,其中5.2和上步顯示php版本一致。
vim /usr/local/php/etc/php.ini
zend_extension=/usr/local/ioncube/ioncube_loader_lin_5.2.so
php -m
重啓nginx服務。
service nginx restart
5.FreeRadius安裝及配置
FreeRadius安裝
tar xvf freeradius-server-2.1.8-dmamod-1.tar.gz
cd freeradius-server-2.1.8
./configure
cp libltdl/ltdl.h src/include/
make
make install
ldconfig
文件所有者和權限配置
chmod 644 /usr/local/etc/raddb/dictionary
chown www /usr/local/etc/raddb
chown www /usr/local/etc/raddb/clients.conf
測試FreeRadius,顯示Ready to process requests.
radiusd -X
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on command file /usr/local/var/run/radiusd/radiusd.sock
Listening on proxy address * port 1814
Ready to process requests.
6.建立MySql相關的數據庫並作設置。
修改mysql配置文件sql.conf(可使用默認值)
vim /usr/local/etc/raddb/sql.conf
# Connection info:
server = "localhost"
#port = 3306
login = "radius"
password = "radius123"
重啓mysqld服務
/etc/init.d/mysql restart
創建相關數據庫和連接數據庫的用戶
mysql -uroot -pmysql
CREATE DATABASE radius;
CREATE DATABASE conntrack;
CREATE USER 'radius’@'localhost' IDENTIFIED BY 'radius123′;
CREATE USER 'conntrack’@'localhost' IDENTIFIED BY 'conn123′;
GRANT ALL ON radius.* TO radius@localhost;
GRANT ALL ON conntrack.* TO conntrack@localhost;
exit
————————————————————————————
7.安裝Radius Manager,在交互式安裝模式下可全部使用默認選項,只有最後一步按y回車確認安裝。
注意,我使用的是LNMP環境,我的web服務器是nginx,我的網頁目錄
是/home/wwwroot 在下面選項時,切忌這兩點需要修改。
tar zxvf radiusmanager-3.9.0.tgz
cd radiusmanager-3.9.0-rel/
vim etc/radiusmanager.cfg
修改如下兩行信息,如下顯示。(可根據自己環境情況而定來修改)
db_sock /tmp/mysql.sock ; mysql main socket location
radman_path /home/wwwroot/radiusmanager ; Radius Manager full path
chmod 755 install.sh
./install.sh
如果報錯,請查看具體錯誤信息,進行修改。
vim /home/wwwroot/radiusmanager/config/system_cfg.php
找到如下這行
define("radman_dir", "/var/www/html/radiusmanager");
修改爲
define("radman_dir", "/home/wwwroot/radiusmanager");
vim /usr/local/etc/raddb/sites-enabled/default
找到349行 將files註釋掉
chmod 755 -R /home/wwwroot/radiusmanager/
————————————————————————————
8.註冊radius manager
把註冊相關文件複製到radiusmanager目錄下,否則radius manager的rmpoller和rmconntrack服務不能啓動。
cp mod.txt /home/wwwroot/radiusmanager/
cp lic.txt /home/wwwroot/radiusmanager/
cp mac.txt /home/wwwroot/radiusmanager/
9.配置radius manager
使rmscheduler.php每到午夜執行。
/etc/crontab
02 0 * * * root /usr/bin/php /home/wwwroot/radiusmanager/rmscheduler.php 12345 #使用12345
注意下面的12345是默認密碼,可在system_cfg.php修改)
10.設置相關服務開機自動啓動
通過rc.local腳本使用相關服務自動運行。
vim /etc/rc.local
/usr/local/sbin/radiusd
/usr/local/sbin/rmpoller
/sbin/service rmpoller start
/sbin/service rmconntrack start
這邊爲了方便,我就沒有重啓機器了,直接在命令行下,讓以上服務啓動。
11.測試
修改下admin用戶的密碼,因爲3.8和3.9不一樣,用戶名和密碼都發生了變化,我提供下3.8admin的md5加密密碼,
b59c67bf196a4758191e42f76670ceba,請進入數據庫radius修改表rm_managers的數據,將這段密碼覆蓋即可。
查看管理面板,默認用戶名密碼admin/1111
http://ip/radiusmanager/admin.php
添加新用戶(測試用戶user密碼我並未修改),test/test
查看用戶面板,使用用戶名密碼test/test
http://ip/radiusmanager/user.php
測試用戶利用數據庫驗證
一個終端窗口啓動FreeRadius Debug模式
radiusd -X
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on command file /usr/local/var/run/radiusd/radiusd.sock
Listening on proxy address * port 1814
Ready to process requests.
另一個終端窗口發請求認證報文,會得到
radtest user 1111 localhost 1812 testing123
能得到以下報文,則用戶驗證成功。
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=28, length=53
如上,rm認證服務器搭建完成。
修改myql數據庫密碼,需要修改以下三個文件。
/etc/radiusmanager.cfg
/var/www/html/radiusmanager/config/system_cfg.php
/usr/local/etc/raddb/sql.conf