×××直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,open***无疑是linux开源***的先锋,提供了良好的性能和友好的用户GUI。
Open×××是一个基于OpenSSL库的应用层×××实现。传统***相比,它的优点是简单易用。Open×××允许参与建立×××的单点使用共享金钥,电子证书,或者用户名/密码来进行身份认证。
原理:
Open×××的技术核心是虚拟网卡,其次是SSL协议实现,由于SSL协议在其他的词条中介绍的比较清楚了,这里重点对虚拟网卡及其在Open***中的工作原理进行介绍:
虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接受得到。虚拟网卡在很多操作系统下都有相应的实现,这也是Open×××能够跨平台一个很重要的理由。
在Open×××中,如果访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包TUN模式或数据帧(TAP模式)发送到虚拟网卡上,服务程序接受该数据并进行相应的处理后,通过socket从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡
演示环境:
三台主机:node1: eth0 :172.16.23.2(模拟内网地址,网关指向172.16.23.1)
Node2:eth0:192.168.162.131(模拟外网地址)
eth1:172.16.23.1(模拟内网地址)
node3:eth0:192.168.162.130(模拟外网地址)
本次实验想实现的功能:把node2比作公司的公网地址,node1比作公司的内网。Node3比较家庭的地址。使员工在家能访问公司的内网,使node3能访问node1.
1. 基础环境配置
1) 开启node2核心转发功能;
2) 为了便于测试,清空三个节点的防火墙规则关闭selinux;
3) 配置各个节点ip地址
2. 安装程序包;
1) 配置epel源仓库;
2) 安装open***
#yum install open*** –y
3) 安装easy-rsa,用来制作ca证书,服务端证书,客户端证书;
#wget https://github.com/Open×××/easy-rsa/archive/master.zip
#unzip master.zip
#mv easy-rsa-mater/ easy-rsa/ (将解压后的文件夹重命名)
#cp -R easy-rsa/ /etc/open***/ (将重命名的文件夹复制到/etc/open***目录下)
4) 编辑服务器端vars文件
# cd /etc/open***/easy-rsa/easyrsa3/
# cp vars.example vars
# vim vars
5) 创建根证书
# ./easyrsa init-pki (初始化)
# ./easyrsa build-ca (创建根证书)
Note:这一步会需要输入PEM密码,输入两次,请记住此密码,否则后面不能为证书签名。还需要输入common name通用名,随便起一个便可;
6) 创建服务器端证书
# ./easyrsa gen-req server nopass (创建服务器端证书,note:在此过程中也要输入common name,不跟之前的根证书的common name一样即可)
# ./easyrsa sign server server (签约服务端证书,此过程需要你确认yes,还需要你创建ca时的密码。)
7) 创建Diffie-Hellman
# ./easyrsa gen-dh (创建Diffie-Hellman,确保key穿越不安全网络的命令)
8) 创建ta秘钥文件
# open*** --genkey --secret ta.key (创建ta秘钥文件)
9) 创建客户端证书;
# mkdir /root/client && cd /root/client
# cp –R /root/easy-rsa/ ./
# cd easy-rsa/easyrsa3/
# ./easyrsa init-pki (初始化)
# ./easyrsa gen-req yourname (生成证书,yourname为自定的名字)
# cd /etc/open***/easy-rsa/easyrsa3/
# ./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/yourname.req yourname (导入证书)
# ./easyrsa sign client yourname (签约证书,note:这里生成client所以必须为client,qingliu要与之前导入名字一致)
10) 拷贝文件到相应位置;
拷贝服务器端所需文件;
]# cp pki/ca.crt /etc/open***/
]# cp pki/private/server.key /etc/open***/
]# cp pki/issued/server.crt /etc/open***/
]# cp pki/dh.pem /etc/open***/
]# cp /etc/open***/easy-rsa/ta.key /etc/open***/
拷贝客户端所需文件;
]# cp pki/ca.crt /root/client/
]# cp pki/issued/yourname.crt /root/client/
]# cp /root/client/pki/private/yourname.key /root/client/
]# cp /etc/open***/easy-rsa/ta.key /root/client/
11) 修改open***的配置文件;
# cp /usr/share/doc/open***-2.4.5/sample/sample-config-files/server.conf /etc/open***
启动服务:
而且多了一个虚拟网卡;
3. 安装linux客户端连接;
1) 安装open***,与服务器端一样;
2) 将服务器端的ca.crt,yourname.crt,yourname.key, ta.key文件转到/etc/open***目录下;
3) 创建client.conf;
4) 远程拨入***,测试;
观察客户端也多了张虚拟网卡;
测试ping内网地址;
以上表明,本次实验已经成功,以下我们将配置mysql方式认证登录***连接;
4. 配置mysql认证登录***;
1) 安装mysql;
2) 登录mysql,创建表及字段等;
3) 创建登录表;
4) 插入用户数据
5) 配置pam_mysql模块;
使用testsaslauthd验证登录情况;
6) 安装open***服务器的auth-pam插件;
Node2上安装的open***有自带的模块open***-auth-pam.so,但是好像2.1版本以上的open***自带的open***-auth-pam.so验证会出现验证失败的问题,这里需要重新编译安装;
下载源码包http://pkgs.fedoraproject.org/repo/pkgs/open***/open***-2.0.7.tar.gz,注意不要使用wget,可能解压会出现问题;
# cp ./open***-auth-pam.so /etc/open***/
7) 配置***配置文件server.conf,添加三行配置;
8) 编辑客户端配置文件client.conf;
9) 启动open***服务端服务,并从客户端连接,从客户端连接输入username和password。跟上一样测试;