文档章节

Centos搭建openvpn+mysql数据库认证

linuxprobe16
 linuxprobe16
发布于 2016/11/11 09:48
字数 883
阅读 10
收藏 0
点赞 0
评论 0

服务器环境说明

1、系统版本

CentOS release 5.10 (Final) 64bits

2、软件版本

openvpn-2.3.6-1.el5
lzo-2.02-2.el5.1
lzo-devel-2.02-2.el5.1
easy-rsa-2.2.2-1.el5
pam-0.99.6.2-12.el5
pam-devel-0.99.6.2-12.el5

配置服务器安装前环境

1、打开ip转发功能

echo "net.ipv4.ip_forward = 1">> /etc/sysctl.conf
sysctl -p

2、安装依赖及所需软件包

yum install -y openvpn easy-rsa cyrus-saslcyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-lib cyrus-sasl-gssapi pampam-devel
/etc/init.d/saslauthd restart

3、修改变量及生成证书

cd /usr/share/easy-rsa/2.0
vi vars                           #编辑vars文件,生成环境变量, vars里的参数根据自己需要改变
export KEY_COUNTRY="CN"           #定义你所在的国家,2个字符
export KEY_PROVINCE="ShangHai"    #你所在的省份
export KEY_CITY="ShangHai"        #你所在的城市
export KEY_ORG="xxx"              #你所在的组织
export KEY_EMAIL="xxx@qq.com"     #你的邮件地址,可以修改
source ./vars
 ./clean-all
 ./build-ca
 ./build-dh
 ./build-key-server server
 ./build-key client
 #tar -zcvf client.tar.gz keys/{ca.crt,client.crt,client.key} #windows客户端使用需下载到本地
mkdir /etc/openvpn/{keys,logs,plugin/auth-pam} -p
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.crt,server.key,dh2048.pem} /etc/openvpn/keys/
cat > /etc/openvpn/server.conf << EOF
 port 443
 proto tcp
 dev tun
 ca keys/ca.crt
 cert keys/server.crt
 key keys/server.key
 dh keys/dh2048.pem
 server 10.100.0.0 255.255.255.0
 ifconfig-pool-persist ipp.txt
 #添加主机路由
 push "route 10.200.0.0 255.255.0.0"
 push "route 10.220.0.0 255.255.0.0"
 keepalive 10 120
 comp-lzo
 user nobody
 group nobody
 persist-key
 persist-tun
 status logs/openvpn-status.log
 log logs/openvpn.log
 log-append logs/openvpn.log
 verb 3
 plugin /etc/openvpn/plugin/openvpn-auth-pam.so openvpn
 client-cert-not-required
 username-as-common-name
 EOF

4、使用低版本的认证插件

wget http://pkgs.fedoraproject.org/repo/pkgs/openvpn/openvpn-2.0.7.tar.gz/93528233f1f6d02fc18e2c00f82e0aca/openvpn-2.0.7.tar.gz
 tar xf openvpn-2.0.7.tar.gz
 cd openvpn-2.0.7/plugin/auth-pam
 make
 cp openvpn-auth-pam.so /etc/openvpn/plugin/
 #(这一步可能无法成功,假如无法成功可从其他机器拷贝一份过去,我在附件中放了该文件)
 wget http://nchc.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz
 tar xf pam_mysql-0.7RC1.tar.gz && cd pam_mysql-0.7RC1
 ./configure
 make
 makeinstall
 ln -s /lib/security/pam_mysql.so /lib64/security/
#如果编译中报错需要MySQL的库文件:
yum install -y pam-devel mysql mysql-devel
 cat > /etc/pam.d/openvpn << EOF
 auth sufficient /lib/security/pam_mysql.so user=xxx passwd=xxxxx host=xxxxxx db=vpn table=openvpnuser usercolumn=name passwdcolumn=password crypt=2
 account required /lib/security/pam_mysql.so user=xxx passwd=xxxxx host=xxxxxx db=vpn table=openvpnuser usercolumn=name passwdcolumn=password crypt=2
 EOF

5、MySQL配置

mysql -hjconnhrdmgt82.mysql.rds.aliyuncs.com -uzabbix_1 -p -D operations
 create database vpn;
 #grant all on vpn.* to xxx@'%' identified by 'xxxxxx';
 create table openvpnuser ( name char(20) NOT NULL, password char(128)default NULL, active int(10) NOT NULL DEFAULT 1, primary key (name) );
 insert into openvpnuser (name,password)values('vpnuser',password('vpnpassword'));
 #flush privileges;

6、启动openvpn

/etc/init.d/openvpn restart

服务端测试

testsaslauthd -u vpnuser -p vpnpassword -s openvpn
0:OK "Success."

windows客户端配置

1、客户端配置文件

cat > someone.ovpn << EOF
 client
 dev tun
 proto tcp
 remote 公网IP 443
 resolv-retry infinite
 nobind
 persist-key
 persist-tun
 ca ca.crt
 #cert client.crt
 #key client.key
 #上面两个是配置客户端使用秘钥登录的证书
 remote-cert-tls server
 comp-lzo
 verb 3
 auth-user-pass #此参数后可接文件名,例如:auth.txt,文件中记录账号和密码需换行
 EOF

