centos安装配置_CentOS安装配置OpenVPN并可以用证书或账号密码登录

更新时间:2019-09-10    来源:CentOS    手机版     字体:

【www.bbyears.com--CentOS】

OpenVPN是不同于PPTP、L2TP的另一种VPN软件包,基于SSL的VPN。OpenVPN使用需要客户端支持。这里系统为CentOS6.4。
一、检查OpenVPN所需环境
OpenVPN需要TUN设备支持,还需要iptables的nat模块支持。
1、检查TUN模块:

modinfo tun

显示如下:
CentOS安装配置OpenVPN并可以用证书或账号密码登录
如果报错则不支持TUN设备。 2、在OpenVZ虚拟化的VPS上,需要管理员在母鸡上打开TUN/TAP设备。

cat /dev/net/tun

如果返回:

cat: /dev/net/tun: File descriptor in bad state

VPS的TUN/TAP已经可以使用。
如果返回:

cat: /dev/net/tun: No such device

或者其它,说明TUN/TAP设备没有被正确配置,需要与客服沟通开通TUN/TAP。
3、检查OpenVZ的VPS上iptables是否支持:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE

如果返回:

iptables: Unknown error 4294967295

说明支持。
二、编译安装OpenVPN
1、安装依赖环境

yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig

2、安装OpenVPN

wget -c http://swupdate.openvpn.org/community/releases/openvpn-2.3.0.tar.gz tar zxvf openvpn-2.3.0.tar.gz cd openvpn-2.3.0 ./configure make make install mkdir –p /etc/openvpn cp -Rf sample  /etc/openvpn/ cd ..

单独下载easy-rsa,制作ca证书,服务端证书,客户端证书

#openvpn-2.3.0.tar.gz 该版本源码不包含easy-rsa,所以需要单独下载安装 easy-rsa wget -c https://github.com/OpenVPN/easy-rsa/archive/master.zip unzip master mv easy-rsa-master easy-rsa cp -Rf  easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa/easy-rsa/2.0

三、生成密钥和证书

vim vars #调到最后找到一下代码 export KEY_COUNTRY="CN" export KEY_PROVINCE="JN" export KEY_CITY="DZ" export KEY_ORG="lvtao" export KEY_EMAIL="admin@lvtao.net" export KEY_OU="lvtao" #x!保存退出    ln -s openssl-1.0.0.cnf openssl.cnf chmod +x vars source ./vars ./clean-all #制作ca证书 ./build-ca #制作服务端证书 ./build-key-server server #制作客户端证书 ./build-key client1 ./build-dh #打包keys tar zcvf keys.tar.gz keys/ #终端发送到客户端备用 sz keys.tar.gz

#keys中的文件说明

Filename

Needed By

Purpose

Secret

ca.crt

server + all clients

Root CA certificate

NO

ca.key

key signing machine only

Root CA key

YES

dh{n}.pem

server only

Diffie Hellman parameters

NO

server.crt

server only

Server Certificate

NO

server.key

server only

Server Key

YES

client1.crt

client1 only

Client1 Certificate

NO

client1.key

client1 only

Client1 Key

YES

cd /etc/openvpn/sample/sample-config-files/ cp server.conf ../../  #配置server.conf,具体参数不再累述 vi ../../server.conf  #复制keys cd /etc/openvpn/easy-rsa/easy-rsa/2.0/keys cp -Rf ca.crt server.crt server.key dh2048.pem /etc/openvpn/  # 编辑/etc/sysctl.conf,找到net.ipv4.ip_forward = 0改成net.ipv4.ip_forward = 1保存。然后执行: sysctl –p  #设置nat转发.注意最后192.168.122.180改成你的服务器的IP地址。 iptables -t nat -A POSTROUTING -s 10.8.8.0/24 -j SNAT --to-source 192.168.122.180 /etc/init.d/iptables save /etc/init.d/iptables restart

PS:如果iptables save报错

iptables: Saving firewall rules to /etc/sysconfig/iptables: /etc/init.d/iptables: line 268: restorecon: command not found

要安装一个软件包:
yum install policycoreutils 设置OpenVPN开机自启动

echo "/usr/local/sbin/openvpn --config /etc/openvpn/easy-rsa/2.0/conf/server.conf &" >> /etc/rc.local

启动OpenVPN

/usr/local/sbin/openvpn --config /etc/openvpn/easy-rsa/2.0/conf/server.conf  >/dev/null 2>&1 &



使用密码登录配置
修改openvpn服务主配置文件,添加如下内容;如果加上client-cert-not-required则代表只使用用户名密码方式验证登录,如果不加,则代表需要证书和用户名密码双重验证登录!

tail -3 /etc/openvpn/server.conf auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env client-cert-not-required  username-as-common-name

验证用户登录脚本并进行相应的修改,主要改PASSFILE和LOG_FILE两个变量

#!/bin/sh ########################################################### # checkpsw.sh (C) 2004 Mathias Sundman  # # This script will authenticate OpenVPN users against # a plain text file. The passfile should simply contain # one row per user with the username first followed by # one or more space(s) or tab(s) and then the password.  PASSFILE="/etc/openvpn/psw-file" LOG_FILE="/var/log/openvpn-password.log" TIME_STAMP=`date "+%Y-%m-%d %T"`  ###########################################################  if [ ! -r "${PASSFILE}" ]; then   echo "${TIME_STAMP}: Could not open password file "${PASSFILE}" for reading." >> ${LOG_FILE}   exit 1 fi  CORRECT_PASSWORD=`awk "!/^;/&&!/^#/&&$1==""${username}""{print $2;exit}" ${PASSFILE}`  if [ "${CORRECT_PASSWORD}" = "" ]; then    echo "${TIME_STAMP}: User does not exist: username="${username}", password="${password}"." >> ${LOG_FILE}   exit 1 fi  if [ "${password}" = "${CORRECT_PASSWORD}" ]; then    echo "${TIME_STAMP}: Successful authentication: username="${username}"." >> ${LOG_FILE}   exit 0 fi  echo "${TIME_STAMP}: Incorrect password: username="${username}", password="${password}"." >> ${LOG_FILE} exit 1

准备用户名和密码认证文件,用户名和密码用空格隔开,同时确保openvpn启动用户可读取该文件

vi psw-file    lvtao  954270

配置权限

chmod 400 psw-file   chown nobody.nobody psw-file

修改客户端配置文件
注释掉

;cert lvtao.crt  ;key  lvtao.key

增加询问用户名和密码

auth-user-pass

本文来源:http://www.bbyears.com/caozuoxitong/67226.html

热门标签

更多>>

本类排行