慢慢写,已经是第二周了可是看上去好像一时半会儿也写不完……
最近在做零信任相关软件的安装和调试,主要使用系统为linux的CentOS 7、Windows7和Win Server 2008 R2 64。
涉及到的软件为,Squid、开源加密通讯软件OpenV//P//N、fwknop。
所有使用软件已经上传至百度云。
链接:https://pan.baidu.com/s/19HwcXGDQFO3_V4DnyGAsdw 提取码:0000
1、设置实验环境
1.1 安装虚拟机
本文涉及到的操作全部通过VMware Workstation15 Pro虚拟机完成,版本为15.5.7。
下载CentOS 7、Win7和Windows Server 2008 R2 x64安装.iso文件,CentOS 7作为服务端,Win7作为客户端,Windows Server 2008可视为内网服务器,CentOS 7和Win 7都需要安装VMware Tools辅助工具,方便传输文件。
首先安装虚拟机,然后分别安装三个所需虚拟机,每次安装记得修改虚拟光驱所存的.iso文件。
1.2 配置网络环境
安装完成后,点击VMware的编辑按钮,选择虚拟机网络编辑器,修改VMnet1(仅主机模式)和VMnet8(NAT模式)网卡。
将VMnet1网卡的子网IP设置为192.168.0.0,子网掩码255.255.255.0,视作企业内网;将VMnet8的子网IP设置为172.16.0.0,子网掩码为255.255.0.0,视作互联网。
修改CentOS 7的设备信息,添加网络适配器2,两个适配器均选择自定义模式,适配器1网卡修改为VMnet1,适配器2网卡修改为VMnet8。
1.2.1 Win Server
将Win Server 2008的网络适配器修改为VMnet1。
进入虚拟机,选中右下角网络连接按钮,右键进入网络和共享中心,修改本地连接属性中的的ipv4协议,将IP地址设置为192.168.0.10,子网掩码设置为255.255.255.0。
打开命令行,输入ipconfig查询IP地址修改是否成功。
1.2.2 Win 7
将Win7的网络适配器修改为VMnet8。
进入虚拟机,选中右下角网络连接按钮,右键进入网络和共享中心,修改本地连接属性中的的ipv4协议,将IP地址设置为172.16.10.10,子网掩码设置为255.255.0.0,默认网关172.16.0.2,DNS服务器172.16.0.2。
打开命令行,输入ipconfig查询IP地址修改是否成功。
1.2.3 CentOS 7
此处有一个问题,安装CentOS 7使用了GNOME图形化界面,导致网卡中存在virbr0和virbr0-nic两个网卡,终端输入ip a命令查看,会导致后续设置出现问题,因此需要进入root模式卸载网卡[1],如果没有不用进行这步。
[root@localhost ~]# ifconfig virbr0 down
[root@localhost ~]# brctl delbr virbr0
[root@localhost ~]# nmcli device delete virbr0-nic
成功移除设备 "virbr0-nic"。
[root@localhost ~]# systemctl mask libvirtd.service
Created symlink from /etc/systemd/system/libvirtd.service to /dev/null.
[root@localhost ~]# systemctl disable libvirtd.service
修改网卡ens32的配置文件:
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls -l ifcfg-ens*
-rw-r--r--. 1 root root 279 12月 3 17:28 ifcfg-ens32
-rw-r--r--. 1 root root 279 12月 3 17:28 ifcfg-ens33
[root@localhost network-scripts]# vim ifcfg-ens32
BOOTPROTO=static
ONBOOT=YES
IPADDR=192.168.0.1
# UUID需要删除
保存退出
修改网卡ens33的配置文件:
[root@localhost network-scripts]# vim ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.1.1
MASK=255.255.0.0
GATEWAY=172.16.0.2
DNS1=172.16.0.2
# UUID需要删除
保存退出
重启网卡设置,查看IP地址修改是否成功。
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:70:43:99 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global noprefixroute ens32
valid_lft forever preferred_lft forever
inet6 fe80::1a7e:bed2:550a:4242/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:70:43:a3 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/16 brd 172.16.255.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::a542:e613:6f05:fcff/64 scope link noprefixroute
valid_lft forever preferred_lft forever
修改成功!
1.2.4 测试网络连通性
Win server服务器与CentOS 7通过VMnet1网卡联通,Win7客户端与CentOS 7 通过VMnet8网卡联通。
首先关闭三台虚拟机的防火墙,Windows系统的两台虚拟机,通过控制面板中–>系统和安全–>Windows防火墙,关闭使用网络的防火墙。CentOS 7中,使用以下命令关闭防火墙。
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 四 2020-12-03 11:18:57 CST; 6s ago
Win 7 ping 172.16.1.1 (CentOS 7)
Win Server ping 192.168.0.1 (CentOS 7)
CentOS ping 192.168.0.10 (Win Server)
ping 172.16.10.10 (Win 7)
如果ping不通,大概率是目标地址的防火墙没有关闭。
1.3 配置内网服务器
使用Win Server服务器作为内网服务器,在内网服务器中配置一个网站,同时使用HTTP协议和HTTPS协议。
打开Win Server虚拟机,在C盘根目录下新建一个文件夹,命名为Zero-Trust,文件夹内新建文本文档,随意输入一些内容,保存为index.html。
进入服务器管理器,角色下属新增角色,使用默认设置,添加Web服务器。Web服务器管理器中选择服务器证书–>自签名证书,创建名为trust的证书。
下拉找到网站列表,右键新建http网站,来源选择C盘根目录下的Zero-Trust,保存。右键新建https网站,来源同上,选择证书trust,网站新建完成。
打开Win Server的浏览器,输入IP地址192.168.0.10,查看网站是否成功上传。
在CentOS 7浏览器中输入http://192.168.0.10/查看网站是否能够正常访问。
在CentOS 7浏览器中输入https://192.168.0.10/查看网站是否能够正常访问。浏览器会提示访问风险,由于我们是自签名证书,所以需要选择忽略风险,接着就能正常访问了。
2、安装软件
2.1 Squid反向代理
2.1.1 安装Squid
Squid仅需要在服务器上进行配置,所以我们只需要在CentOS上安装就可以。执行如下命令:
[root@localhost squid]# yum -y install squid
2.1.2 HTTP代理
进入squid的配置文件
[root@localhost ~]# cd /etc/squid
[root@localhost squid]# vim squid.conf
找到http_port,将
http_port 3128
改为
#http_port 3128
http_port 172.16.1.1:80 accel vhost vport
cache_peer 192.168.0.10 parent 80 0 no-query no_digest originserver
修改完成后,重启squid。
[root@localhost squid]# systemctl restart squid
[root@localhost squid]# systemctl status squid
此时Squid的状态为active(running)
打开Win7虚拟机的浏览器,访问CentOS 7的IP地址http://172.16.1.1/,成功打开Web服务器上的预设网页,完成HTTP反向代理。
2.1.3 HTTPS代理
HTTPS代理需要生成公钥和私钥
进入squid文件夹,添加公钥和私钥,并修改配置文件
[root@localhost ~]# cd /etc/squid
[root@localhost squid]# openssl genrsa -out s.key
[root@localhost squid]# ls s.*
s.key
[root@localhost squid]# openssl req -new -key s.key -out s.csr
[root@localhost squid]# ls s.*
s.csr s.key
[root@localhost squid]# openssl x509 -req -in s.csr -signkey s.key -out s.crt
[root@localhost squid]# ls s.*
s.crt s.csr s.key
[root@localhost squid]# vim squid.conf
修改配置文件,在上一节修改内容后面添加内容
https_port 172.16.1.1:443 accel cert=/etc/squid/s.crt key=/etc/squid/s.key vhost vport
cache_peer 192.168.0.10 parent 443 0 no-query no-digest orignserver ssl sslflags=DONT_VERIFY_PEER name=squidssl
cache_peer_access squidssl allow SSL_ports
其中,sslflags=DONT_VERIFY_PEER 表明不检查自签名证书有效性。
修改完成后,重启squid。
[root@localhost squid]# systemctl restart squid
[root@localhost squid]# systemctl status squid
此时Squid的状态为active(running)
打开Win7虚拟机的浏览器,访问CentOS 7的IP地址https://172.16.1.1/,出现安全问题提示,选择继续浏览此网站,成功打开Web服务器上的预设网页,完成HTTPS反向代理。
Squid反向代理到此完成。
PS:当程序运行出现问题时,可以使用squid -k parse指令检查squid.conf文件是否正确[2]。
2.2 开源加密通讯软件
见:https://github.com/Mingcat-23/Zero-Trust-Software/
软件下载地址:
2.3 fwknop单包授权认证
如果客户端和服务器端都是liunx系统,那么fwknop的安装会比较容易,但本次使用的客户端是Win7系统,需要自行编译,所以安装上相对复杂,需要前置条件。
**PS:**不知道是不是vs2008不适配最新的fwknop windows客户端,编译出了点问题,可以选择用编译好的文件进行安装。
2.3.1 客户端安装
由于我没有自行编译,所以跳过自行编译这一步,可以到参考文献[5]中阅读如何进行编译。编译好的文件也放在百度云的软件包中。
下载编译好的压缩文件fwknopwin.zip,拖动到Win7虚拟机中,解压缩。
比如说我的文件地址是E:\fwknopwin,打开命令行,进入文件地址,执行fwknop --version,出现版本号证明.exe文件没有问题。同时说明.fwknoprc文件存储路径。
还需要下载wget文件并新建bwget.bat批处理脚本(内容为:@wget --no-check-certificate %1 %2 %3 %4 %5 %6 %7 %8 2>nul),但是压缩文件中都已经存了,此处就不详细提了。
在命令行窗口,执行命令
fwknop -n cen7 -A tcp/22,tcp/4432 -a 172.16.10.10 -D 172.16.1.1 --use-hmac -p 62201 -P udp -k --save-rc-stanza
下面逐项作解释:
-n cen7 给后面的参数起一个名字,方便以后调用;
-A tcp/22,tcp/4432 请求服务端打开的端口及其协议;
-a 172.16.10.10 客户端的IP地址;
-D 172.16.1.1 服务端的IP地址;
--use-hmac 采用hmac加密认证方式;
-p 62201 服务端等待请求的侦听端口;
-P udp 服务端等待请求的协议;
-k 生成一个加密密钥;
--save-rc-stanza 保存以上参数的执行结果。
使用文本编辑器打开用户文档(C:\User\用户名)中的.fwknoprc文件。
[default]
[cen7]
SPA_SERVER_PROTO udp
SPA_SERVER_PORT 62201
ALLOW_IP 172.16.10.10
ACCESS tcp/22,tcp/4432
SPA_SERVER 172.16.1.1
KEY_BASE64 5e40ifphFEkGNz1G43fgNkdKIcTSJLyIeMV9V1qeQjs=
HMAC_KEY_BASE64 5e40ifphFEkGNz1G43fgNkdKIcTSJLyIeMV9V1qeQjsyL8KrB/gBxyyHAk1avbJrWuMcOhEVzgTgoaqGu3dgfA==
USE_HMAC Y
复制其中的KEY_BASE64和HMAC_KEY_BASE64 ,服务端安装完成以后需要这两个信息。
2.3.2 服务端安装
由于CentOS 7中已经使用fiewalld服务代替了iptables服务,因此,很多操作需要更新。
首先确认firewalld服务是否开启:
[root@localhost ~]# systemctl status firewalld
如果没安装,则先安装firewalld。
[root@localhost ~]# yum install firewalld
如果没开启,则先禁用冲突服务,然后开启firewalld。
[root@localhost ~]# systemctl disable --now iptables.service
[root@localhost ~]# systemctl disable --now ip6tables.service
[root@localhost ~]# systemctl disable --now ebtables.service
[root@localhost ~]# systemctl disable --now ipset.service
[root@localhost ~]# systemctl start firewalld
安装fwknop:
[root@localhost ~]# yum install fwknop
安装完成后,编辑配置文件
[root@localhost ~]# vi /etc/fwknop/access.conf
# 添加
SOURCE ANY
DESTINATION ANY
OPEN_PORTS tcp/22,tcp/4432
REQUIRE_SOURCE_ADDRESS Y
KEY_BASE64 5e40ifphFEkGNz1G43fgNkdKIcTSJLyIeMV9V1qeQjs=
HMAC_KEY_BASE64 5e40ifphFEkGNz1G43fgNkdKIcTSJLyIeMV9V1qeQjsyL8KrB/gBxyyHAk1avbJrWuMcOhEVzgTgoaqGu3dgfA==
已知客户端服务器连接使用网卡为VMnet8,也就是ens33,编辑服务端配置文件。
[root@localhost ~]# vi /etc/fwknop/fwknopd.conf
# 修改内容
PCAP_INTF enp3s0;
ENABLE_UDP_SERVER Y;
UDPSERV_PORT 62201;
PCAP_FILTER udp port 62201;
ENABLE_SPA_PACKET_AGING Y;
MAX_SPA_PACKET_AGE 60;
ENABLE_SPA_OVER_HTTP N;
ENABLE_DESTINATION_RULE N;
FLUSH_FIREWD_AT_INIT Y;
FLUSH_FIREWD_AT_EXIT Y;
ENABLE_FIREWD_FORWARDING Y;
ENABLE_FIREWD_LOCAL_NAT N;
ENABLE_FIREWD_OUTPUT N;
FIREWD_INPUT_ACCESS ACCEPT, filter, INPUT, 1, FWKNOP_INPUT, 1;
FIREWD_FORWARD_ACCESS ACCEPT, filter, FORWARD, 1, FWKNOP_FORWARD, 1;
ENABLE_FIREWD_COMMENT_CHECK N;
FIREWALL_EXE /usr/bin/firewall-cmd;
在终端设置防火墙,确保fwknopd侦听端口和协议不被阻止。
[root@localhost ~]# firewall-cmd --permanent --new-service=fwknop
success
[root@localhost ~]# firewall-cmd --permanent --service=fwknop --add-port=62201/udp
success
[root@localhost ~]# firewall-cmd --permanent --add-service=fwknop
success
[root@localhost ~]# firewall-cmd --zone=public --add-service=fwknop
success
安装完成
2.3.3 测试
服务端执行:
[root@localhost ~]# fwknopd -f -t -v
客户端在命令行执行敲门测试:
服务端接收到:
Starting fwknopd
# 省略
[172.16.10.10] (stanza #1) --test mode enabled, skipping firewall manipulation.
表明敲门成功。
零信任软件重新配置
接下来就是几个相关的软件重新进行配置达到一个基础的零信任软件的功能。
图1 零信任服务程序拓扑图
新建一个文档来写吧,不然这个文档太长啦~
见:https://blog.csdn.net/sinat_27690807/article/details/111177327
参考文章或视频:
1、删除虚拟网卡virbr0和virbr0-nic
https://www.cnblogs.com/leoshi/p/12514360.html
2、Squid配置文件检查指令
https://blog.csdn.net/qq_32384249/article/details/77675707
3、CentOS服务器常用软件安装教程
https://www.bilibili.com/video/BV1mK411T7eg
4、建立共享文件服务器教程
https://www.cnblogs.com/xiaozhou-cn/p/11372957.html
5、fwknop win7客户端安装
https://blog.csdn.net/suntongo/article/details/53806943