[Linux安全运维] OpenVPN部署

打印 上一主题 下一主题

主题 989|帖子 989|积分 2967

OpenVPN部署

1. 前期准备

1.1 安装epel仓库源

  1. [root@localhost ~]# yum -y install epel-release
复制代码
2. OpenVPN服务端搭建

2.1 安装openvpn

  1. [root@localhost ~]# yum -y install openvpn
复制代码
2.2 安装easy-rsa

利用wegt下令获取压缩包:
  1. [root@localhost ~]# wget https://gitcode.net/mirrors/OpenVPN/easy-rsa/-/archive/master/easy-rsa-master.tar.gz
复制代码
解压缩:
  1. [root@localhost ~]# mkdir openvpn
  2. [root@localhost  openvpn]# tar -xzvf easy-rsa-master.tar.gz
  3. [root@localhost  openvpn]# mv easy-rsa-master easy-rsa
复制代码
在解压缩的利用遇见问题:
  1. [root@localhost ~]# tar -xzvf easy-rsa-master.tar.gz
  2. gzip: stdin: not in gzip format
  3. tar: Child returned status 1
  4. tar: Error is not recoverable: exiting now
复制代码
办理这个问题可以在github上下载最新的easy-rsa.zip压缩包再举行解压
下载网址: https://github.com/OpenVPN/easy-rsa

  1. [root@localhost ~]# unzip easy-rsa-master.zip
  2. [root@localhost ~]# mkdir openvpn/
  3. [root@localhost ~]# mv easy-rsa-master openvpn/
  4. [root@localhost ~]# cd openvpn/
  5. [root@localhost openvpn]# mv easy-rsa-master easy-rsa
复制代码
2.3 配置openvpn

创建/etc/openvpn/目次,将easy-rsa放进去
  1. [root@localhost  ~]# mkdir -p /etc/openvpn/
  2. [root@localhost  ~]# cd openvpn/
  3. [root@localhost  openvpn]# cp -Rp easy-rsa /etc/openvpn/
复制代码
配置easyrsa3/中的vars文件
  1. [root@localhost ~]# cd /etc/openvpn/easy-rsa/easyrsa3/
  2. [root@localhost  easyrsa3]# cp vars.example vars
  3. [root@localhost  easy-rsa3]# vim vars
复制代码
添加:
  1. set_var EASYRSA_REQ_COUNTRY     "CN"
  2. set_var EASYRSA_REQ_PROVINCE    "Shanghai"
  3. set_var EASYRSA_REQ_CITY        "Shanghai"
  4. set_var EASYRSA_REQ_ORG         "username"(自己选)
  5. set_var EASYRSA_REQ_EMAIL       "1111@qq.com"(自己选)
  6. set_var EASYRSA_REQ_OU          "My OpenVPN"
复制代码

2.4 创建服务端证书等

初始化程序:
  1. [root@localhost  ~]# cd /etc/openvpn/easy-rsa/easyrsa3/
  2. [root@localhost  easyrsa3]# ./easyrsa init-pki
复制代码

创建根证书:
  1. [root@localhost  easyrsa3]# ./easyrsa build-ca
复制代码

这里必要输入根证书密码,如果不想输入密码,可以在创建根证书的下令中加nopass,之后的创建下令也是一样,就不再过多赘述了。
例:
  1. [root@localhost  easyrsa3]# ./easyrsa build-ca
  2. nopass
复制代码
在创建根证书的时候,还必要输入一个Common Name用户名,我这里利用的是Dai。
创建服务端证书:
  1. [root@localhost  easyrsa3]# ./easyrsa gen-req server nopass
  2. # 我这里就没有设置密码了,如果需要设置去除nopass,步骤和上面一样。
复制代码

同样的,在创建服务端证书的时候也必要输入一个Common Name用户名,留意与根证书用户名不一样。
签约服务端证书:
  1. [root@localhost  easyrsa3]# ./easyrsa sign server server
复制代码
创建过程中必要提供创建根证书的密码

创建DH(Diffie-Hellman):
  1. [root@localhost  easyrsa3]# ./easyrsa gen-dh
复制代码

2.5 创建客户端证书等

2.5.1 创建client/目次,拷贝easy-rsa文件
  1. [root@localhost  ~]# mkdir client
  2. [root@localhost  ~]# cp /etc/openvpn/easy-rsa client -Rp
  3. [root@localhost  ~]# cd client/easy-rsa/easyrsa3/
复制代码
2.5.2 初始化程序:
  1. [root@localhost  easyrsa3]# ./easyrsa init-pki
复制代码

2.5.3 创建客户端证书:
  1. [root@localhost  easyrsa3]# ./easyrsa gen-req client
复制代码
这里的密码是客户端登录连接时候必要输入的密码,所以必要记录下来

我这里在二次输入密码的时候输入不同等所以报错了,正常环境下不会出现failure。
2.5.4 将用户req导入
  1. [root@localhost  easyrsa3]# cd /etc/openvpn/easy-rsa/easyrsa3/
  2. [root@localhost easyrsa3]# ./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/client.req client_username
复制代码

2.5.5 签约证书
  1. [root@localhost  easyrsa3]# ./easyrsa sign client client_username
