将VPN与LDAP结合,搭建一个安全可控的私有网络。

一,技术选型

1. 企业VPN构建平台:OpenVPN

为什么没有选用之前介绍的WireGuard?

主要原因是没有找到WireGuard与LDAP结合的方案,网上说有wg-ldap,但没找到可用资源。

2. 统一身份认证平台及管理系:OpenLDAP+LAM

使用前篇文章介绍的部署成果。

二,详细步骤

本次实践依然选择Rocky Linux 9.5操作环境。

1. 系统准备

# 更新系统
sudo dnf update -y

# 安装必要工具
sudo dnf install -y epel-release
sudo dnf install -y wget openssl openssl-devel easy-rsa

2、安装OpenVPN及LDAP插件

# 安装OpenVPN和插件
sudo dnf install -y openvpn openvpn-auth-ldap

3、配置PKI证书

# 复制EasyRSA模板
sudo cp -r /usr/share/easy-rsa/3.2.1 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

# 初始化PKI
sudo ./easyrsa init-pki

# 生成CA证书(按提示输入信息)
sudo ./easyrsa build-ca

# 生成服务器证书
sudo ./easyrsa build-server-full server nopass

# 生成Diffie-Hellman参数
sudo ./easyrsa gen-dh

# 生成TLS密钥
sudo openvpn --genkey --secret pki/ta.key

4、配置LDAP认证

创建LDAP配置文件:

sudo vi /etc/openvpn/auth/ldap.conf

添加以下内容(根据实际情况修改):

<LDAP>
    URL             ldap://192.168.1.102:389
    BindDN          "cn=admin,dc=rjqs,dc=com"
    Password        "your_ldap_admin_password"
    Timeout         15
    TLSEnable       no
    FollowReferrals yes
</LDAP>

<Authorization>
    BaseDN          "ou=users,dc=rjqs,dc=com"
    SearchFilter    "(uid=%u)"
    RequireGroup    false
</Authorization>

5、制作服务器端配置文件

(一)创建服务器配置文件

sudo cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
sudo vi /etc/openvpn/server/server.conf

(二)调整服务器配置文件

认证分为3种类型,需要服务器配置文件(server.conf)和客户端配置文件(*.ovpn)对应修改。

1-仅使用客户端证书认证

server.conf示例如下:

port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
data-ciphers AES-256-GCM:AES-128-GCM
auth SHA256
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3

verify-client-cert require #强制客户端证书认证

2-仅使用LDAP认证

server.conf示例如下:

port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
# 服务端配置
push "auth-nocache"
push "redirect-gateway def1"# 同时推送其他安全参数
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
data-ciphers AES-256-GCM:AES-128-GCM
auth SHA256
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3

# LDAP认证
plugin /usr/lib64/openvpn/plugins/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
verify-client-cert none      #无需客户端证书认证
username-as-common-name   # 使用用户名作为标识

3-同时使用客户端认证和LDAP认证

server.conf示例如下:

port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
# 服务端配置
push "auth-nocache"
push "redirect-gateway def1"# 同时推送其他安全参数
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
data-ciphers AES-256-GCM:AES-128-GCM
auth SHA256
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3

# LDAP认证
plugin /usr/lib64/openvpn/plugins/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf

verify-client-cert require #强制客户端证书认证

#verify-client-cert none      #无需客户端证书认证
username-as-common-name   # 使用用户名作为标识

6、制作OpenVPN客户端证书

如果使用客户端证书认证,需为每个客户端生成证书和私钥:

(一)生成客户端证书

1-进入EasyRSA目录:

cd /etc/openvpn/easy-rsa

2-生成客户端证书

sudo ./easyrsa build-client-full client1 nopass  # client1为客户端名称

3-获取客户端证书和私钥:

证书位置:  /etc/openvpn/easy-rsa/pki/issued/client1.crt
私钥位置:  /etc/openvpn/easy-rsa/pki/private/client1.key

4-将证书和私钥复制到客户端配置目录

sudo cp /etc/openvpn/easy-rsa/pki/issued/client1.crt /etc/openvpn/client/
sudo cp /etc/openvpn/easy-rsa/pki/private/client1.key /etc/openvpn/client/

(二)制作客户端配置文件

1-新建客户端配置文件

vi /etc/openvpn/client/client.ovpn

1.1-如果仅使用客户端证书认证,客户端配置文件内容示例如下:

client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt  #需要文件全路径
cert client.crt    #需要文件全路径
key client.key     #需要文件全路径
tls-auth ta.key 1  #需要文件全路径
key-direction 1
data-ciphers AES-256-GCM:AES-128-GCM
auth SHA256
remote-cert-tls server
verb 3

1.2-如果仅使用LDAP认证,客户端配置文件内容示例如下:

client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt   #需要文件全路径
tls-auth ta.key 1   #需要文件全路径
key-direction 1
data-ciphers AES-256-GCM:AES-128-GCM
auth SHA256
auth-user-pass    # 强制输入LDAP用户名密码
auth-nocache  # 禁用内存缓存
remote-cert-tls server
verb 3

1.3-如果同时使用客户端证书和LDAP认证,客户端配置文件内容示例如下:

client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt  #需要文件全路径
cert client.crt    #需要文件全路径
key client.key     #需要文件全路径
tls-auth ta.key 1  #需要文件全路径
key-direction 1
data-ciphers AES-256-GCM:AES-128-GCM
auth SHA256
auth-user-pass     # 强制输入LDAP用户名密码
auth-nocache  # 禁用内存缓存
remote-cert-tls server
verb 3

(三)制作客户端证书及配置文件的压缩包

1-创建客户端文件夹:

mkdir -p ~/openvpn-client

2-复制所需文件:

sudo cp /etc/openvpn/client/client.ovpn ~/openvpn-client/
sudo cp /etc/openvpn/easy-rsa/pki/ca.crt ~/openvpn-client/
sudo cp /etc/openvpn/easy-rsa/pki/ta.key ~/openvpn-client/
sudo cp /etc/openvpn/easy-rsa/pki/issued/client1.crt ~/openvpn-client/  # 如果使用客户端证书
sudo cp /etc/openvpn/easy-rsa/pki/private/client1.key ~/openvpn-client/  # 如果使用客户端证书

3-打包文件:

tar -czvf openvpn-client.tar.gz -C ~/openvpn-client .

4-将打包文件发送给客户端:

使用SCP、SFTP或邮件等方式将 openvpn-client.tar.gz 发送给客户端。

7、配置防火墙和路由

# 允许OpenVPN端口
sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --reload

# 启用IP转发
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

8、启动服务

sudo systemctl start openvpn-server@server
sudo systemctl enable openvpn-server@server

9、验证LDAP连接

# 测试LDAP查询
ldapsearch -x -H ldap://192.168.1.102:389 -D "cn=admin,dc=rjqs,dc=com" -W -b "ou=users,dc=rjqs,dc=com"

10、使用OpenVPN客户端登入私有网络

(一)在OpenVPN官网下载对应操作系统的OpenVPN客户端

(二)将上文提到的所有客户端配置软件下载到本地,配置好client.ovpn文件内的全路径信息

(三)打开OpenVPN客户端,导入client.ovpn文件,选择“连接”。

如果以上所有信息设置正确,服务正常,此时便可以连接到VPN网络,便如同在局域网一样用内网地址访问各类资源

文章作者: Lukey
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 三多运维
企业信息化实践 openVPN LDAP
喜欢就支持一下吧