『壹』 如何使用OpenVPN和PrivacyIDEA搭建双因素认证的远程接入
第一种,使用PAM的privacyidea_pam.py模块。OpneVPN使用PAM认证,PAM调用privacyidea_pam.py模块和PrivacyIDEA做验证。
第二种,直接集成OpenVPN和FreeRADIUS。OpenVPN使用radius认证,FreeRADIUS向PrivacyIDEA验证。
第三种,在OpenVPN中使用RADIUS的PAM模块。
『贰』 CentOS7上搭建openvpn
直接安装证书即可
需要注意的是 安装好软件 能正常启动服务后
需要在安全组规则中放通服务端口
系统中的防火墙也需要放通端口
『叁』 如何在Ubuntu上安装OpenVPN
我理解,OpenVPN的配置根据实现分三种方式:
单机 - - 站点
站点 - - 站点
单机 - - 单机
本文的描述适合单机 - - 站点实现方式,也可以理解为移动用户连回公司网络。
目录
1. 安装
2. 设置认真机构,产生证书
3. 配置Server端
4. 配置Client端
1. 安装
Ubuntu中安装OpenVPN极其简单:
代码: sudo apt-get install openvpn
在Windows中安装则建议使用 OpenVPN GUI for Windows的Installation Package,其中包括了OpenVPN本身以及在Windows中使用方便的图形界面。
2. 设置认真机构,产生证书
参考OpenVPN的Howto进行操作,一般不会有什么问题。
在Ubuntu中大致这样操作,将目录 /usr/share/doc/openvpn/examples/easy-rsa/2.0 复制的你的家目录,修改vars使其符合你的实际情况(国家、省份、城市、公司、机构、邮件地址),然后运行 代码: ./vars
./clean-all
./build-ca
./build-key-server <servername>
./build-key <clientname>
./build-dh
注
意:这只是第一次产生证书的正确操作,其中 build-ca 创建根证书,若你没有清除全部VPN
Server/Client的打算,你不应该再次运行此命令;创建的全部证书及私钥都在当前目录的 keys 下面,而命令 clean-all 将清除
keys 下面全部内容,因此 cliean-all 只在 build-ca 前运行一次。
随后添加 Server 证书或 Client 证书只需运行 代码: ./vars
./build-key-server <servername>
or
./build-key <clientname>
3. 配置Server端
从示例中解压 server.conf 代码: sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
将相关证书、私匙拷贝的 /etc/openvpn
ca.crt
server.crt
server.key
dh1024.pem
修改 server.conf
关键一:取消注释 push "route a.b.c.d 255.255.255.0",并将地址和掩码替换为办公网络的地址和掩码
目
的是为客户端加一条路由,这样客户端才有可能访问到办公网络中出VPN
Server之外的其它主机(有很多VPN客户端直接添加默认路由,这样客户端的所有连接请求都被路由到 VPN
通道内,结果是客户端此时不能访问VPN,而此项添加指定地址的路由不会导致这一问题)
关键二:取消注释 push "dhcp-option
DNS a.b.c.d" 和 push "dhcp-option WINS a.b.c.d", 并将地址替换为实际的 DNS 和 WINS
服务器的地址,最好 DNS 服务器能将外部域名的解析要求转发的外部 DNS 服务器
目的是客户端连接VPN后仍能访问Internet,(若推过来的DNS不能解析外部域名,则即使客户端的路由配置正确,想通过域名访问Internet也不可能)
Server端其它设置
配置服务器,运行包转发: 代码: echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
关键三:若VPN Server不是办公网络的默认网关,则想办法在默认网关上添加到 10.8.0.0/24 的路由项目,网关为服务器的内部 IP 地址。
关键一中的操作只是能够让客户端知道去往公司网络的包如何路由,而关键三的操作是为了让公司网络里的主机知道去往VPN Client的包如何路由。
对
于Netscreen 25(screenos 5.3.0r3.0),Network - Routing - Destination -
[trust-vr]New - IP/mask [10.8.0.0]/[24] - 选 [Gateway], Interface
[ethernet1], Gateway IP Address [Internal IP of VPN Server]
4. 配置Client端
在Ubuntu中,
4.1.1 从示例中拷贝client.conf 代码: sudo cp //usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
4.1.2 将相关证书、私钥拷贝到/etc/openvpn:
ca.crt
client.crt
client.key
4.1.3 修改/etc/openvpn/client.conf:
在 remote my-server-1 1194 这一行,将 my-server-1 换成 VPN Server 的外部IP
关键四:在结尾添加两行 代码: up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
目的是根据Server推过来的 dhcp-option 更新域名解析设置
4.1.4 其它设置:
关键五:安装resolvconf软件包 代码: sudo apt-get install resolvconf 关键四中设置的脚本需要使用此软件。
在Windows中,
4.2.1 将client.ovpn拷贝的config目录
4.2.2 将证书和相关私匙拷贝到config目录
ca.crt
client.crt
client.key
4.2.3 将client.ovpn中的my-server-1改为VPN Server的外部IP
『肆』 如何正确搭建OpenVPN云免服务器
Openvpn在各操作系统中的搭建大同小异,其实都是安装软件、制作证书、修改配置文件、启动连接的过程,本文对具体的安装步骤不再赘述,在网上都能找到详细的安装步骤,只对安装过程中几个重要的点进行说明
Ø 如果yum安装的openvpn软件不带easy-rsa目录,将不能进行证书制作及发放,需要再次手动安装easy-rsa包,然后进行证书制作及发放
Ø 制作证书的过程中输入的证书密码一定要牢记,将来在客户端连接的时候会用到
Ø 制作证书的过程一共需要以下证书
ca.crt 根证书
server.crt 服务器证书
server.key 服务器key文件
dh.pem 验证文件(不同版本文件名可能不同如dh1024.pem)
client.crt 客户端证书(名字可自定义)
client.key 客户端key文件(名字可自定义)
Ø 每
一个版本的openvpn都提供了示例配置文件,在openvpn安装目录的/sample/sample-config-files下,服务器端的示例
配置文件是server.conf,客户端在windows下的示例配置文件是client.ovpn,需要将它们拷贝到对应的config目录进行配
置,一定要注意server端和client端的配置文件一定要一致,如都配置tcp模式,网卡都配置tun模式等,如果不一致会出现连接不上的情况
Ø 服务器端还要注意防火墙的控制,要放通对应的端口,一般默认的端口是1194
Ø Windows下安装完后既可以作为server端也可以作为客户端,一般都是windows作为客户端。Windows客户端需要根据操作系统版本进行选择,32位和64位一定要选择不同的客户端,否则将会出现虚拟网卡驱动不能安装创建不了虚拟网卡的情况
『伍』 如何禁止OpenVPN
这只是OpenVPN的客户端,需要搭建服务器端,然后把服务器端里分配的证书,密钥,放进客户端里的config中,修改客户端配置文件,才能有用。。
『陆』 Openvpn尚未启用服务器证书验证
要是使用证书,就要开启相应的服务的。
『柒』 如何在Windows环境下安装并配置OpenVPN
Step 1 OpenVPN安装配置
1.1 下载openvpn 并安装
· 下载openvpn-2.0.5-gui-1.0.3版,地址 http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exe,安装。(例如:安装到F:\OPENVPN目录下,下文举例都用此目录)
· 安装完成后生成一个新网卡,并在网络连接里出现本地连接[X],把tcp/ip属性改成手动配置,192.168.10.1(根据实际情况更改) ,255.255.255.0,其余不填。
1.2 生成证书
· 修改F:\OpenVPN\easy-rsa\vars.bat.sample的以下部分
CODE:
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=SanFrancisco
set KEY_ORG=FortFunston
set [email protected]
(请根据自身情况修改)改为
CODE:
set HOME=F:\OpenVPN\easy-rsa
set KEY_COUNTRY=CN
set KEY_PROVINCE=Hubei
set KEY_CITY=Wuhan
set KEY_ORG=51NB
set [email protected]
· 生成证书
o OpenVPN 有两种安全模式,一种基于使用 RSA 证书和密钥的 SSL/TLS,一种使用预先分享的静态密钥。本文采用SSL/TLS 模式。TLS模式的优点是安全,而且便于管理用户。默认情况下证书和用户是一对一的,多个用户使用同一证书会被踢出。
o 开始-->运行-->键入cmd,回车,进入命令提示符-->进入F:\OpenVPN\easy-rsa目录
QUOTE:
F:\OpenVPN\easy-rsa>
o 执行如下命令
CODE:
init-config
QUOTE:
F:\OpenVPN\easy-rsa>init-config
F:\OpenVPN\easy-rsa> vars.bat.sample vars.bat
已复制 1 个文件。
F:\OpenVPN\easy-rsa> openssl.cnf.sample openssl.cnf
已复制 1 个文件。
CODE:
vars
CODE:
clean-all
QUOTE:
F:\OpenVPN\easy-rsa>vars
F:\OpenVPN\easy-rsa>clean-all
系统找不到指定的文件。
已复制 1 个文件。
已复制 1 个文件。
CODE:
vars
build-ca
build-dh
QUOTE:
F:\OpenVPN\easy-rsa>vars
F:\OpenVPN\easy-rsa>build-ca #生成根证书
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
writing new private key to 'keys\ca.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Hubei]:
Locality Name (eg, city) [Wuhan]:
Organization Name (eg, company) [51NB]:
Organizational Unit Name (eg, section) []:CMWAP
Common Name (eg, your name or your server's hostname) []:fangzy #填自己的名字
Email Address [[email protected]]:
F:\OpenVPN\easy-rsa>build-dh #这个有点慢,估计要半分钟
Loading 'screen' into random state - done
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
CODE:
build-key-server server
QUOTE:
F:\OpenVPN\easy-rsa>build-key-server server #生成服务器端的密钥,server为服务器名
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
writing new private key to 'keys\server.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Hubei]:
Locality Name (eg, city) [Wuhan]:
Organization Name (eg, company) [51NB]:
Organizational Unit Name (eg, section) []:CMWAP
Common Name (eg, your name or your server's hostname) []:server #填自己的名字
Email Address [[email protected]]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxxx #输入4位以上的密码
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'Hubei'
localityName :PRINTABLE:'Wuhan'
organizationName :PRINTABLE:'51NB'
organizationalUnitName:PRINTABLE:'CMWAP'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Feb 1 05:30:29 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
CODE:
build-key client
QUOTE:
F:\OpenVPN\easy-rsa>build-key client #生成客户端的密钥,client为用户名
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
writing new private key to 'keys\client.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Hubei]:
Locality Name (eg, city) [Wuhan]:
Organization Name (eg, company) [51NB]:
Organizational Unit Name (eg, section) []:CMWAP
Common Name (eg, your name or your server's hostname) []:client
Email Address [[email protected]]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxxx
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'Hubei'
localityName :PRINTABLE:'Wuhan'
organizationName :PRINTABLE:'51NB'
organizationalUnitName:PRINTABLE:'CMWAP'
commonName :PRINTABLE:'client'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Feb 1 05:31:40 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
生成多个客户端密钥,执行build-key client1 …… build-key xyz。
复制证书文件
刚才生成的证书文件在F:\OpenVPN\easy-rsa\keys下,服务器端需要的文件为ca.crt,dh1024.pem,server.crt,server.key ,客户端需要的文件为:ca.crt client.crt client.key(xxx.crt xxx.key),配置.ovpn文件时需要用到。
1.3 配置server.ovpn文件
· 在\OpenVPN\config目录下创建server.ovpn文件将ca.crt,dh1024.pem,server.crt,server.key复制到F:\OpenVPN\config目录下
· 服务器端文件示例:
server.ovpn
CODE:
port 1198
proto tcp-server
dev tun
server 192.168.10.0 255.255.255.0
keepalive 20 180
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.10.1"
mode server
tls-server
status openvpn-status.log
comp-lzo
verb 4
1.4 客户端安装与配置
o 安装OpenVPN,同1.1,但是不用更改本地连接设置。
o 配置OpenVPN
§ 在\OpenVPN\config目录下创建client.ovpn文件,将ca.crt client.crt client.key 复制到 \OpenVPN\config
目录下,这3个文件由服务器端生成并发放。
§ 客户端文件示例:
client.ovpn
CODE:
client
dev tun
proto tcp-client
remote jacky.10dig.com 1198 #这里填入remote server add,可用IP或者域名,
#若Server是动态IP,可到http://www.wingdns.com/注册动态域名绑定动态IP。
#如Client所连接Server使用路由上网,则需要使用NAT将地址映射到Server端。
resolv-retry infinite
nobind
http-proxy 10.0.0.172 80 #这里填入你的代理服务器地址和端口,没有代理则不用这行
mute-replay-warnings
ca ca.crt
cert client.crt #这里改成每个客户端相应的证书
key client.key #这里改成每个客户端相应的证书
comp-lzo
verb 4
status openvpn-status.log
右击openvpn-gui图标,点connect,即可连接。
The End
Thank you for your reading...
『捌』 用openssl配置CA证书时报错ca\ca-key.pem: No such file or directory,不知道在哪里找CA文件
是ca的路径不对
首先需要在整个openssl的文件夹下建立一个ca文件夹,就是可以看见bin文件夹的目录下
或者是编译好的,就是与out32dll同级的目录下建立ca
输入的时候把路径改为../ca/ca-key.pem
『玖』 如何在 Linux OpenVPN 服务端吊销客户端证书
进入 OpenVPN 安装目录的 easy-rsa 子目录。例如我的为 /openvpn-2.0.5/easy-rsa/:
cd /openvpn-2.0.5/easy-rsa
执行 vars 命令
. vars
使用 revoke-full 命令,吊销客户端证书。命令格式为:
revoke-full
是VPN 客户端证书的用户名称。例如:
./revoke-full client1
这条命令执行完成之后, 会在 keys 目录下面, 生成一个 crl.pem 文件,这个文件中包含了吊销证书的名单。
成功注销某个证书之后,可以打开keys/index.txt 文件,可以看到被注销的证书前面,已标记为R.
确保服务端配置文件打开了 crl-verify 选项
在服务端的配置文件 server.conf 中,加入这样一行:
crl-verify crl.pem
如果 server.conf 文件和 crl.pem 没有在同一目录下面,则 crl.pem 应该写绝对路径,例如:
crl-verify /openvpn-2.0.5/easy-rsa/keys/crl.pem
重启 OpenVPN 服务。