复制代码
签约证书必要输入根证书的密码,与签约服务端证书时的过程一样。

2.6 整理相关证书文件

2.6.1 将服务端所需的必要文件放到/etc/openvpn/中
  1. [root@localhost ~]# cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/
  2. [root@localhost ~]# cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn/
  3. [root@localhost ~]# cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn/
  4. [root@localhost ~]# cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn/
复制代码

2.6.2 将客户端所需的必要文件放到/root/client/中
  1. [root@localhost ~]# cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/client/
  2. [root@localhost issued]# cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/client_username.crt /root/client/
  3. [root@localhost  ~]# cp /root/client/easy-rsa/easyrsa3/pki/private/client.key /root/client
复制代码

2.7 修改配置文件

2.7.1 查看文件
  1. [root@localhost  ~]# rpm -ql openvpn |grep server.conf
复制代码

2.7.2 根据这个拷贝server.conf配置文件到/etc/openvpn/
  1. [root@localhost issued]# cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf /etc/openvpn/
复制代码
2.7.3 修改配置文件
  1. [root@localhost  ~]# vim /etc/openvpn/server.conf
复制代码
  1. local 0.0.0.0
  2. port 1194
  3. proto tcp
  4. dev tun
  5. ca /etc/openvpn/ca.crt
  6. cert /etc/openvpn/server.crt
  7. key /etc/openvpn/server.key  
  8. dh /etc/openvpn/dh.pem
  9. server 10.8.0.0 255.255.255.0
  10. ifconfig-pool-persist ipp.txt
  11. push "redirect-gateway def1 bypass-dhcp"
  12. push "dhcp-option DNS 8.8.8.8"
  13. client-to-client
  14. keepalive 10 120
  15. cipher AES-256-GCM
  16. comp-lzo
  17. max-clients 100
  18. user openvpn
  19. group openvpn
  20. persist-key
  21. persist-tun
  22. status /var/log/openvpn/openvpn-status.log
  23. log         /var/log/openvpn/openvpn.log
  24. verb 3
复制代码

2.7.4 修改配置文件检查脚本
  1. [root@localhost ~]# vim /etc/openvpn/checkpw.sh
复制代码
  1. #!/bin/sh
  2. ###########################################################
  3. # checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se>
  4. #
  5. # This script will authenticate OpenVPN users against
  6. # a plain text file. The passfile should simply contain
  7. # one row per user with the username first followed by
  8. # one or more space(s) or tab(s) and then the password.
  9. PASSFILE="/etc/openvpn/pw-file"
  10. LOG_FILE="/var/log/openvpn/openvpn-password.log"
  11. TIME_STAMP=`date "+%Y-%m-%d %T"`
  12. ###########################################################
  13. if [ ! -r "${PASSFILE}" ]; then
  14.   echo "${TIME_STAMP}: Could not open password file "${PASSFILE}" for reading." >> ${LOG_FILE}
  15.   exit 1
  16. fi
  17. CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`
  18. if [ "${CORRECT_PASSWORD}" = "" ]; then
  19.   echo "${TIME_STAMP}: User does not exist: username="${username}", password="${password}"." >> ${LOG_FILE}
  20.   exit 1
  21. fi
  22. if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
  23.   echo "${TIME_STAMP}: Successful authentication: username="${username}"." >> ${LOG_FILE}
  24.   exit 0
  25. fi
  26. echo "${TIME_STAMP}: Incorrect password: username="${username}", password="${password}"." >> ${LOG_FILE}
  27. exit 1
复制代码
2.7.5 编写密码文件
  1. [root@localhost ~]# vim /etc/openvpn/pw-file
复制代码
  1. user1 passwd1
  2. user2 passwd2
复制代码
2.7.6 配置权限
在日志文件/var/log/中创建一个openvpn/
  1. [root@localhost  ~]# mkdir /var/log/openvpn
复制代码
分配权限:
  1. [root@localhost  ~]# chown -R openvpn.openvpn /var/log/openvpn/
  2. [root@localhost  ~]# chown -R openvpn.openvpn /etc/openvpn/*
复制代码
2.7 iptables过滤

  1. [root@localhost  ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
  2. [root@localhost  ~]# iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
  3. [root@localhost  ~]# iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
复制代码
2.8 开启路由转发

  1. [root@localhost  ~]# vim /etc/sysctl.conf
  2. net.ipv4.ip_forward = 1
  3. [root@localhost  ~]# sysctl -p
复制代码
2.9 开启openvpn服务

  1. [root@localhost  ~]# openvpn /etc/openvpn/server.conf &
  2. [root@localhost ~]# netstat -ntlp
复制代码

3. 客户端连接

3.1 创建client.ovpn文件

  1. client
  2. dev tun
  3. proto udp
  4. remote 10.8.0.7 1194    ## openvpn服务端IP
  5. resolv-retry infinite
  6. nobind
  7. ## 指定ca、cert、key的路径
  8. ca ca.crt
  9. cert client.crt
  10. key client.key
  11. verb 3
  12. persist-key
  13. comp-lzo
复制代码

3.2 连接openvpn


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表