OpenVPN联合LDAP安装调试(新版本)

  1. 一、 写作背景
  2. 二、 环境准备
  3. 三、 软件配置
  4. 四、 文章引用

一、 写作背景

以前写过一个版本,OpenVPN联合LDAP安装调试,这几天重新搭建时发现,部分软件已经升级,原来的版本不太适用,故将新版本操作过程记录备查。
经过多次测试,直接做成脚本。

二、 环境准备

1、Centos系统:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.21.1.el7 CentOS7系统安装
2、openvpn官网:openvpn官网
3、openvpn版本:OpenVPN 2.4.4
4、openssl版本:OpenSSL 1.0.2k-fips
5、easyrsa版本:3.0.3 (主要是这个对于前版本变化较大)

三、 软件配置

脚本文件及相关说明

#!/bin/bash

#####################################
# Install openvpn and other software#
#####################################

#软件安装,并将相关文件复制到指定位置
yum install openssl openssl-devel easy-rsa openvpn zip -y
cp -a /usr/share/easy-rsa/3.0.3/* /etc/openvpn/server/
cp -a /usr/share/easy-rsa/3.0.3/* /etc/openvpn/client/
cp -a /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/openvpn/server/vars
cp -a /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/openvpn/client/vars
#cp -a ./template.ovpn /etc/openvpn/client/template.ovpn
# 下面这几个文件分别是,后面会给出:
# users:          用户名列表,用于生成用户证书;
# build-vpn.sh:   脚本文件自身;
# server.conf:    SVN服务器配置文件;
# checkpws.sh:    用户登录脚本验证文件;
# psw-file:        用户名密码;
cp -a ./users /etc/openvpn/client/users
cp -a ./build-vpn.sh /etc/openvpn/
cp -a ./server.conf /etc/openvpn/
cp -a ./checkpws.sh /etc/openvpn
cp -a ./psw-file /etc/openvpn

#####################################
# Generate server's CA KEY          #
#####################################

# 进入服务器端配置文件目录
# 建立一个空的pki结构,生成一系列的文件和目录
# 生成免密CA证书 ca.crt
# 生成免密Server证书\密钥 server.crt
# #签约服务端证书
# 生成迪菲·赫尔曼密钥 dh.pem
# 生成 tls-auth 加密文件
cd /etc/openvpn/server/
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req server nopass
./easyrsa sign server server
./easyrsa gen-dh
openvpn --genkey --secret /etc/openvpn/server/pki/ta.key

##################################
# Copy files to server folder   #
##################################

# 复制指定文件到指定目录
# 分别需要上面生成的ca.crt dh.pem server.crt server.key ta.key 
# 修改用户登录验证文件的属性
# 建议将 psw-file 的权限属性更改为400 
cp -a /etc/openvpn/server/pki/ta.key /etc/openvpn/
cp -a /etc/openvpn/server/pki/ca.crt /etc/openvpn/
cp -a /etc/openvpn/server/pki/dh.pem /etc/openvpn/
cp -a /etc/openvpn/server/pki/private/server.key /etc/openvpn/
cp -a /etc/openvpn/server/pki/issued/server.crt /etc/openvpn/
chown nobody:nobody /etc/openvpn/checkpws.sh
chown nobody:nobody /etc/openvpn/psw-file
chmod 744 /etc/openvpn/checkpws.sh
chmod 400 /etc/openvpn/psw-file

#################################
# Generate Client's CA KEY      #
#################################

# 建立新目录,用于保存用户端证书
# 进入用户端生成目录
# 建立一个空的pki结构,生成一系列的文件和目录
# 循环读取要生成的用户列表
# 生成免密用户证书
# 进入server端目录,用户端证书需要在server端注册
# 在服务端导入用户端req
# 签约客户端证书 
mkdir -p /etc/openvpn/clientconfig/
cd /etc/openvpn/client
./easyrsa init-pki
for line in $(cat /etc/openvpn/client/users)
do
./easyrsa gen-req "${line}" nopass
cd /etc/openvpn/server/
./easyrsa import-req /etc/openvpn/client/pki/reqs/"${line}".req "${line}"
./easyrsa sign client "${line}"

#################################
# Generate Client's Config      #
#################################

# 将指定的几个文件写入到客户端文件中
# 生成文件如下格式:
# client        # 客户端
# dev tun       # 使用路由模式
# proto udp     # 使用UDP协议
# remote XXX.XXX.XXX.XXX 1194    # 连接的IP或域名 端口号
# resolv-retry infinite
# nobind
# persist-key
# persist-tun
# comp-lzo      # 数据压缩格式,和服务端保持一致
# verb 3      # 日志级别
# auth-user-pass    # 用户登录验证
# ca [inline]     # ca证书位置,这里是指在本文件内,在其它地方,如:/etc/penvpn/ca.crt
# tls-auth [inline] 1   # ta证书位置,服务器端这里要设置为0,客户端为1,不能出错
# cipher AES-256-CBC

#CA证书 
# <ca>
#       ...
# </ca>
#  .....

echo -e "\n" >> /etc/openvpn/clientconfig/"${line}".ovpn
echo -e "client\ndev tun\nproto udp\n" >> /etc/openvpn/clientconfig/"${line}".ovpn
echo -e "remote 211.154.252.162 1194 " >> /etc/openvpn/clientconfig/"${line}".ovpn
echo -e "resolv-retry infinite\nnobind\npersist-key\npersist-tun"  >> /etc/openvpn/lientconfig/"${line}".ovpn
echo -e "\ncomp-lzo\nverb 3\nauth-user-pass\n"  >> /etc/openvpn/clientconfig/"${line}.ovpn
echo -e "ca [inline]\ntls-auth [inline] 1\ncipher AES-256-CBC\n" >> /etc/openvpn/lientconfig/"${line}".ovpn
echo -e "#CA证书\n<ca>\n" >> /etc/openvpn/clientconfig/"${line}".ovpn
#cp - /etc/openvpn/clientconfig/"${line}".ovpn /etc/openvpn/clientconfig/"${line}".vpn.bak
cat /etc/openvpn/server/pki/ca.crt >> /etc/openvpn/clientconfig/"${line}".ovpn
echo -e "</ca>\n\n#用户端证书\n<cert>\n" >> /etc/openvpn/clientconfig/"${line}".ovpn
cat /etc/openvpn/server/pki/issued/"${line}".crt >> /etc/openvpn/clientconfig/"${line}.ovpn
echo -e "\n</cert>\n\n#用户密钥\n<key>\n" >> /etc/openvpn/clientconfig/"${line}".ovpn
cat /etc/openvpn/client/pki/private/"${line}".key >> /etc/openvpn/clientconfig/"$line}".ovpn
echo -e "\n</key>\n\n#Tls-auth\n<tls-auth>\n" >> /etc/openvpn/clientconfig/"${line}".vpn
cat /etc/openvpn/server/pki/ta.key >> /etc/openvpn/clientconfig/"${line}".ovpn
echo -e "\n</tls-auth>" >> /etc/openvpn/clientconfig/"${line}".ovpn
# 经过以上操作,已经生成可以在Windows,Linux,IOS系统下可直接使用的用户端证书文件
# Android端的有部分软件需要手动配置所以将以下几个文件也打包一下。方便多终端都可以使用。
cp /etc/openvpn/server/pki/ca.crt /etc/openvpn/clientconfig/
cp /etc/openvpn/server/pki/issued/"${line}".crt /etc/openvpn/clientconfig/
cp /etc/openvpn/client/pki/private/"${line}".key /etc/openvpn/clientconfig/
cp /etc/openvpn/server/pki/ta.key /etc/openvpn/clientconfig/

#################################
# Zip and Remove config file    #
#################################

# 打包配置文件,并清理相关文件结束循环
# 保存已经生成的用户列表到其它文件,备查
cd /etc/openvpn/clientconfig/
zip "${line}".zip "${line}".* ca.crt ta.key
rm  -rf ca.crt ta.key "${line}".crt "${line}".key "${line}".ovpn "${line}".ovpn.bak
cd /etc/openvpn/client
done
cat users >> users.bak
cd /etc/openvpn/clientconfig/
cd /etc/openvpn/

################################
# start openvpn@server         #
################################
# 修改系统相关文件并启动服务
# 修改并关闭SELINUX
# 启动防火墙并开启相关端口
# 启动防火墙的路由伪装 firewall-cmd --permanent --add-masquerade
# 重新加载防火墙配置
# 开启IP转换
# 将openvpn@server服务启动并加入开机自启动。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/'
setenforce 0
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --permanent --zone=public --add-service=openvpn
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
echo net.ipv4.ip_forward=1 > /etc/sysctl.conf
sysctl -p
systemctl start openvpn@server
systemctl enable openvvpn@server

四、 文章引用


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin

文章标题:OpenVPN联合LDAP安装调试(新版本)

字数:1.7k

本文作者:Longger

发布时间:2018-04-11, 12:51:23

最后更新:2024-11-05, 22:13:19

原始链接:https://www.longger.xin/article/14744.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

github