实现以账号密码验证的OpenVPN服务器

环境

服务端:CentOS 6.7 32-bit

客户端:Windows XP

服务端配置

# 关闭SELinux
sed -i ‘/^SELINUX\b/s/=.*/=disabled/‘ /etc/selinux/config
setenforce 0

# 安装mysql-server
yum -y install mysql-server

# 启动mysqld服务
service mysqld start

# 初始化mysql管理员(root)密码
mysqladmin -uroot password redhat

# 创建radius数据库
mysqladmin -uroot -predhat create radius

# 安装radius和相关插件
yum -y install freeradius freeradius-mysql freeradius-utils

# 编辑/etc/raddb/radiusd.conf文件
sed -i ‘700s/#//‘ /etc/raddb/radiusd.conf

# 编辑/etc/raddb/sites-enabled/default文件
sed -i ‘170s/^/#/;177s/#//;406s/#//;454s/#//‘ /etc/raddb/sites-enabled/default

# 将数据结构导入radius数据库
for file in /etc/raddb/sql/mysql/*.sql;do mysql -uroot -predhat radius < $file;done

# 新建一个用户名和密码都是test的用户
mysql -uroot -predhat radius -e "insert into radcheck(username,attribute,value) values(‘test‘,‘Password‘,‘test‘)"

# 启动radiusd服务并将其设置为开机启动
service radiusd start
chkconfig radiusd on

# 测试(如果出现“Access-Accept”字样则表示配置成功)
radtest test test 127.1 0 testing123

# 安装EPEL源(默认yum源没有openvpn和easy-rsa软件包)
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/5/i386/epel-release-5-4.noarch.rpm

# 安装openvpn和easy-rsa软件包
yum -y install openvpn easy-rsa

# 切换到/usr/share/easy-rsa/2.0/目录
cd /usr/share/easy-rsa/2.0/
# 初始化环境变量
source vars
# 清除所有与证书相关的文件
./clean-all
# 生成CA相关文件(一路按回车即可)
./build-ca
# 生成服务端相关文件(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key-server server
# 生成dh2048.pem文件(生成过程时快时慢,在此期间不要去中断它)
./build-dh
# 生成ta.key文件(防DDos攻击)
openvpn --genkey --secret keys/ta.key
# 在openvpn的配置目录下新建一个key目录
mkdir /etc/openvpn/keys
# 将openvpn配置文件需要用到的文件复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/

# 开启路由转发功能
sed -i ‘/net.ipv4.ip_forward/s/0/1/‘ /etc/sysctl.conf
echo 1 > /proc/sys/net/ipv4/ip_forward

# 配置防火墙
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save

# 安装radiusplugin编译所需环境
yum -y install make gcc gcc-c++ libgcrypt libgpg-error libgcrypt-devel wget

# 下载radiusplugin源码包
wget -P /tmp http://www.nongnu.org/radiusplugin/radiusplugin_v2.1.tar.gz

# 解压
tar xzf /tmp/radiusplugin_v2.1.tar.gz -C /usr/src/

# 切换到/usr/src/radiusplugin/目录
cd /usr/src/radiusplugin/

# 编译
make

# 复制radiusplugin.so和radiusplugin.cnf文件到/etc/openvpn/目录
cp radiusplugin.{so,cnf} /etc/openvpn/

# 编辑/etc/openvpn/radiusplugin.cnf文件
sed -i ‘/\bsharedsecret=/s/=.*/=testing123/‘ /etc/openvpn/radiusplugin.cnf

# 创建/etc/openvpn/server.conf文件,内容如下
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key  # This file should be kept secret
dh keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0" # 192.168.1.0/24是我这台VPN服务器所在的内网的网段,读者应该根据自身实际情况进行修改
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf
client-cert-not-required

# 启动openvpn服务并将其设置为开机启动
service openvpn start
chkconfig openvpn on

客户端配置

创建一份客户端文件(命名为client.ovpn),内容如下(读者要注意修改下面的服务端公网IP):

client
dev tun
proto udp
remote 服务端公网IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
auth-user-pass
tls-auth [inline] 1
<ca>
将/usr/share/easy-rsa/2.0/keys/ca.crt的全部内容复制粘贴于此
</ca>
<tls-auth>
将/usr/share/easy-rsa/2.0/keys/ta.key的全部内容复制粘贴于此
</tls-auth>

从服务端下载client.ovpn,并将其复制到openvpn的安装目录的config目录下,最后,启动openvpn程序,连接服务端,账号密码都是test,如果能获取到IP,且能ping内网的其他机器就表示配置成功了。

最后给出我的client.ovpn的范例文本供读者参考。

