在Debian 6.0(Squeeze)上设置OpenVPN服务器对OpenLDAP进行身份验证
OpenVPN或开放式虚拟专用网络是一种在不在同一本地网络上的计算机组之间和之间创建网络“隧道”的工具。 如果您在本地网络上有服务并需要远程访问但不希望这些服务可以公开访问,这将非常有用。 通过与OpenSSL集成,OpenVPN可以加密所有的VPN流量,以提供机器之间的安全连接。
iRedmail的OpenLDAP后端可让您集成各种应用程序,实现集中式帐户管理。 本教程将介绍如何将OpenVPN集成到Debian 6.0上的iremail ldap后端中; 密码将存储在ldap中,您可以通过webmail更改密码。
本教程基于Debian 6.0,所以建议您使用SSH设置最小的Debian 6.0系统; 确保您安装所有更新。 安装iremail 0.7.0并选择openldap作为后端,如本教程所示:
1安装OpenVPN
安装OpenVPN和ldap支持:
apt-get install openvpn openvpn-auth-ldap
安装dnsmasq:
要通过VPN转发DNS流量,您需要安装dnsmasq软件包:
apt-get install dnsmasq
2 easy-rsa
OpenVPN软件包提供了一组名为“easy-rsa”的加密相关工具。 这些脚本默认位于/ usr / share / doc / openvpn / examples / easy-rsa /
目录中。 但是,为了正常运行,这些脚本应位于/ etc / openvpn
目录中。
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
配置公钥基础架构变量
在为OpenVPN生成公钥基础设施之前,我们必须配置easy-rsa脚本将用于生成脚本的几个变量。 这些变量设置在/etc/openvpn/easy-rsa/2.0/vars
文件末尾附近。 以下是相关值的示例:
根据您的环境编辑/etc/openvpn/easy-rsa/2.0/vars。
[...] export KEY_COUNTRY="CN" export KEY_PROVINCE="BJ" export KEY_CITY="BeiJing" export KEY_ORG="iRedMail" export KEY_EMAIL="www@example.com" |
初始化公钥基础设施(PKI)
按顺序发出以下命令来内部化证书颁发机构和公钥基础结构:
cd /etc/openvpn/easy-rsa/2.0/
chmod +rwx *
source ./vars
./clean-all
./pkitool --initca
生成证书
生成证书颁发机构可以为服务器生成私钥。 此脚本还将提示您提供更多信息。 默认情况下,此密钥的公用名称为“服务器”。 您可以在使用备用值有意义的情况下更改这些值。 要完成此操作,请发出以下命令:
./pkitool --server server
生成Diffie Hellman参数链接
“Diffie Hellman参数”管理OpenVPN服务器使用的密钥交换和认证方法。 发出以下命令生成这些参数:
./build-dh
重新安置安全密钥
需要将服务器的密钥和证书重新定位到/ etc / openvpn
目录,以便OpenVPN服务器进程可以访问它们。 这些文件是:
- ca.crt
- ca.key
- dh1024.pem
- server.crt
- server.key
cp keys/{ca.crt,ca.key,server.crt,server.key,dh1024.pem} /etc/openvpn/
这些文件不需要离开你的服务器。 维护对这些文件的完整性和控制对您的服务器的完整性至关重要。 如果您需要移动或备份这些密钥,请确保它们已被加密和保护。
3为LDAP认证配置OpenVPN支持
找到cn = vmail密码
在安装iremail期间随机创建vmail密码。 您可以在/etc/postfix/ldap_virtual_mailbox_domains.cf
中找到密码:
cat /etc/postfix/ldap/virtual_mailbox_domains.cf
[...] bind_dn = cn=vmail,dc=example,dc=com bind_pw = 4LFqZFiT6yx8oP7R2BctvUSLpYWRdJ #cn=vmail password [...] |
配置OpenVPN认证OpenLDAP
按顺序发出以下两个命令,以创建/ etc / openvpn / auth
文件夹,并将OpenVPN auth LDAP的示例文件复制到/ etc / openvpn / auth
目录。
mkdir /etc/openvpn/auth
cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth
现在编辑/etc/openvpn/auth/auth-ldap.conf
。
<LDAP> # LDAP server URL URL ldap://127.0.0.1 # Bind DN (If your LDAP server doesn't support anonymous binds) BindDN cn=vmail,dc=example,dc=com # Bind Password cn=vmail password Password 4LFqZFiT6yx8oP7R2BctvUSLpYWRdJ # Network timeout (in seconds) Timeout 15 </LDAP> <Authorization> # Base DN BaseDN "o=domains,dc=example,dc=com" # User Search Filter SearchFilter "(&(objectClass=mailUser)(accountStatus=active)(enabledService=vpn))" # Require Group Membership RequireGroup false </Authorization>
4配置OpenVPN
我们现在需要配置我们的服务器文件。 / usr / share / doc / openvpn / examples / sample-config-files
目录中有一个示例文件。 发出以下命令序列以检索示例配置文件并将其移动到所需的目录:
cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip -d server.conf.gz
cp server.conf /etc/openvpn/
现在编辑/etc/openvpn/server.conf
:
[...] ;push "redirect-gateway def1 bypass-dhcp" push "redirect-gateway def1" [...] ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220" push "dhcp-option DNS 10.8.0.1" [...] ##Add it at the bottom line plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/auth-ldap.conf client-cert-not-required |
5为邮件用户启用VPN服务
使用phpLDAPadmin或其他工具为现有的邮件用户添加LDAP值。
登录phpLDAPadmin:
查找现有邮件用户www@example.com
:
为用户启用VPN服务www@example.com
: