【SQL开源代码栏目提醒】:以下是网学会员为您推荐的SQL开源代码-构建安全高效功能全面的SSLVPN_开源软件的研究与实践 - 培训教程,希望本篇文章对您学习有所帮助。
?? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net第πξ卷第λ??期 2009年6月 构建安全高效功能全面的SSLVPN3———
开源软件的研究与实践 王泽贤广州大学图书馆 广州510006〔摘要〕重点介绍如何开发插件扩展OpenVPN的功能实现用户名/密码身份认证、记录用户访问日志及用户访问控制功能并对OpenVPN服务器及客户端的安装、设置进行了说明。
利用
开源软件低成本地构建安全高效功能全面的SSLVPN有效解决在外网访问电子资源受限制的问题。
〔关键词〕
开源软件 SSLVPN OpenVPN〔分类号〕TP393.03BuildingSafeandEfficientFull-FeaturedSSLVPN ———theResearchandPracticeofOpenSourceSoftwareWangZexianGuangzhouUniversityLibraryGuangzhou510006〔Abstract〕Thispaperfocusesonhowtodeveloptheplug2inOpenVPNtorealizetheusername/passwordauthenticationuseraccesslogsandrecordsofuseraccesscontrol.ItintroducestheinstallationandthesetupofOpenVPNclientandserverandusesopensourcesoftwaretobuildsafeandefficientfull2featuredSSLVPNinalow2costway.Aneffectivesolutionisusedtosolvetherestrictedissuewhenaccessingtheelectronicresourcesoutsidenetworkofpublic.〔Keywords〕opensourcesoftware SSLVPN OpenVPN 3本文系广州市教育科学“十一五”规划项目“关于用
开源内容管理系统构建教育知识门户的研究”项目编号:07B200研究成果之一。
收稿日期:2008-10-13 修回日期:2008-12-02 本文起止页码:123-126 本文责任编辑:徐 健1 前 言1.1 SSLVPN简介 SSLVPN是一种利用SSL/TLS协议结合强加密算法、身份认证等技术开发而成利用开放的公众网络建立专用数据传输通道安全地对内部专用网络进行远程访问的一种网络技术1。
它具有以下特点:①客户端支持维护简单②提供增强的远程安全接入功能③提供更细粒度的访问控制④能够穿越防火墙等设备⑤能够较好地抵御外部病毒攻击⑥网络部署方便灵活2。
因此对于要求较多用户通过外部公众网络安全有效地访问内部网络资源的情况SSLVPN是最好的解决方案可以有效地解决图书馆电子资源在外网访问受限制的问题。
1.2 OpenVPN简介 目前已有很多成功的SSLVPN商业产品但这些产品一般都要几万元甚至十多万元以上并且难于进行二次开发。
其实除了商业产品外还可以利用
开源软件低成本甚至是免费地实现SSLVPN。
OpenVPN就是一个功能齐全、开放源码的SSLVPN解决方案。
OpenVPN利用工业标准SSL/TLS协议实现了OSI第2层或第3层安全网络扩展提供了基于证书的客户认证方法。
OpenVPN主要依靠OpenSSL的RSA、DiffieHellman等算法进行用户认证、密钥交换和数据加密。
OpenVPN具有可运行于多种操作系统及网络环境提供了多种加密算法实现数据加密、用户证书认证防火墙、NAT穿透力强支持动态地址可配置性强等优点3。
并且OpenVPN不是一个Web应用代理也不通过Web浏览器进行操作因此可以实现如“超星数字图书馆”等C/S结构系统的正常访问。
OpenVPN相对于商业产品最大的优点是支持插件
开源便于二次开发可免费使用。
1.3 系统构建方案321?? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 第πξ卷第λ??期 2009年6月 2.3 记录用户访问日志的实现 用户的VPN访问日志包括了登录时间、退出时间、访问流量等信息可供进一步实现监控、分析、计费等功能。
用于保存这些信息的数据表名为VPN_Log它的主要字段如下: UserName varchar30—用户名 Logindatetime—登录日期时间 TrustedIPvarchar15—客户端的实际IP地址 RemoteIPvarchar15—OpenVPN为客户端分配的IP地址 Logoutdatetime—退出日期时间 Receivedbigint—收到数据量 Sentbigint—发送数据量 log_connecthandleenvp实现登录时的日志记录:首先从envp中取得username、trusted_ip、ifconfig_pool_remote_ip并取得服务器的当前日期时间值date2time然后在VPN_Log表中插入新的记录并设置User表中的VPNState字段值为1防止同一账号同时多次登录。
执行的
SQL如下: insertintoVPN_LogUserNameLoginTrustedIPRemoteIP valuesusernamedatetimetrusted_ipifconfig_pool_remote_ip updateUsersetVPNState1whereUsernameuse2rname log_disconnecthandleenvp实现退出时的日志记录:首先从envp中取得username、bytes_received、bytes_sent并取得服务器的当前日期时间值datetime然后在VPN_Log表中更新对应的记录内容再设置User表中的VPNState字段值为0表示该用户可以登录。
执行的
SQL如下: updateVPN_LogsetLogoutdatetimeReceivedbytes_receivedSentbytes_sent whereUserNameusernameandLogoutisnull updateUsersetVPNState0whereUsernameuse2rname2.4 用户访问控制的实现 linux系统本身集成了防火墙工具iptables可以方便地增加、插入或删除防火墙规则对流入和流出的信息进行细化控制6。
因此可以在Linux上利用ipt2ables实现OpenVPN的用户访问控制。
按不同的用户组制定不同的访问控制策略实现访问控制的分组管理。
OpenVPN给客户端分配、收回IP地址时会触发OPENVPN_PLUGIN_LEARN_AD2DRESS事件并传入3个参数:①操作类型。
可以是“add”、“update”、“delete”分别表示分配、修改、收回②用户的VPNIP地址③用户名。
access_policyhan2dleargv实现访问控制功能:当“add”操作时根据用户名可以从User表查出该用户所属的分组从而确定相应的访问控制策略然后调用iptables命令建立针对该用户的VPNIP地址的访问控制规则当“delete”操作时调用iptables命令删除该用户的VPNIP地址对应的规则。
例如允许访问外网的iptables命令: iptables2tnat2APOSTROUTING2s192.168.2.0/242oeth02jSNAT———to2source59.41.1.13 OpenVPN的安装及设置 OpenVPN的安装设置较为复杂下面对OpenVPN安装设置的主要内容进行介绍。
本文中“”表示相关说明“”表示在命令窗输入的命令。
3.1 OpenVPN服务器安装 首先安装SUSELinux服务器。
安装时要注意的是:openssl、openssl2devel、lzo、lzo2devel、make、gcc、glibc、glibc2devel、SuSEfirewall2必须安装4。
如果VPN客户端要访问外网还要开启Linux的ipforward功能设置的命令如下: sysctl2wnet.ipv4.ip_forward1 以root用户登录Linux服务器从www.openvpn.net下载最新版的OpenVPN程序源
代码并解压到该目录然后编译安装: ./configure—sbindir/usr/local/sbin—with-ssl2headers/usr/include/openssl —with2ssl2lib/usr/lib—with2lzo2headers/usr/include—with2lzo2lib/usr/lib —enable2iproute2—with2ifconfig2path/sbin make makeinstall mkdir/etc/openvpn建立存放OpenVPN服务器设置文件的目录 cpsuse/openvpn.init/etc/init.d/openvpn生成自动运行OpenVPN服务设置 生成证书认证文件: cdeasy2rsa/2.0/ cpopenssl.cnf/etc/openvpn/ 根据实际情况修改vars的以下内容:KEY_CON2521?? 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net ./build2dh生成交换密钥协议文件 ./build2ca生成CA根证书 ./build2key2serverserver生成VPN服务器端证书 ./build2keyclient生成VPN客户端证书 OpenVPN—genkey—secretKEY_DIR/ta.key生成防止恶意攻击文件3.2 OpenVPN服务器设置 使用OpenVPN提供的样本文件sample2config2files/server.conf作为服务器参数设置的基础文件/etc/openvpn/server.conf修改设置参数主要内容如下: local59.41.1.1VPN服务器使用的IP地址 port2000申明使用的端口 prototcp申明使用的网络协议 devtun申明使用的设备 ca/etc/openvpn/keys/ca.crt下面指定所使用的认证证书及加密文件 cert/etc/openvpn/keys/server.crt key/etc/openvpn/keys/server.key dh/etc/openvpn/keys/dh1024.pem tls2auth/etc/openvpn/keys/ta.key0 server192.168.2.0255.255.255.0设置VPN的地址范围 comp2lzo对数据进行压缩 plugin/etc/openvpn/openvpn_plugin.so注册自行开发的插件程序3.3 OpenVPNWindows客户端的安装及设置 首先到www.openvpn.net下载OpenVPN最新的Windows安装程序并运行选用缺省设置进行安装再将OpenVPN服务器上生成的ca.crt、ca.key、client.crt、client.csr、client.key、ta.key下载到安装目录的config目录下将sample2configclient.ovpn文件复制到config目录用“记事本”打开该文件进行修改修改后主要内容如下: client指明是客户端 devtun设备类型和Server端一致 prototcp协议类型和Server端一致 remote59.41.1.12000连接的服务器及端口 caca.crt下面是证书认证参数 certclient.crt keyclient.key ns2cert2typeserver tls2authta.key1 comp2lzo redirect2gatewaydef1所有的网络访问都重新定向到VPN auth2user2pass使用用户名/密码认证方式 最后运行OpenVPN客户端连接程序OpenVPNGUI就可以进行连接。
为了进一步提高用户使用的简便性本系统还对客户端连接程序进行了汉化重新制作了用户安装程序实现安装、设置自动化。
由于篇幅所限这里不进行详细介绍。
4 结 语 实践证明OpenVPN是一个结构灵活、高效、功能完整的SSLVPN系统。
利用OpenVPN等
开源软件进行一些简单开发可以低成本甚至是免费地实现安全高效功能全面的SSLVPN较好地解决馆外、校外使用电子资源受限制的问题。
参考文献:1郭瑞赵新辉.一种SSLVPN技术的实现与研究.科技信息200719:305-307.2周敬利曾海鹏.SSLVPN服务器关键技术研究.计算机工程与科学2005276:7-9.3FeilnerM.OpenVPN:BuildingandIntegratingVirtualPrivateNet2works.Birmingham:PacktPublishingLtd.2006:27-28.4OpenVPN2.0.9onSuSELinux10.x.2008-09-03.http://www.komaii.com/linux/openvpn-on-SuSE10.0/.5OpenVPN2.1Manuals.2008-09-03.http://www.open2vpn.net/index.php/documentation/manuals/openvpn-21.html.6SuehringSRobertL.Ziegler.Linux防火墙.何泾沙译.北京:机械工业出版社2006:73-102.〔作者简介〕王泽贤男1972年生副研究馆员发表论文10篇参编教材1部。
621
上一篇:
SQL Server 2008宝典
下一篇:
多年来只想说一句,我不怪你