openvpn2.0.9实现radius认证

zt371 发布于 2009/05/05 18:06
阅读 2K+
收藏 4

经过实践,实现了openvpn2.0.9版本使用radius认证的配置功能。以下简要说明,与大家分享。
我的环境是server端是linux9.0,Client端是winxp。
基本的配置就不复述了,使用证书认证的文章很多,其中网友elm就有不少好的配置手册。
网络上关于username/password认证的文章也不少,但不是需要用到mysql数据库就是要用到freeradius认证库,我就想简单快速的实现把用户名密码提交到第三方radius服务器认证就可以了。第三方radius服务器很多比如windows ActiveDirectory或WinRadius 2.01,我这里用WinRadius2.01作为radius服务器。
1.radiusplugin_v2.0.tar.gz: 可以编译得到radiusplugin.so
到http://www.nongnu.org/radiusplugin/下载
2.libgcrypt支持库: 可以编译得到/usr/lib/libgcrypt.so.11
到ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.4.tar.gz下载
3.libgpg-error支持库: 可以编译得到/usr/local/lib/libgpg-error.so.0
到ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.5.tar.gz下载
简单的编译以上3个支持库,configure;make;make install。
我们要用到radiusplugin.so,其他是radiusplugin.so的支持库。
好了如果能够得到radiusplugin.so,已经成功了80%,其他的就是配置了。
把radiusplugin.so拷贝到/etc/openvpn下,并配置其配置文件radiusplugin.conf
内容如下:
# The NAS identifier which is sent to the RADIUS server
NAS-Identifier=OpenVpn

# The service type which is sent to the RADIUS server
Service-Type=5

# The framed protocol which is sent to the RADIUS server
Framed-Protocol=1

# The NAS port type which is sent to the RADIUS server
NAS-Port-Type=5

# 这是运行openvpn服务器的ip,作为radius客户端
NAS-IP-Address=192.168.2.8

#这里指明openvpn的配置位置
OpenVPNConfig=/etc/openvpn/cert_conf/server.conf


# 这里定义 radius server 参数可以超过1个作为备份
server
{
# The UDP port for radius accounting.
acctport=1813
# The UDP port for radius authentication.
authport=1812
# 这是我radius 服务器的ip,也就是运行winradius,并添加了用户。
name=192.168.2.2
# How many times should the plugin send the if there is no response?
retry=1
# How long should the plugin wait for a response?
wait=1
# The shared secret.共享密钥,在winradius里配置,设置-系统-NAS密钥
sharedsecret=winradius
}

以下配置openvpn服务器,server.conf
这个配置跟证书配置只需新增以下3行不同。
plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radius.conf
client-cert-not-required
username-as-common-name
客户端配置:在winxp下
去掉客户端证书,并添加提示用户密码的参数就可以了。
ca ca.crt
#cert client.crt
#key client.key
auth-user-pass

启动服务器
openvpn --config server.conf
如果出错查看日志文件如openvpn.log一般可以解决.
启动客户端,提示
Sat Aug 25 17:52:38 2007 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct  1 2
006
Enter Auth Username:test
Enter Auth Password:
...
Sat Aug 25 17:55:22 2007 Route addition via IPAPI succeeded
Sat Aug 25 17:55:22 2007 Initialization Sequence Completed
认证通过,vpn隧道建立成功
查看winradius:
用户(test)认证通过
用户(test)呼叫()开始
查看linux server端日志
RADIUS-PLUGIN: Configfile name: /etc/openvpn/radiusplugin.conf .
Sun Apr  1 13:31:09 2007 PLUGIN_INIT: POST /etc/openvpn/radiusplugin.so '/etc/openvpn/radiusplugin.conf' intercepted=PLUGIN_AUTH_USER_PASS_VERIFY|PLUGIN_CLIENT_CONNECT|PLUGIN_CLIENT_DISCONNECT
...
Sun Apr  1 13:31:56 2007 192.168.2.2:3214 PLUGIN_CALL: POST /etc/openvpn/radiusplugin.so/PLUGIN_AUTH_USER_PASS_VERIFY status=0
Sun Apr  1 13:31:56 2007 192.168.2.2:3214 TLS: Username/Password authentication succeeded for username 'test' [CN SET]
至此,radius认证成功。

[END]



加载中
返回顶部
顶部