linux+pppoe+radius+mysql认证.docx
- 文档编号:30154715
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:21
- 大小:27.07KB
linux+pppoe+radius+mysql认证.docx
《linux+pppoe+radius+mysql认证.docx》由会员分享,可在线阅读,更多相关《linux+pppoe+radius+mysql认证.docx(21页珍藏版)》请在冰豆网上搜索。
linux+pppoe+radius+mysql认证
红帽RHEL5U4平台实现pppoe+freeradius+mysql认证服务器
软件需求:
红帽自带的:
rp-pppoe,ppp,freeradius,freeradius-mysql,mysql,mysql-devel,mysql-server,openssl。
另需:
freeradius-2.1.3以及ppp2.4.4的源代码包。
有一点要说明,freeradius需要openssl库,所以如果系统里没安装的话,还是要事先安装一下的。
第一部分:
实现简单的pppoe拨号服务
检查系统上的rp-pppoe以及ppp软件是否安装,命令:
#rpm -q rp-pppoe ppp
如果安装则会有显示软件包的名称,若未安装,找到安装盘上的相关rpm包安装。
配置/etc/ppp/options
lock
crtscts
nobsdcomp
nodeflate
nopcomp
然后配置/etc/ppp/pppoe-server-options文件,内容为:
# PPP options for the PPPoE server
# LIC:
GPL
auth
require-chap
default-mru
default-asyncmap
lcp-echo-interval60
lcp-echo-failure5
ms-dns202.106.0.20
noipdefault
noipx
nodefaultroute
proxyarp
noktune
logfile/var/log/pppd.log
文件内容不做解释,可以通过man pppd查寻相关帮助。
此时pppoe服务器从/etc/ppp/ chap-secrets文件中读取验证的用户名和密码信息,此文件格式为:
# Secrets for authentication using CHAP
# client server secret IP addresses
aaa * aaa *
想要多添加用户,再加入新行即可。
然后可以启动pppoe服务了,命令是:
#pppoe-server-Ieth1-L10.0.0.64-R192.168.0.5-N10
我简单介绍一下这条命令中的各个参数的意思。
I:
指定响应PPPOE请求的端口,本例中是在eth1口上。
L:
PPPOE服务器的IP地址,这是客户端所填的PPPOE服务器的地址。
R:
这是分配给客户端的地址池起始地址,本例中从192.168.0.5开始
N:
地址池的IP地址递增几个,本例中添增10,也就是从192.168.0.5开始,到192.168.0.14结束。
可以看出我们在LINUX中将以上步骤都完成了,也就是说PPPOE服务准备好了,客户端PPPOE拨号,顺利的话就可以拨号成功了。
当然现在客户端还不能上网,因为PPPOE服务器还没有启用NAT,我们用IPTABLES软件来实现,写一个这样的脚本即可:
echo"1">>/proc/sys/net/ipv4/ip_forward
iptables-tnat-APOSTROUTING-s192.168.0.0/24-owan-jSNAT--to10.0.0.65
第一行的作用是启用IP转发,第二行是启动IPTABLES进行NAT转换,下面是对各个参数的解释
-tnat表示进行NAT转化
-s192.168.0.0/24表示源地址为192.168.0.0/24这个网段
-jSNAT--to10.0.0.65表示将源地址都转化成10.0.0.65这个外网地址
启动NAT以后,这台PPPOE服务器就功能完整了,客户端不仅可以拨通服务器,拨通后还可以上网。
注:
红帽自带的pppoe服务器,在RHEL5至RHEL5U2的版本上与系统的syslog服务有冲突。
可现关闭syslog服务,让pppoe服务器正常运行。
第二部分:
让pppoe服务使用freeradius服务器进行验证
1)首先更改/etc/ppp/pppoe-server-options,添加一行设置:
# PPP options for the PPPoE server
# LIC:
GPL
auth
require-chap
default-mru
default-asyncmap
lcp-echo-interval60
lcp-echo-failure5
ms-dns202.106.0.20
noipdefault
noipx
nodefaultroute
proxyarp
noktune
plugin /usr/lib/pppd/2.4.4/radius.so
radius-config-file/etc/ppp/radiuds/radiusclient.conf
logfile/var/log/pppd.log
表示让pppoe-server在运行时加入pppd的radius查检,可以让pppoe服务通过freeradius来验证和记账。
添加此行之后,可以创建/etc/ppp/radiuds/目录,创建完之后,我们需要使用一下ppp的源代码,因为红帽没有给我们提供相应的配置文件。
解压ppp的源代码目录:
#wgetftp:
//ftp.samba.org/pub/ppp/ppp-2.4.4.tar.gz
#tar xvfz ppp-2.4.4.tar.gz
#cd ppp-2.4.4
#cd pppd/plugins/radius/etc/
#cp * /etc/ppp/radiuds/
2)这个目录下有我们需要的所有相关的配置文件,其中最重要的是/etc/ppp/radiuds/radiusclient.conf,我们先打开此文件配置,其内容为(已去掉注释):
auth_order radius
login_tries 4
login_timeout 60
nologin/etc/nologin
issue /etc/ppp/radiuds/issue
authserver localhost:
1812
acctserver localhost:
1813
servers /etc/ppp/radiuds/servers
dictionary /etc/ppp/radiuds/dictionary
login_radius /usr/local/sbin/login.radius
seqfile /var/run/radius.seq
mapfile /etc/ppp/radiuds/port-id-map
default_realm
radius_timeout 10
radius_retries 3
login_local /bin/login
3)另外,还需更改此目录下的servers文件,此文件用来指定读取的radius服务器的主机名称以及key值(需要在freeradius配置中指定)。
编辑/etc/ppp/radius/servers,设定radius服务器的位置
localhost123//这里的123是我前面设置的nas(localhost)访问radius服务器的密码
4)编辑/etc/ppp/radius/dictionary,修改一些路径设置,主要是最后一个dictionary.microsoft的路径设置
INCLUDE/etc/ppp/radiuds/dictionary.microsoft
#INCLUDE/etc/ppp/radiuds/dictionary.ascend
#INCLUDE/etc/ppp/radiuds/dictionary.merit
#INCLUDE/etc/ppp/radiuds/pat
5)此时pppoe服务已经可以通过radius认证了。
然后进行freeradius的配置。
首先检查freeradius是否安装:
#rpm -q freeradius freeradius-mysql
其中freeradius-mysql包使用来让freeradius连接mysql数据库的,本部分还用不到。
首先打开/etc/raddb/clients.conf配置客户端访问控制,文件内容如下:
client 127.0.0.1 {
secret = 123
shortname = localhost
nastype = othe
}
表示客户端之允许从127.0.0.1的ip登录radius服务,并且需要验证的secret为123,就是在上面的servers文件中需要配置的信息。
若要实现可以从别的机器访问,请参考注释获得帮助。
6) 然后配置naslist文件,内容为:
# NAS Name Short Name Type
#---------------- ---------- ----
# pm1.NY livingston
# pm1.LA livingston
localhost local portslave
此文件用来配置记录有哪些指定的nas服务器需要使用radius进行记账。
现在指定的是localhost。
7) 主控配置文件是radiusd.conf,目前没有需要改的,可通过注释学习其中配置方法。
此文件主要是用来指定freeradius服务器默认的验证和记账方式。
我们目前使用本地的文件方式,就是/etc/raddb/users文件,在其中添加我们需要提供给pppoe服务认证的用户信息,内容如下(用户名前面一定不能有空格):
aaa Auth-Type :
= Local, Simultaneous-Use :
= 1, User-Password == "aaa"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 192.168.0.8,
Framed-IP-Netmask = 255.255.255.255
其中Simultaneous-Use :
= 1字段用来设置每个用户同时登录的个数。
所有字段信息都在freeradius的源代码中有文档给予解释。
另外要注意,添加的用户字段应写在文件DEFAULT字段前面添加,否则可能不会生效。
8)为了让radius能正确地调用mysql,还要指定一下库的位置:
echo/usr/lib>>/etc/ld.so.conf
ldconfig
9)都配置完毕后,可以通过radiusd -X命令以排错方式启动,此时再启动pppoe-server,用客户端拨号验证一下,检查pppoe服务是否成功通过freeradius来验证用户。
如果成功,这一部分完成。
可通过 service radiusd restart来正常启动radius服务。
radiusd-X
radtestaaaaaalocalhost0123
看到Access-Accept之类的字样就表示OK了。
这时可以正式启动radiusd
第三部分:
配置freeradius从mysql数据库读取用户信息
1)首先更改/etc/raddb/radiusd.conf,首先将$INCLUDE ${confdir}/sql.conf字段这行原有的注释去掉,然后编辑/etc/raddb/radiusd.conf使其支持mysql认证;
authorize{
preprocess
chap
mschap
suffix
sql
...
}
accounting{
...
#radutmp(因为我要使用Simultaneous-Use:
=1(同一用户一次只能登陆一台机器),用它在radiusd意外结束会有问题,所以禁用)
sql
...
}
session{
#radutmp(同上)
sql
}
2)需要更改sql.conf中的设置,主要是设置读取的mysql服务器的相关信息,可更改如下一些字段:
driver="rlm_sql_mysql"
server = "localhost" #数据库服务器
login = "mysql_username" #数据库用户
password = "mysql_password" #数据库密码
radius_db = "radius" #数据库名称
3) 当然前提是你要现把mysql服务设置好,设置方法是:
先处理一下mysql的库,freeradius默认查找libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可:
(至关重要,否则启动freeradius的时候会提示找不到rlm_sql_mysql.so:
Couldnotlinkdriverrlm_sql_mysql:
filenotfound)
#echo"/usr/lib/mysql">>/etc/ld.so.conf
#ldconfig
#cd/usr/lib/mysql/
#ln-slibmysqlclient.so.15.0.0libmysqlclient_r.so
先启动你的mysqld:
service mysqld start
然后设置root帐户密码:
mysqladmin –uroot –p password 12345
创建radius数据库
mysqladmin –uroot –p123456 create radius
建立mysql的数据库raius的表,我们可以通过软件已经给出的sql脚本导入数据库:
mysql -uroot –p123456 radius < /usr/share/doc/freeradius-1.1.3/examples/mysql.sql
这样,所有radius需要的数据库和表都已经建立好了。
此时可以添加测是帐号来测试是否正常工作。
具体方法就不在这说了。
我们待会要使用freeradius源代码自带的dialup_admin来进行数据库的管理工作,那是一个基于web的管理界面,使用php编写,要比直接用sql语句方便的多。
这里要注意的是,如何在数据库里添加限制没用户同时登录个数的限制,比如,我先用sql语句添加一个测试用户,然后来限制他的登录个数,语句是:
mysql -uroot –p123456 radius
insertintoradgroupreply(groupname,attribute,op,value)values('user','Auth-Type',':
=','Local');
insertintoradgroupreply(groupname,attribute,op,value)values('user','Service-Type','=','Framed-User');
insertintoradgroupreply(groupname,attribute,op,value)values('user','Framed-Protocol','=','ppp');
insertintoradgroupcheck(groupname,attribute,op,value)values('user','Auth-Type',':
=','Local');
insertintoradgroupcheck(groupname,attribute,op,value)values('user','Simultaneous-Use',':
=','1');
然后加入用户信息:
insertintoradcheck(username,attribute,op,value)values('bbb','User-Password','==','bbb');
然后把用户加到组里:
insertintousergroup(username,groupname)values('bbb','user');
这样就给我们的数据库中添加了一个帐户测试帐户bbb,并让bbb帐户属于user组。
然后我们可以通过设置user组的检查属性来设置此组帐户的登录数限制,以后只要用户加入这个组,登录数都不能超过1次:
好了,限制完成。
我们现在可以使用bbb帐户登录,并测试是否是通过mysql数据库验证的。
并且可以检查是不是只能登录一个。
第四部分:
使用dialup_admin来管理radius服务器
服务器搭建成功后如果需要web管理,freeradius自带了一个web管理程序dialup_admin。
首先测试Apache与PHP安装的正确性。
Apache的WEB目录在 /var/www/html 下首先测试Apache,在浏览器输入 Http:
//127.0.0.1 下看到Apache界面表示正常。
编辑一个PHP测试文件,内容为 ,保存为 phpinfo.php。
在浏览器输入Http:
//127.0.0.1/phpinfo.php 看到php相关信息页面,表示php运作正常。
直接将freeradius源代码中的dialup_admin/文件夹全部拷贝到Apache网页目录下/etc/local下。
修改dialup_admin/conf/下的admin.conf文件中的如下参数:
sql_type:
mysql
sql_server:
localhost //sql地址
sql_port:
3306 //默认端口
sql_username:
root
sql_password:
123456 //密码
sql_database:
radius //数据库名
general_base_dir:
/var/www/html/dialup_admin //dialup_admin主目录
general_radiusd_base_dir:
/usr/sbin/radiusd
general_domain:
//这个可改也可不改,没什么影响,改了还看点而已
general_radius_server_auth_proto:
chap //将pap改成chap
general_encryption_method:
clear //将crypt改成clear
说明一下,general_encryption_method:
clear是必须得改的,否则用web管理界面添加用户后会出现密码被加密后无法识别导致认证失败,clear方式是以明文存储密码,freeradius默认是用明文存储密码,两者要对应,所以这里要用clear方式。
修改dialup_admin/conf/下的naslist.conf文件如下
nas1_name:
nas1.%{general_domain}
nas1_model:
Computer //NAS服务器的类型
nas1_ip:
192.168.1.1 //NAS服务器的IP地址
nas1_port_num:
15
nas1_community:
public
其他的通通删掉或用#号注释掉,这样修改的目的是方便在web管理界面中直观的看到每个NAS服务器连接用户的情况。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux pppoe radius mysql 认证
![提示](https://static.bdocx.com/images/bang_tan.gif)