FreeRadius for WPA的安装
2008-9-7
Linux: RedHat Enterprise Linux AS 5
红帽子企业版安装了freeradius-1.1.3-1.2.el5,先卸载:
# rpm -ev freeradius
1. 下载
http://freeradius.org/download.html
目前的版本是2.1.6,文件名是freeradius-server-2.1.6.tar.bz2
编译
#cd /opt
#mkdir host
#tar xjvf /opt/download/freeradius-server-2.1.6.tar.bz2
#cd freeradius-server-2.1.6
#./configure
#make
#make install
安装的文件所在的系统目录:
1) /usr/local/sbin: checkrad radiusd radmin radwatch rc.radiusd
2) /usr/local/bin:radlast radtest randpkt rlm_dbm_parser radclient radsniff radwho radeapclient radsqlrelay radzap rlm_dbm_cat
3) /usr/local/etc/raddb: 配置文件
4) /usr/local/share/man:man手册
5) /usr/local/var/run/radiusd:运行时生成的文件存放目录
6) /usr/local/var/log/radius:日志文件存放目录
7) /usr/local/var/log/radius/radacct
8) /usr/local/share/freeradius:存放各个属性定义
9) /usr/local/lib: freeradius使用的库文件
测试是否安装成功:
1) #radiusd –Xf
…………..
2) 在另外一个终端上运行:
# radtest test test localhost 0 testing123
Sending Access-Request of id 18 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test"
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=18, length=20
说明可以正常和radiusd进行通信。
2. 配置radius
1) 修改radius.conf
去掉$INCLUDE sql.conf的注释;
auth_badpass = yes
auth_goodpass = yes
2) 修改sql.conf
server = "localhost"
#port = 3306
login = "radius"
password = "radpass"
3) 修改clients.conf:增加
client 192.168.0.0/16 {
secret = testing123
shortname = private-network
nastype = other
}
4) 修改eap.conf
default_eap_type = peap
5) 修改sites-enable/ default和site-enable/ inner-tunnel
在authorize 、authenticate、accounting和session中去掉sql前面的注释。
去掉auth_log的注释,注释掉unix
6)
这样192.168.x.x的AP都可以访问Radius服务器。
3. 生成证书 (如果使用外部证书可以跳过这步)
生成随机数:
# cd /usr/local/etc/raddb/certs
# make dh
# make random
编辑ca.cnf、server.cnf、client.cnf文件中的"input_password" 和 "output_password"字段,设置密码,分别编辑[certificate_authority], [server], 和[client]字段为证书的信息, default_days字段为证书有效期。
修改Makefile:
a) 不知道为什么对于ca.cnf日期的修改不生效,生成的根证书有效期总是一个月,所以只好在生成根证书的命令行加上一个-days 3650
修改后如下:
#more Makefile
ca.key ca.pem: ca.cnf
openssl req -new -x509 -days 3650 -keyout ca.key -out ca.pem -config ./ca.cnf
b) 由于客户端证书是用server证书签名,增加导出server证书的Make目标:
server.der: server.pem
openssl x509 -inform PEM -outform DER -in server.pem -out server.der
同时修改:
server: server.der
c) 还可以增加一个删除所有证书的Make 目标:
allclean:
rm -f *.pem *.der *.csr *.crt *.key *.p12 serial* index.txt*
# make ca server client
验证根证书:
# openssl x509 -in ca.pem -text –noout
安装客户端证书:
d) 导入根证书:生成的ca.der为根证书,需要先导入到客户端,注意存放的位置要选受信任的根证书颁发机构。
e) 导入客户端证书:生成的[email protected]是客户端证书(如果更改了client.cnf中的commonName,则不是这个名字),不过使用client.p12文件更容易导入Windows系统。
服务器端配置:
注意,如果修改了server.cnf的input_password,则需要修改eap.conf文件中的tls字段的private_key_password信息。
4. 设置为开机自动启动
# cp freeradius-server-2.1.6/scripts/rc.radiusd /etc/init.d/radiusd
# vi /etc/init.d/radiusd
在 #!/bin/sh 一行后面加入:
# radiusd This shell script takes care of starting and stopping
# standalone radiusd.
#
# chkconfig: - 70 70
# description: free radius server.
# processname: /usr/local/sbin/radiusd
# config: /usr/local/etc/raddb
使用命令:
#chkconfig --add radiusd
#chkconfig radiusd on
5. 配置apache HTTP server
允许在没有index.html等文件时列出目录
# vi /etc/httpd/conf.d/welcome.conf
去掉Indexes前面的减号
<LocationMatch "^/+$">
Options Indexes
ErrorDocument 403 /error/noindex.html
</LocationMatch>
6. 配置mysql
a) 安装phpMyadmin (如果使用命令行方式配置,可以省略该步骤)
下载:phpMyAdmin-2.11.9.5-all-languages.tar.bz2 高版本的需要php-5.2以上版本,RHEL 5只带了php-5.1.6
解压:tar xjvf phpMyAdmin-2.11.9.5-all-languages.tar.bz2
创建一个config目录 mkdir config ; chmod o+rw config
做符号链接到httpd目录: ln phpMyAdmin-2.11.9.5-all-languages /var/www/html/phpMyAdmin
设置:http://localhost/phpMyAdmin/ /scripts/setup.php
设置认证方式为cookie,配置完并保存后,移动config /config.in.php到上一级目录。
解决phpMyAdmin的警告:
i)安装mbstring
rpm -Uvh php-mbstring-5.1.6-20.el5.i386.rpm
ii)使用phpMyAdmin管理mysql,如果出现以下提示
Cannot load mcrypt extension
在rpmfind.net下载以下RPM包即可解决上述问题
php-mcrypt
php-mhash
libmcrypt
libmcrypt-devel
libmhash
libmhash-devel
修改/etc/php.ini
增加:
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=mbstring.so
extension=mcrypt.so
b) 创建并配置数据库radius (可以使用phpMyAdmin来配置,下同)
# mysqladmin -u root -p create radius
# cd /usr/local/etc/raddb/sql/mysql
# mysql -u root -p radius < admin.sql
# mysql -u radius -p radius < schema.sql
可选创建其他表,可以使用的SQL脚本:ippool.sql, nas.sql, wimax.sql
7. 配置freeradius的管理WEB页面dialup_admin
a) 复制dialup_admin到/usr/local/opt/
# cp freeradius-server-2.1.6/dialup_admin/ dialup_admin/ -a
b) 创建符号链接
# ln -s /usr/local/opt/dialup_admin/htdocs/ /var/www/html/dialup_admin
c) 创建mysql 数据表
#cd dialup_admin/sql
# mysql -u radius -p radius < badusers.sql
还有mtotacct.sql, totacct.sql, userinfo.sql
导入userinfo.sql出错:
ERROR 1067 (42000) at line 4: Invalid default value for 'id'
在userinfo.sql文件中去掉DEFAULT ‘0’
d) 修改配置文件
修改admin.conf中以下设置:
general_base_dir: /usr/local/opt/dialup_admin
general_radius_server_auth_proto: chap //将pap改成chap
general_encryption_method: clear //将crypt改成clear
general_radiusd_base_dir: /usr/local
general_domain: xxxx
sql_username: xxxx
sql_password: xxxx
sql_usergroup_table: radusergroup
sql_debug: false
e) 修改apache的php.conf配置文件
# vi /etc/httpd/conf.d/php.conf
在未尾添加
AddType application/x-httpd-php .php .php3
重启httpd
# service httpd restart
8. 参考文档
a) 红帽RHEL5U3平台实现pppoe接入记账认证服务器http://linux.chinaunix.net/ebook/doc/2009/06/05/1116103.shtml