文档章节

Centos搭建openvpn+mysql数据库认证

linuxprobe16
 linuxprobe16
发布于 2016/11/11 09:48
字数 883
阅读 12
收藏 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/

本文转载自:http://www.linuxprobe.com/centos-openvpn-mysql-auth.html

共有 人打赏支持
linuxprobe16
粉丝 11
博文 786
码字总数 174120
作品 0
河东
CentOS 6.x上搭建vSFTPD服务器搭建与配置详解

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

哎呀_毅然
2017/08/19
0
0
阿里云服务提供商服务有哪些呢?

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

捷讯技术17
06/05
0
0
CentOS 6.4(32位) + PPTP + RADIUS + MySQL

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

奔跑吧甘兄
2015/06/19
190
0
从0搭建小程序Node.js后台服务

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

softbone
01/02
0
0
openstack-o版安装keystone

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

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

没有更多内容

加载失败,请刷新页面

加载更多

如何在Java中生成比特币钱包地址

让我们通过学习比特币(Bitcoin)如何实施该技术的各个方面来工作,好吗?该技术包括以下几个方面: 比特币地址bitcoin address是用来发送和接收比特币的。 交易transaction是比特币从一个地...

geek12345
21分钟前
3
0
面试必备Linux基础知识

学习Linux之前,我们先来简单的认识一下操作系统。 一 从认识操作系统开始 1.1 操作系统简介 我通过以下四点介绍什么操作系统: 操作系统(Operation System,简称OS)是管理计算机硬件与软件...

小小明童鞋
21分钟前
6
0
SpringBoot基础教程3-1-3 Quartz定时任务单点持久化

1 概述 实际项目中,复杂的定时任务都会结合持久化,动态改变定时任务状态,本文将介绍基于Quartz的定时任务单点持久化方式,通过RESTful风格,演示定时任务的CRUD,最后使用Swagger测试。 ...

Mkeeper
38分钟前
11
0
Android入门—文件目录解析

AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。但是对于这个文件,我...

haoyuehong
41分钟前
8
0
IDEA中Maven打包时如何跳过测试

方法1:直接使用IDEA提供的方式 Maven命令栏的工具栏有下图中的图标,上面就写着 Skip Tests 按下图标后,如下图,test就不可用了 直接使用package命令即可。 方法2:自己编辑maven命令 进入...

karma123
54分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部