client
dev tun
proto udp
remote 192.168.1.88 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
auth-user-pass
tls-auth [inline] 1
<ca>
-----BEGIN CERTIFICATE-----
MIIFEjCCA/qgAwIBAgIJAPuPhPG+3TThMA0GCSqGSIb3DQEBCwUAMIG2MQswCQYD
VQQGEwJVUzELMAkGA1UECBMCQ0ExFTATBgNVBAcTDFNhbkZyYW5jaXNjbzEVMBMG
A1UEChMMRm9ydC1GdW5zdG9uMR0wGwYDVQQLExRNeU9yZ2FuaXphdGlvbmFsVW5p
dDEYMBYGA1UEAxMPRm9ydC1GdW5zdG9uIENBMRAwDgYDVQQpEwdFYXN5UlNBMSEw
HwYJKoZIhvcNAQkBFhJtZUBteWhvc3QubXlkb21haW4wHhcNMTQxMTA4MDgxMTE1
WhcNMjQxMTA1MDgxMTE1WjCBtjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRUw
EwYDVQQHEwxTYW5GcmFuY2lzY28xFTATBgNVBAoTDEZvcnQtRnVuc3RvbjEdMBsG
A1UECxMUTXlPcmdhbml6YXRpb25hbFVuaXQxGDAWBgNVBAMTD0ZvcnQtRnVuc3Rv
biBDQTEQMA4GA1UEKRMHRWFzeVJTQTEhMB8GCSqGSIb3DQEJARYSbWVAbXlob3N0
Lm15ZG9tYWluMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxVsiMkd3
n0jAFV9mz7F7HpR8oM15Fr0tjIjRZ6N3zvy8snuPtL6v7won25g8RqvzsYteyNaU
LboeqcpDFgoj3Fg9ltMnDeRp1AG/5eruaw2/q38zkOS2I1qP6HVcwABMr3CBPpqc
Be/rJXBBVqpyJQIa9F8qnXvYFyja0CD/g2xJn1TZ5gXYVsEsD4mTsTesei0mr/SS
jJlqESEEb7mrwpFcjMGTmDAamrdl4PI/IptjOhwrg62YRfpzni3fOrTDycVhaHQR
9Qbjvq+hfyzZJxPRaesCPoAR4aWhvGOMddhg7uZ7r21ZNb54QAkAudPQTVWle3it
QvQ+8ylOkoV66QIDAQABo4IBHzCCARswHQYDVR0OBBYEFHlXeNlCNmvR+Dm8tnnJ
CfpVSmwyMIHrBgNVHSMEgeMwgeCAFHlXeNlCNmvR+Dm8tnnJCfpVSmwyoYG8pIG5
MIG2MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFTATBgNVBAcTDFNhbkZyYW5j
aXNjbzEVMBMGA1UEChMMRm9ydC1GdW5zdG9uMR0wGwYDVQQLExRNeU9yZ2FuaXph
dGlvbmFsVW5pdDEYMBYGA1UEAxMPRm9ydC1GdW5zdG9uIENBMRAwDgYDVQQpEwdF
YXN5UlNBMSEwHwYJKoZIhvcNAQkBFhJtZUBteWhvc3QubXlkb21haW6CCQD7j4Tx
vt004TAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCFbyQbck5rI6fw
66bpoFTxKq7+8b738R0lbKggxzVzSh2KReemmuu93zyRQ4Iv3MDwAa2ffJGYFiQz
jXzun4Q0SPNocBAgV0pTPyrGH/zSOqi4CXsN02AOKGkTAVJaPLavAGlRSjGVh62g
8nAGzBDagD+FRlYzKZ3cupKGcmoXmWwrnS4YWoSf4+Dei52Fsqe43JEnY0wmXGvu
LkukweyWJIqy3iuvPaYzUWWZSe9c6Ytx5Et2y+rYbpxyLvJiX3le8Whf3u2HLuPV
cwOPvG71kHpOOVPpks2RHwQn3TwWgBWpqIN37Eaow4TuTHTgRjuATttUeAZoSLFV
9iLvv+FV
-----END CERTIFICATE-----
</ca>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
9f8d9e7776a5fc310ee39676c0fd4b2b
1b5d6525e26bc33fb23a64ded18f68ee
744cd707ee27c099caa9bf6622cfa1e5
73ff1026e59503760a1bac6102543e30
0946bb831cba42eb457b88eff73599b1
d26c39e6e0af27a55a83e4ed2d70a665
dcb83715e74ca0ce90ebd76344b14c23
b70cf9428b11b771dc6c5bcf0c638522
43ff98f637e3e637686ab23d01967a96
6a9d94f63dea50db264e246646f2dc27
3c2c957360108a993ea49481aadf7046
f38145175dbee319d69fc6202ed4934c
65ff2657e46c37f0f530acea93ee99e7
c7109996cdf13b0ae5f4b3506937cadb
793c9cc063b580aa70873499e5f02252
200f29305bfb0d934b1307fd9af3c7a9
-----END OpenVPN Static key V1-----
</tls-auth>
时间: 2024-10-13 07:34:02

