參考文檔:html
freeradius 官網的wiki
http://wiki.freeradius.org/Homejava
ubuntu freeradius搭建教程mysql
http://yustanto.com/freeradius.pdf
http://blog.csdn.net/u013686990/article/details/38079653linux
gcc安裝編譯(freeradius須要gcc支持)
http://blog.csdn.net/u012822903/article/details/68934793 c++
freeradius+mysql配置git
http://blog.chinaunix.net/uid-9967220-id-1995615.htmlgithub
官方文檔--詳細介紹配置文件及屬性sql
http://networkradius.com/doc/current/introduction/RADIUS.htmlshell
最好是參考官方文檔去操做,官方文檔搞不定在去搜。數據庫
官方文檔的幾個步驟:
主要就是這幾步。
安裝環境:ubuntu14.0
官方根據不一樣系統給了不一樣的wiki:
這裏按照ubuntu的流程操做:
注意下面是從github下載源碼,編譯安裝的步驟,嫌步驟繁瑣的直接用apt-get方式安裝吧:
apt-cache search freeradius //找一下相關軟件
apt-get install freeradius //裝freeradius
apt-get install freeradius-mysql mysql-server //須要mysql數據的,順便再裝個mysql和freeradius的mysql插件
裝好的freeradius在 /etc/freeradius路徑下。
1.下載二進制包
wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.15.zip unzip v3.0.15.zip cd freeradius-server-3.0.15/
2.編譯安裝
//這裏須要安裝其餘模塊的須要將模塊名稱加入到 src/modules/stable文件中,好比:$ echo rlm_jradius>>src/modules/stable。具體參考第四步: Radius Clients
tar -zxvf freeradius-server-3.0.15.tar.gz
./configure
make
sudo make install
若是不指定 ./configure --prefix=路徑
./configure 執行時,根據提示,缺什麼去安裝什麼,一步一步慢慢來,好比說你可能會卻少gcc環境,見下:
因爲freeradius安裝依賴gcc,若是gcc沒安裝,編譯安裝就不經過。官網給的gcc對應ubuntu版本說明:
Older versions of Debian and Ubuntu use GCC < 4.8, which lacks support for the C11 features needed to build FreeRADIUS >= v3.1.x.
我安裝時是網上單獨找的教程,參考第三個連接。
apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
官方給的gcc安裝依賴:
sudo apt-get install libssl-dev libtalloc-dev libkqueue-dev
安裝gcc:
1. 下載&解壓源碼 $ wget http://ftp.gnu.org/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 $ tar xvjf gcc-4.1.2.tar.bz2
2. 安裝依賴庫, 以及軟件 $ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
3. 爲頭文件以及所需庫添加連接 添加以下連接, 這取決於你的 Ubuntu 系統架構, 若是你使用的是64位的ubuntu系統應當使用x86_64-linux-gnu替代i386-linux-gnu $ cd /usr/include $ sudo ln -s i386-linux-gnu/bits bits $ sudo ln -s i386-linux-gnu/gnu gnu $ sudo ln -s i386-linux-gnu/sys sys $ sudo ln -s i386-linux-gnu/asm asm $ cd /usr/lib $ sudo ln -s i386-linux-gnu/crt1.o crt1.o $ sudo ln -s i386-linux-gnu/crti.o crti.o $ sudo ln -s i386-linux-gnu/crtn.o crtn.o
4. 編譯gcc $ cd gcc-4.1.2 $ mkdir build $ cd build
$ ../configure --prefix=/usr/local/ --program-prefix=sse- --libexecdir=/usr/local/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --enable-languages=c,c++
$ make bootstrap
$ make install
5.進入bin目錄下,查看gcc是否安裝好
$ cd /usr/local/bin $ ll *gcc*
會有下面四個文件說明安裝成功了:
sse-gcc*
sse-gccbug*
x86_64-unknown-linux-gnu-gcc-4.1.2*
x86_64-unknown-linux-gnu-sse-gcc*
具體參考官網。注意安裝的freeradius版本和gcc版本。
1.這裏若是不用mysql,用本地文件file的方式存放radius用戶信息的話,不須要作mysql的配置。
這裏就能夠調試了,
freeradius的啓動/關閉/重啓
radiusd start/stop/restart //編譯安裝的freeradius用的是這個命令,默認不會開機自啓動
service freeradius start/stop/restart //直接apt安裝,使用這個命令啓動,默認開機自啓動
radiusd -X (或freeradius -X ---apt方式安裝的用這個命令)這個命令是進入調試模式,會把後臺各個log日誌打印到shell窗口,以便分析(能夠不用)
進入安裝目錄,編輯users文件,將下面圖片內容的註釋去掉
cd /usr/local/etc/raddb // 或cd /etc/freeradius
vim users
再打開另外一個終端作客戶端,輸入命名
radtest steve testing localhost 1812 testing123
回覆 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=66, length=20 說明裝成功了。
2.這裏按照mysql的方式作配置。
因此首先安裝一下mysql和freeradius的sql插件
編譯源碼方式:
編譯源碼時,其實已經裝好freeradius的sql插件了,能夠看下freeradius路徑下 src/modules/stable,裏邊有個rlm_sql就是sql模塊,默認是安裝的。mysql本身裝,網上好多教程。
//apt安裝方式
//apt-get install freeradius-mysql //apt-get install mysql-server
官方給的主要配置文件:
policy.conf
in v2)
radius.conf 將$INCLUDE sql.con反註釋,咱們須要使用sql模塊。
radius.conf 中有各個目錄的配置路徑,其中 libdir: Where to find the rlm_* modules.這個目錄是模塊的安裝目錄,能夠在這個目錄下查看都安裝了那些模塊,都是以.so結尾的文件。
.....
prefix = /usr exec_prefix = /usr sysconfdir = /etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = /var/log/freeradius raddbdir = /etc/freeradius radacctdir = ${logdir}/radacct # # name of the running server. See also the "-n" command-line option. name = freeradius # Location of config and logfiles. confdir = ${raddbdir} run_dir = ${localstatedir}/run/${name} # Should likely be ${localstatedir}/lib/radiusd db_dir = ${raddbdir} # name of the running server. See also the "-n" command-line option. name = freeradius # Location of config and logfiles. confdir = ${raddbdir} run_dir = ${localstatedir}/run/${name} # Should likely be ${localstatedir}/lib/radiusd db_dir = ${raddbdir} # libdir: Where to find the rlm_* modules. libdir = /usr/lib/freeradius ......
clients.conf 須要改localhost,若是知道ip段,能夠寫ip段,好比:192.168.6.0/24 支持ipv4和ipv6和域名的方式。
(文件註釋中介紹儘可能用ip,不要用域名,域名依賴dns解析,dns掛了,radius服務就掛了)
secret 爲服務器和客戶端的共享密碼,默認testing123。
client localhost { ipaddr = 127.0.0.1 secret = testing123 require_message_authenticator = no nastype = other }
這個client能夠配置多個,維基百科裏有段話:
UDP與TCP不一樣,沒法識別假裝送信者和數據篡改。所以僅靠通訊對方的IP地址是不足以信任通訊內容的。
爲了防止假裝和篡改,RADIUS客戶端和服務器之間共享一個叫「共享密碼」 (Shared secret)的密鑰字符串,將數據包的內容和共享密碼獲得的摘要信息配給驗證符號和屬性值。
應該爲每對 RADIUS客戶端和服務器準備一個共享密碼。針對一個RADIUS服務器只用一個密碼而與全部RADIUS客戶端都共用會形成安全上的重大隱患。另外,從安全的角度來講,共享密碼的內容若被第三方泄露也是一大問題。
modules configuration 這個模塊咱們用到mysql,須要進入/etc/freeradius/sql/mysql目錄下
有個schema.sql (V3.0也叫 db_mysql.sql
),執行一下
mysql -uroot -prootpass radius < schema.sql
表就建好了。
其餘表能夠參考上面第四個連接,適用不一樣的場景。這裏就搭建一個簡單可用的freeradius。admin.sql是給freeradius建立個mysql的帳戶,我直接給了root用戶,就沒執行(這一步在後面)。
sites configuration 官方介紹 The sites-available
, sites-enabled
convention has been borrowed from Apache, Nginx, and other similar projects.
- 數據庫功能性定義文件: /etc/raddb/sites-available/default 實現相關模塊對數據庫的支持 authorize(認證),accounting(審計),session(會話,用於監測同時鏈接),post_auth(記錄) 子段加入sql關鍵字,如: authorize { preprocess chap mschap suffix eap sql pap }
將上面2個文件中sql部分的註釋都去掉,沒有的就添加sql。
sql.conf 數據庫設置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 = "root" password = "pwd123123" # Database table configuration for everything except Oracle radius_db = "radius"
....
修改以上幾個值。執行admin.sql建立的mysql帳戶是在這裏配置的。
配置部分結束,能夠測試一下了:
在以前執行schema.sql文件的時候,已經建立了這個表
CREATE TABLE radcheck ( id int(11) unsigned NOT NULL auto_increment, username varchar(64) NOT NULL default '', //這是帳號 attribute varchar(64) NOT NULL default '', op char(2) NOT NULL DEFAULT '==', value varchar(253) NOT NULL default '', //這是密碼 PRIMARY KEY (id), KEY username (username(32)) ) ;
登陸數據庫,在這個表中隨便插入幾條信息。
insert into radcheck (username,attribute,value,op) values ('user007','Cleartext-Password','password123',':=')
經過命令 radiusd restart 或 radiusd -X 啓動服務, radiusd -X這個命令是進入調試模式(方便觀察debug日誌)
若是是apt方式安裝成功的經過這個命令 service freeradius restart 或freeradius -X
另起一個客戶端,輸入
radtest user007 password123 localhost 1812 testing123
Access-Accept!
完美。安裝成功。
freeradius支持安裝的模塊:
https://freeradius.org/modules/
本文以java爲例,安裝jradius。
須要在編譯freeradius前,將編譯模塊名稱加入到src/modules/stable
文件中,模塊名稱能夠參考 Base Modules 這步的連接,這裏是
echo rlm_jradius >> src/modules/stable
而後編譯安裝。
./configure
make
make install
以後到github下載jradius的源碼編譯安裝。具體參考另外一篇文章。
freeradius client 和jradius安裝編譯
./configure時 的報錯處理,好比:
No rule to make target `@abs_top_builddir@/main.mk
沒有安裝依賴包,缺乏編譯的插件,apt-cache search xxxx 搜一下,安裝便可。
報錯通常都是缺乏依賴,根據提示,將缺乏的依賴逐個安裝便可。
openssl拒絕:
Refusing to start with libssl version OpenSSL 1.0.1f 6 Jan 2014
修改etc/raddb下的radiusd.conf文件
找到allow_vulnerable_openssl = no,修改爲allow_vulnerable_openssl = yes
rlm_eap: Failed to initialize type tls
這個錯誤,執行一下,換個窗口再執行就行了
FreeRADIUS Beginner's Guide
https://freeradius.akagi201.org/
FreeRadius : 模塊開發