2、下载服务端证书
下载ca.crt和someone.ovpn文件到本地

Iptables配置

*nat
:PREROUTING ACCEPT [222:10664]
:POSTROUTING ACCEPT [37944:2486906]
:OUTPUT ACCEPT [37944:2486906]
-A POSTROUTING -s 10.100.0.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT
 #以上是iptables的配置文件中需要加入的一条配置,可以配置下面的命令然后保存iptables信息到配置文件中
 #iptables -t nat -A POSTROUTING -s10.100.0.0/255.255.255.0 -o eth0 -j MASQUERADE
 #iptables-save >/etc/sysconfig/iptables
 将openvpn添加到开机启动项中
 chkconfig --add openvpn
 chkconfig openvpn on

TIPS

Mar 10 17:05:15 jstwpz76bqary8 openvpn[27972]: PAM unableto dlopen(/lib/security/pam_mysql.so)
Mar 10 17:05:15 jstwpz76bqary8 openvpn[27972]: PAM [error:/lib/security/pam_mysql.so: undefined symbol: pam_set_data]

/var/log/secure中若出现如上错误,请尝试使用低版本的openvpn编译出来的openvpn-auth-pam.so动态链接库文件

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

© 著作权归作者所有

共有 人打赏支持
linuxprobe16
粉丝 8
博文 696
码字总数 133617
作品 0
河东
OpenVPN 实战3:OpenVPN+MySQL 实现用户登录认证

大纲 一、前言 二、概述 三、具体配置过程 四、总结 注,实战环境 CentOS 5.5 x8664,软件版本 OpenVPN 2.1,软件下载:http://yunpan.cn/QzT8fGsX8S75a 访问密码 e8e4。 一、前言 在上一篇博...

陈明乾 ⋅ 2014/05/06 ⋅ 0

CentOS 6.x上搭建vSFTPD服务器搭建与配置详解

摘要: 手把手教你搭建vsftpd服务器,实现了基于db文件和MySQL数据库文件进行虚拟用户认证,当然了也本文章也包含搭建过程中问题的排查啦,哈哈哈。 另外,我在CentOS 7.x上也进行了搭建测试...

哎呀_毅然 ⋅ 2017/08/19 ⋅ 0

阿里云服务提供商服务有哪些呢?

云服务提供商提供的云服务有以下一些: 1、云应用专家保障   本服务将由阿里云认证区域服务提供商,通过远程+现场的方式,在用户业务高峰期就系统性能评估、压测,结构部署等,并提供724...

捷讯技术17 ⋅ 06/05 ⋅ 0

CentOS 6.4(32位) + PPTP + RADIUS + MySQL

大家好,非常感谢大家百忙中查看我的帖子! 环境: CentOS 6.4(32位) + PPTP + RADIUS + MySQL 实现的功能: 在CentOS系统上使用PPTP协议搭建VPN服务,VPN账户认证使用RADIUS读取MySQL账户密...

奔跑吧甘兄 ⋅ 2015/06/19 ⋅ 0

从0搭建小程序Node.js后台服务

准备条件 一台服务器 SSL证书,小程序规定必须要https协议 服务器后台 Node.js express mongodb pm2 下面以腾讯云主机(centos)为例 安装Node.js 也可以安装nvm,用nvm管理nodejs版本 安装git...

softbone ⋅ 01/02 ⋅ 0

openstack-o版安装keystone

Keustone身份认证组件是openstack项目中默认的身份认证管理系统,所有的服务都需要keystone认证、根据用户的等级分配相应的权限。 那么我们现在配置最新版本openstack的认证服务keystone 前提...

Zai坚强一点 ⋅ 2017/07/04 ⋅ 0

vsftpd基于pam_mysql的认证和hash编码的方式配置虚拟用户

基础介绍什么的就自行搜索了。下面直接从安装配置开始。 环境:centos6 一、安装 yum -y install vsftpd 安装完成后可以直接启动。service vsftpd start 新建一个用户作为虚拟用户的宿主账户...

Mr_陈 ⋅ 2014/10/22 ⋅ 0

基于CentOS 7.x搭建OpenVPN服务器与配置详解

一、服务器程序安装: 1、安装依赖程序: [root@dba~]# yum install epel-release #OpenVPN软件包不在CentOS标准Yum源里,所以需要安装先通过yum安装epel源才能正常安装相关软件包! [root@...

哎呀_毅然 ⋅ 2017/08/22 ⋅ 0

创建基于mysql的ftp虚拟用户

实验环境:需要两台主机 1、一台mariadb server 2、一台ftp server 一、mariadb服务器 1、安装mariadb包 yum install mariadb-devel 2、跑下安全脚本 mysqlsecureinstallation 3、创建数据库...

止于盛夏 ⋅ 2017/10/28 ⋅ 0

生产环境搭建ftp并配置虚拟用户

生产环境搭建ftp并配置虚拟用户 虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,...

zhuhc1988 ⋅ 2017/04/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 2分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 9分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 15分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 29分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 32分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 40分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 58分钟前 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部