实现以账号密码验证的OpenVPN服务器的相关文章

&#8203;实现以账号密码验证的VPN服务器

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 实现以账号密码验证的VPN服务器. 环境 服务端:CentOS 6.2 32 客户端:Windows XP 服务端配置 # 关闭SELinux sed -i '/^SELINUX\b/s/=.*/=disabled/' /etc/selinux/config setenforce 0 # 安装mysql-server yum -y inst

Centos6.4下快速构建基于用户名密码验证的openvpn服务器

如今VPN应用已经非常广泛了,之前就写过一篇关于PPTPD的博文.链接是http://cyr520.blog.51cto.com/714067/1161788. 家里最近新换了一个宽带.居然没办法用拨上公司的PptpdVPN,一直拨号状态一直停留在正在验证用户名和密码这一步.百度谷歌了一大圈,也没解决这个问题.貌似是因为宽带运营商屏蔽GRE协议的原因.作为运维人员,不能及时的连上公司的内部网络是一件很让人不爽的事情. 干脆再搞一套OpenVPN吧,据说OpenVPN非常强大,可以适应很复杂的网络

centos6.5中部署Zeppelin并配置账号密码验证

centos6.5中部署Zeppelin并配置账号密码验证1.安装JavaZeppelin支持的操作系统如下图所示.在安装Zeppelin之前,你需要在部署的服务器上安装Oracle JDK 1.7或以上版本, 并配置好相应的JAVA_HOME环境变量.以CentOS为例,具体操作过程如下: a)下载并安装jdk-8u111-linux-x64.rpm # rpm -ivh jdk-8u111-linux-x64.rpm b)配置环境变量.在/etc/profile文件结尾添加: export

随机验证码-账号密码验证

一.默认账号密码为admin 验证正确 然后继续验证验证码==随机验证码 全部正确跳转login.html 重点:Math.random(0-1)随机获取0-1的随机数 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> input{margin-bot

django之账号密码验证登陆

今天分享一下django的账号密码登陆,前端发送ajax请求,将用户名和密码信息发送到后端处理,后端将前端发送过来的数据跟数据库进行过滤匹配,成功就跳转指定页面,否则就把相对应的错误信息返回,同时增加一个小功能,在规定时间内超过规定的登录次数,就锁住无法登陆,等下一个时间段再允许登陆. 一.通过ORM创建一张历史登陆表 class login_history(models.Model): user = models.CharField(max_length=32, verbose_name='登

【WCF】使用“用户名/密码”验证的合理方法

我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然后在服务器端自定义一个消息拦截器来验证用户名和密码. 以老周不靠谱的学识水平认为,这样做不好,直接把明文而且敏感信息放在SOAP头中传输,这尺度实在太大了,太暴露了,广电局是不会允许的,虽然现在流行穿得越少越好,但那些是婊子的境界.像用户名密码这些重要信息,怎么能直接传输呢,这很容易被偷窥的. 其实

对登录中账号密码进行加密之后再传输的爆破的思路和方式

一. 概述 渗透测试过程中遇到web登录的时候,现在很多场景账号密码都是经过js加密之后再请求发送(通过抓包可以看到加密信息)如图一burp抓到的包,request的post的登录包,很明显可以看到password参数的值是经过前端加密之后再进行传输的,遇到这种情况,普通发包的爆破脚本就很难爆破成功.鉴于这种情况,这边分析四种方式进行绕过加密爆破. 二. 方法和思路 1. 分析找出是哪个js文件进行了password参数值的加密,将该js导入本地动态执行,建一个小型的web服务器,利用浏览器页面

cas-简单的验证cas服务器登录和读取数据库账号密码登录

环境win8+tomcat7+jdk7+cas-server-4.0.0-release 1. 首先到 http://downloads.jasig.org/ 地址下载 cas-server-4.0.0-release.zip,解压后到modules目录中找到cas-server-webapp-4.0.0.war,复制到tomcat的webapp目录下,修改名称为cas.war 2. (1)创建证书 keytool -genkey -alias mycas -keyalg RSA -keysiz

接上篇 OPENVPN 证书+简单密码验证+防火墙策略

还是先介绍下环境 外网pc客户端  119.119.119.119 内网出口IP    112.112.112.112 openvpn服务器 192.168.0.250 openVPN ip池  172.18.1.0/24 内网服务器    192.168.0.1 安装步骤请参考之前文章,或者tar包下载源码安装即可. 配置支持用户名密码验证 服务器端配置文件: ###cat server.conf local 192.168.0.250  监听本地IP port 11940