web管理openvpn
一部署目标
- 客户端使用openvpn客户端使用证书密钥+用户密码验证登录,拨入内网
- 服务器端使用mysql存储用户信息,并加密用户密码
- 开发openvpn管理平台,可以web界面管理openvpn
- 指定人员IP,通过策略限制人员访问资源
二部署openvpn
1安装openvpn服务端
1.1环境
系统 | centos7.3 |
IP地址 | 100.100.100.100 |
Openvpn版本 | 2.4.3 |
安装方式 | YUM |
数据库 | percona-server-5.7.18-15 |
验证工具 | pam_mysql |
openvpn插件版本 | 2.0.9 |
1.2安装依赖
- yum -y install epel-release
- yum install pam-devel pam
- yum install -y easy-rsa
- yum -y install mariadb-server mariadb-devel mariadb-libs
- yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-lib cyrus-sasl-gssapi
1.3安装openvpn
使用yum命令安装openvpn
yum install -y openvpn
1.4配置证书密钥
- 复制证书密钥工具
#cp -R /usr/share/easy-rsa /etc/openvpn/
- 进入工具目录
#cd /etc/openvpn/easy-rsa
- 修改证书生成信息
#vim /etc/openvpn/easy-rsa/2.0/vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="CA"
export KEY_CITY="HangZhou"
export KEY_ORG="xxx"
export KEY_EMAIL="server_monitor@xxx.com"
export KEY_OU="YunWei
- 重新加载
#source ./vars
- 重新产生CA证书
./clean-all
./build-ca
- 创建服务端证书
./build-key-server server
./build-dh
- 创建客户端证书
./build-key client
- 证书放到server目录下
cp /etc/openvpn/easy-rsa/keys/{ca.crt,ca.key,dh2048.pem,server.crt,server.csr,server.key} /etc/openvpn/server/
1.5配置数据库
- 添加数据库oms
CREATE DATABASE IF NOT EXISTS openvpn DEFAULT CHARSET utf8mb4;
- 创建vpn用户,允许操作数据库oms
use mysql;
GRANT ALL ON oms.* TO oms@'localhost' IDENTIFIED BY 'Oms.2017yw' WITH GRANT OPTION;
- 创建vpnusers表
use oms;
CREATE TABLE `vpnusers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`active` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`clientip` varchar(50) NOT NULL,
`serverip` varchar(50) NOT NULL,
`vpngroup` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `vpnusers_username_de99699b_uniq` (`username`),
UNIQUE KEY `vpnusers_clientip_1d6852f5_uniq` (`clientip`),
UNIQUE KEY `vpnusers_serverip_6bd119b1_uniq` (`serverip`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4;
- 创建测试数据
insert into vpnusers(username,password,name)\
values("test",md5("123456"),"测试用户");
1.6安装验证pam_mysql
- 下载pam_mysql
下载:https://github.com/NigelCunningham/pam-MySQL
- 安装:
unzip pam-MySQL-master.zip
cd pam-MySQL-master
./configure --with-mysql=/usr --with-pam=/usr/ --with-pam-mods-dir=/lib64/security/
make
make install
1.7配置pam验证openvpn
- 创建openvpn验证模块文件
vim /etc/pam.d/openvpn
- 配置:
auth required /lib64/security/pam_mysql.so user=oms passwd=Oms.2017yw host=localhost db=oms table=vpnusers usercolumn=username passwdcolumn=password where=active=1 sqllog=0 crypt=md5
account required /lib64/security/pam_mysql.so user=oms passwd=Oms.2017yw host=localhost db=oms table=vpnusers usercolumn=username passwdcolumn=password where=active=1 sqllog=0 crypt=md5
1.8测试验证
- 命令
testsaslauthd -u test -p 123456 -s openvpn
test 测试用户
123456 测试密码
openvpn 配置的pam_mysql验证openvpn模块(创建的文件名称)
返回:0: OK "Success." 成功
- 排错
查看/var/log/secure
2配置openvpn服务端
2.1安装验证模块
- 下载http://swupdate.openvpn.org/community/releases/openvpn-2.0.9.tar.gz
- 安装
tar zxvf openvpn-2.0.9.tar.gz
cd ./openvpn-2.0.9/plugin/auth-pam
make
cp -rf ./openvpn-auth-pam.so /etc/openvpn
2.2配置server文件
vim /etc/openvpn/server.conf
########################## openvpn server config file
local 100.100.100.100
port 13579
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/aliyun_openvpn_server.crt
key /etc/openvpn/server/aliyun_openvpn_server.key
dh /etc/openvpn/server/dh2048.pem
server 172.31.0.0 255.255.0.0
push "route 10.0.0.0 255.0.0.0"
log /var/log/openvpn/openvpn.log
status /var/log/openvpn/openvpn-status.log
client-config-dir /etc/openvpn/clientip
verb 3
username-as-common-name
client-to-client
management localhost 7135
plugin openvpn-auth-pam.so openvpn
max-clients 1000
keepalive 10 120
comp-lzo
persist-key
persist-tun
duplicate-cn
reneg-sec 0
2.3配置firewalld
- 开放端口
firewall-cmd --permanent --add-port=13579/tcp
firewall-cmd --reload
- 配置转发
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
- 限制访问
根据实际情况配置访问控制
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i tun0 -s 172.31.0.0/24 -d 192.168.3.10/32 -j DROP
firewall-cmd --complete-reload
2.4配置系统
开启系统转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
- 重新载入
sysctl -p
2.5启动openvpn
- 添加自启
systemctl enable openvpn@server
- 启动进程
systemctl start openvpn@server
三管理平台
1环境
开发语言 | Python2.7 |
框架 | Django1.11 |
数据库 | Mariadb |
2界面

评论
发表评论