回 帖 发 新 帖 刷新版面

主题: centos6.8+openvpn实现账户密码连接(通过端口映射的方式)

                             centos6.8+openvpn实现账户密码连接(通过端口映射的方式)

#搭建openvpn(编译安装)

初始化环境


#update epel mirror

yum install wget -y

cd /etc/yum.repos.d && rm -rf *

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

 

 

#Yum Packs

echo "install/update gcc make wget vim ntpdate sysstat"

yum install -y gcc gcc-c++ vim ntpdate lsof

 

 

#disable selinux

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

setenforce 0

 

#alias vim

echo 'alias vi="vim"' >>/etc/profile

source /etc/profile

 

#modify UseDNS

 

sed -i '#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config

 

 

#ntpdate corntab

echo 'ntpdate ntp1.aliyun.com'

echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com' >> /var/spool/cron/root

chmod 600 /var/spool/cron/root

ntpdate ntp1.aliyun.com

cat  << EOF

 +--------------------------------------------------------------+

 |                    ===System init over===                    |

 +--------------------------------------------------------------+

 +---------------------------by liuhuihuang---------------------+

EOF

echo "##########################################################"

复制代码

 

创建一个专门存放openvpn软件的目录
mkdir -p /home/xianlai/tools/openvpn

通过xftp把lzo-2.06.tar.gz openvpn-2.2.2.tar.gz checkpsw.sh传到/home/xianlai/tools/openvpn目录里

安装 lzo 软件,用于后面文件的压缩
tar zxf lzo-2.06.tar.gz 
cd lzo-2.06 
./configure && make && make install

通过 yum 安装 openssl,openssl-devel 两个软件,没有它俩 openvpn 的安装就会报错
yum -y install openssl openssl-devel

安装 openvpn 软件
tar zxf openvpn-2.2.2.tar.gz
cd openvpn-2.2.2
./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
make
make install

检查 openvpn 是否安装成功,并且查看其版本
which openvpn
openvpn --version

备份 var 文件,并且修改模板
cd /home/xianlai/tools/openvpn/openvpn-2.2.2/easy-rsa/2.0
cp vars vars.bak
vim vars
export KEY_COUNTRY="CN" 
export KEY_PROVINCE="BJ" 
export KEY_CITY="BJ" 
export KEY_ORG="XL" 
export KEY_EMAIL="528634141@qq.com" 
export KEY_EMAIL=528634141@qq.com 
export KEY_CN=CN 
export KEY_NAME=xianlai 
export KEY_OU=xianlai 
export PKCS11_MODULE_PATH=changeme 
export PKCS11_PIN=1234

执行 source 命令使配置文件生效
source vars
./clean-all

创建 CA 证书,一路回车
./build-ca 
生成服务器端证书和秘钥文件,输入两次y,一路回车
./build-key-server server
Sign the certificate? [y/n]:y 
1 out of 1 certificate requests certified, commit? [y/n]y 

生成客户端证书和 key 文件(用户user1)
./build-key user1 
Sign the certificate? [y/n]:y 
1 out of 1 certificate requests certified, commit? [y/n]y 

生成传输进行秘钥交换时用到的交换秘钥协议文件
./build-dh

生成一个防止恶意攻击的文件(效果似乎一般)
openvpn --genkey --secret keys/ta.key 

创建 openvpn 目录,用于存放配置文件
mkdir /etc/openvpn 

拷贝2.0目录下的 keys 目录,并切换目录拷贝 server.conf client.conf 文件
cp -ap keys/ /etc/openvpn/
cd /home/xianlai/tools/openvpn/openvpn-2.2.2/sample-config-files/
cp client.conf server.conf /etc/openvpn/

编辑 openvpn 的配置文件,在操作前养成好习惯,先进行备份
cd /etc/openvpn
cp server.conf server.conf.bak

可以通过 grep 命令过滤查看配置文件,并通过一个临时文件将过滤后的结果再次导入 server.conf
grep -vE "^;|^#|^$" server.conf > tmp.log
cat tmp.log > server.conf

编辑过滤后的 server.conf 文件
vim server.conf
port 1194 #端口可以更改
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "route 192.168.**.0 255.255.255.0"
push "dhcp-option DNS *.*.*.*"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
client-cert-not-required #不使用客户端证书,使用密码进行验证 
username-as-common-name #使用认证用户名,不使用证书 
script-security 3 system #允许通过环境变量将密码传递给脚本 
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env #指定路径,允许登陆的用户名及密码

打开路由转发功能
vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
sysctl -p

