测试环境:RedHat Enterprise Linux 5.0 x86
测试步骤:
1、安装freeradius
- wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.11.tar.gz
- tar zxvf freeradius-server-2.1.11
- ./configure --prefix=/usr/local/freeradius //指定一下freeradius的安装目录,主要是为了方便卸载。
- make
- make install //到这里安装就算完成了,相当简单。
- export PATH=$PATH:/usr/local/freeradius/bin:/usr/local/freeradius/sbin //为了方便测试,我把FR的可执行文件目录都导入PATH变量里。
- cd /usr/local/freeradius/etc/raddb //FR的配置文件都在这个目录里
- vi users //修改账号文件。FR的的账号可以存在文件中,也可以存放在数据库里。缺省是存放在文件中的,通过修改配置文件来设置。这里我测的是文件模式。
- steve Cleartext-Password := "testing"
- Service-Type = Framed-User,
- Framed-Protocol = PPP,
- Framed-IP-Address = 172.16.3.33,
- Framed-IP-Netmask = 255.255.255.0,
- Framed-Routing = Broadcast-Listen,
- Framed-Filter-Id = "std.ppp",
- Framed-MTU = 1500,
- Framed-Compression = Van-Jacobsen-TCP-IP
- //steve是user中的一个示例账号,缺省是被注释掉。将上面几行行首的“#”去掉,就他来测试。teve账号里面有很多参数,保持默认的吧。testing是他的密码。熟悉以后,在自行修改吧。
- radiusd -X //-X debug模式,方便测试观察, FR的/sbin下有个rc.radiusd脚本。如果测试没问题的话,可以把它拷到/etc/init.d下,用服务的方式来启动FR。
- Listening on authentication address * port 1812
- Listening on accounting address * port 1813
- Listening on command file /usr/local/freeradius/var/run/radiusd/radiusd.sock
- Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel
- Listening on proxy address * port 1814
- Ready to process requests.
- radtest steve testing localhost 1812 testing123 //radtest 是FR内置的一个测试工具 syntax: steve-账号 testing-密码 localhost-FRserver 1812-端口 testing123-定义的secret,这个在clients.conf里设置。我用本机做测试所以client是localhost,在clients.conf的localhost可以在找到它默认的secret是testing123。
- rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=132, length=71
- Service-Type = Framed-User
- Framed-Protocol = PPP
- Framed-IP-Address = 172.16.3.33
- Framed-IP-Netmask = 255.255.255.0
- Framed-Routing = Broadcast-Listen
- Filter-Id = "std.ppp"
- Framed-MTU = 1500
- Framed-Compression = Van-Jacobson-TCP-IP
- wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.17.tar.gz
- tar zxvf pam_radius-1.3.17.tar.gz
- cd pam_radius-1.3.17
- make //make之前安装pam-devel包
- cp pam_radius_auth.so /lib/security/
- mkdir /etc/raddb
- cp pam_radius_auth.conf /etc/raddb/server
- vi /etc/raddb/server
- 127.0.0.1 testing123 1 //修改secret,缺省localhost的secret是testing123,见FR的clients.conf
- vi /etc/pam.d/sshd
- #%PAM-1.0
- auth sufficient pam_radius_auth.so //这行是我添加的,添加的位置有讲究,放到下面可能会出错。
- auth include system-auth
- /etc/init.d/sshd restart //重启ssh服务。
- useradd steve //创建账号,既然是用FR来认证,本地的password就补需要设置了。
- ssh steve@localhost //不出意外的输入密码"testing",成功获得shell