Ex4

实验过程

任务一

双击桌面Xshell5图标,在弹出的界面登陆主机192.168.1.11和192.168.2.11这两台主机.

分别修改主机名:

1
2
hostnamectl set-hostname vpn1
hostnamectl set-hostname vpn2

重新登陆两台主机后如下图

vpn1和vpn2主机分别加载gre内核模块并检查

通用路由封装或gre是一种协议,用于将使用一个路由协议的数据包封装在另一协议的数据包中。gre是在网络上建立直接点对点连接的一种方法,目的是简化单独网络之间的连接。它适用于各种网络层协议。将数据包封装在其他数据包中称为“隧道”。gre隧道通常配置在两个路由器之间,每个路由器的作用好比隧道的一端。路由器设置为彼此直接发送和接收 gre数据包。两个路由器之间的任何路由器都不会打开封装的数据包;它们仅引用封装数据包外层的标头进行转发。 ip_gre内核模块是gre通过IPv4隧道的驱动程序

vpn1创建一个GRE类型隧道设备gre1, 并设置对端IP为192.168.2.11。 ip指令用于设置网络设备,用于替代ifconfig命令,ip tunnel用于建立隧道。mode表示模式为gre,设置远端和本地端。ip a用于显示ip地址。

启动gre1并分配ip地址10.10.10.1,检测是否添加并启动

类似的,对vpn2主机进行相应的配置

测试是否连通

卸载gre模块

任务二

查看openssl命令基本帮助

openssl是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 openssl整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。openssl的目录结构自然也是围绕这三个功能部分进行规划的。基本功能有:主要的密码算法(MD5、SHA、DH、BASE64等等)、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

产生RSA私钥

这样就生成了2048位的RSA私钥接下来利用生成的私钥生成对应的公钥,查看openssl rsa对应的用法

则可见应将私钥文件作为输入文件,选择输出公钥并指定公钥文件。

接下来生成RSA含密码(使用AES-256加密)的公私钥文件生成私钥时只需要指定使用AES-256进行加密并输入相应的密码即可,这里把密码设定为simple。

同样生成对应的公钥文件,并查看生成的全部秘钥文件

接下来尝试将使用AES-256加密的文件和未使用其加密的文件进行转换

生成自签名证书

也可使用已有的私钥生成自签名证书,如下

生成私钥及csr签名请求文件(生成过程中输错了一次密码故产生了错误)

实验三

在vpn1机器安装openvpn并验证

拷贝模版配置文件到openvpn的配置文件目录下

修改openvpn服务端的配置文件server.conf。指定使用TCP协议。将UDP注释掉,不需要配置DNS因为无法连通外网。

将openvpn运行的用户设为nobody,用户组设为nobody,可降低openvpn的权限,增强其安全性。

将explicit-exit-notify 1注释掉以关闭显式退出提示

安装密钥生成软件easy-rsa

将easy-rsa拷贝到openvpn文件夹下

配置生成证书的环境变量并使之生效

删除之前的keys,并重新生成

创建通用名(common name)为”server”的证书文件,并设置密码为simple123。

生成防攻击的key文件,可以防止DDos攻击,UDP淹没等恶意攻击。其实从本质上说就是一个静态密钥文件,使用静态密钥文件进行连接相比于证书方式进行连接不需要TLS握手,不易被干扰。

生成客户端使用的密钥文件

将全部的密钥认证文件拷贝到openvpn的配置文件目录下

创建一个通用名(common name)为 client的客户端证书

启动openvpn服务并设置为开机自启动,随后查看服务的状态并检查服务对应的端口是否处于监听状态

服务端配置完成后进行客户端的登陆测试,首先在客户端安装openvpn

将服务端生成的对应的ca证书和客户端密钥以及连接使用的静态密钥文件通过scp拷贝到客户端

配置客户端的配置文件,进行连接前的准备,设定配置文件中连接的目标机器ip,端口,需要的密钥文件,加密方式,重新测试,预设log等级等,这一部分与服务端配置上大体保持一致。

启动openvpn客户端并挂后台运行,并可实时查看其日志。

查看网卡信息,查看vpn通道的建立情况

测试是否可用,这里ping 10.8.0.1是该ip与vpn连接的目标机ip 10.8.0.5处于同一网段下,故可以连通。

在vpn1机器上对openvpn nat进行配置,使用的工具是iptables,iptables是一款管理员工具,用于IPv4包过滤和NAT转换相关的功能,其与netfilter结合可以组成Linux平台下的包过滤防火墙。-t表示指定规则对应的表,-A表示向指定的规则链末尾增加一条规则,-s则表示源地址,-j表示对应的动作,这里MASQUERADE表示伪装,即用转换后的地址代替之前的地址。

在vpn2机器上访问百度进行测试

在vpn1机器上查看对应规则下的数据包

在两台机器上关闭openvpn服务

任务四

对于vpn1和vpn2,调整内核参数,开启数据转发,关闭icmp重定向并使之生效。

在vpn1和vpn2上安装openswan,libreswan并验证安装

启动服务并检查是否正常。

可见服务正常启动。查看openswan监听的端口

可见在监听500和4500端口,其中500是用来IKE密钥交换协商,4500的NAT-T是nat穿透的。配置ipsecVPN配置,首先使用PSK方式进行配置,修改ipsec.conf文件,在末尾添加如下

修改vpn1和vpn2的密码配置文件,在配置文件末尾添加本机ip,允许任意ip连接,密码为123

重新启动服务并验证

可见连接成功。在两台机器上搭建内网网络来进行连通性测试,在vpn1上搭建虚拟网络10.0.0.1/24。在vpn2上搭建虚拟网络10.0.1.1/24,搭建完成后如下

在vpn1上ping测试,可以成功

现在使用数字签名模式认证,在vpn1和vpn2上分别生成一个新的RSA密钥对,查看ipsec用法

其中newhostkey用于生成一个新的rsa认证密钥。我们可以使用 man ipsec newhostkey查看其用法,如下

使用newhostkey生成一个新的认证密钥,为

记下此时的Key为73c6cb9c1166c10f4d242d1b8b2ff602fba43c54 查看本机的认证密钥,使用showhostkey,同样可用man ipsec shwohostkey查看其用法

查看本机密钥为

为了方便将密钥放入ipsec配置文件中我们将密钥输出到文件中

再通过vim同时打开两个文件复制密钥到ipsec.conf中,将文件发至vpn2并在vpn2上进行同样操作,最终如下

重启ipsec服务并打开连接,显示IPsec SA established tunnel mode则连接成功

在vpn1上ping测试,可以成功

清除内网,停止服务

任务五

在vpn1和vpn2分别安装openvswitch并启动服务

可见安装并启动成功在vpn1上添加名为br0的网桥并给网桥分配一个ip

可见添加及分配ip成功在vpn2上同样添加br0网桥并分配ip

在VPN1上设置VXLAN,远端ip设置为VPN2能对外通信的br0的ip。

在VPN2上进行同样的设置

在VPN1上ping 10.1.0.2

可以Ping通说明连接成功