拷贝启动脚本至/etc/init.d目录
cp /home/xianlai/tools/openvpn/openvpn-2.2.2/sample-scripts/openvpn.init /etc/init.d/openvpn
chmod 700 /etc/init.d/openvpn
chkconfig --add openvpn

修改脚本openvpn
切到148行,把ls *.conf 改为ls server.conf保存即可

#启动openvpn
/etc/init.d/openvpn start

切到/etc/openvpn目录下
cd /etc/openvpn
cp /home/xianlai/tools/openvpn/checkpsw.sh .
创建psw-file文件
touch psw-file 
添加一个用户测试,刑如:liuhuiuhang 123456(用户和密码写在一行,需要添加用户的话往下顺延即可)

分别修改一下这两个文件的权限
chmod +x checkpsw.sh 
chmod 400 psw-file

导出 client.conf ca.crt
sz -y client.conf
sz -y keys/ca.crt

创建一个后缀名为 .ovpn 的文件(my.ovpn),内容如下:
client 
dev tun 
proto tcp 
remote 公网IP 1194  
resolv-retry infinite 
nobind 
persist-key 
persist-tun 
ca ca.crt 
comp-lzo 
verb 3 
auth-user-pass

##特别提示:
#配置防火墙,别忘记保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save

##端口映射

本文使用的是端口映射的方式做的,具体命令如下:

nat server protocol tcp global 公网IP 80 inside 内网IP 80

 

#windows客户端配置
安装openvpn-2.2.2-install.exe,默认安装,一直默认,然后新建一个文件夹vpn,把client.conf、ca.crt、my.ovpn放至文件夹vpn中,然后把vpn拷贝至openvpn的安装目录中的config目录中。

#MAC客户端配置
下载tunnelblick,然后安装,把vpn文件夹拷贝至MAC电脑中,把my.ovpn放至tunnelblick中即可。具体操作可参考链接:http://www.xitongzhijia.net/xtjc/20150414/45176.html

转载:http://aby028.blog.51cto.com/5371905/1886851

附件:checkpsw.sh如下所示:

复制代码

#!/bin/sh

###########################################################

# checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se>

#

# 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

 

0

回复列表 (共1个回复)

沙发

在线博彩平台:www.pb258.com
在线博彩平台:www.jjxtech.com 
在线博彩平台:www.lcmty.com 
在线博彩平台:www.7macau.com
在线博彩平台:www.7macau.net
在线博彩平台:www.bp258.com
在线博彩平台:www.258bp.com
博狗:http://679.258bp.com
博狗:http://680.258bp.com
博狗:http://681.258bp.com
博狗:http://682.258bp.com
博狗:http://683.258bp.com
博狗:http://684.258bp.com
博狗:http://685.258bp.com
博狗:http://686.258bp.com
博狗:http://687.258bp.com
博狗:http://688.258bp.com
博狗:http://689.258bp.com
博狗:http://690.258bp.com
博狗:http://691.258bp.com
博狗:http://692.258bp.com
博狗:http://693.258bp.com
博狗合营:http://694.258bp.com
888真人:http://695.258bp.com
888真人:http://696.258bp.com
888真人:http://697.258bp.com
加百利:http://698.258bp.com
加百利:http://699.258bp.com 
必威:http://700.258bp.com
必威:http://701.258bp.com
必威:http://702.258bp.com
必威:http://703.258bp.com
必威:http://704.258bp.com
必威:http://705.258bp.com
必威:http://706.258bp.com
必威合营:http://707.258bp.com
新博:http://708.258bp.com
鸿运国际:http://709.258bp.com
鸿运国际:http://710.258bp.com
鸿运国际:http://711.258bp.com
新橙娱乐:http://712.258bp.com
新橙娱乐:http://713.258bp.com
新橙娱乐:http://714.258bp.com
新橙娱乐:http://715.258bp.com
新橙娱乐合营:http://716.258bp.com
乐虎:http://717.258bp.com
乐虎:http://718.258bp.com
乐虎:http://719.258bp.com
乐虎:http://720.258bp.com
乐虎:http://721.258bp.com
乐虎:http://722.258bp.com
亚虎:http://723.258bp.com
亚虎:http://724.258bp.com
亚虎:http://725.258bp.com
龙8国际娱乐:http://726.258bp.com
龙8国际娱乐:http://727.258bp.com
龙8国际娱乐:http://728.258bp.com
龙8国际娱乐:http://729.258bp.com
龙8国际娱乐:http://730.258bp.com
龙8国际娱乐:http://731.258bp.com
必博:http://2274.bbo233.com
必博:http://2274.bbo998.com

我来回复

您尚未登录,请登录后再回复。点此登录或注册