慢慢写,已经是第二周了可是看上去好像一时半会儿也写不完……

最近在做零信任相关软件的安装和调试,主要使用系统为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 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::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 1000link/ether 00:0c:29:70:43:99 brd ff:ff:ff:ff:ff:ffinet 192.168.0.1/24 brd 192.168.0.255 scope global noprefixroute ens32valid_lft forever preferred_lft foreverinet6 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 1000link/ether 00:0c:29:70:43:a3 brd ff:ff:ff:ff:ff:ffinet 172.16.1.1/16 brd 172.16.255.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 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 daemonLoaded: 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=squidsslcache_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

基础零信任服务相关软件的安装和调试相关推荐

  1. 脑机接口系列课程(二) SSVEP介绍及相关软件的安装、实验范式的搭建

    脑机接口系列课程(二) SSVEP介绍及相关软件的安装.实验范式的搭建 导言:这是脑机接口系列课程的第二篇,也是SSVEP部分的第一节,介绍SSVEP相关知识和实验范式的搭建等,属于基础入门篇,文章靠 ...

  2. 蓝桥杯相关软件的安装

    蓝桥杯相关软件的安装 MDK5的安装 Coocox安装 由于开发板自带的案例教程由keil4编写,所以在使用keil5打开案例时需要首先下载keil5对keil4的支持插件. 支持插件的百度网盘链接: ...

  3. 云原生安全系列 1:零信任安全和软件开发生命周期

    引言: 自动化已经以各种形式出现了几十年,直到现在我们才开始看到它的全部潜力. 自动化软件开发生命周期 (SDLC) 可以显著提高质量保证.开发人员的生产力并减少花在特定任务上的时间.公司已开始在其整 ...

  4. Java(一)——环境配置及相关软件的安装

    大学期间学的东西十分杂乱,导致什么也没学下,痛定思动决定自学java,废话不多说,一些概念性东西就不说了,直接开始.java自学之旅开启,一切从零开始.全文进行傻瓜式叙述. 以下仅是一些个人理解,有误 ...

  5. Linux基础、命令及相关软件安装

    文章目录 一.Linux的简介 1.Linux的概述 2.Linux的分类 3 . 文件系统结构 二.Linux的安装 1.虚拟机的安装 2.CentOS的安装 三.Linux的基本命令 1.目录切换 ...

  6. base环境卸载python_20小时快速学习python数据分析实践1——相关软件一系列安装和基本操作熟悉(第0-1h)...

    TED演讲"First 20 Hours-How to Learn Anything"中演讲者将快速学习一项新技能分成四个步骤--解析技能.掌握足够多的知识并且自我矫正.清楚学习中 ...

  7. Vue相关软件的安装

    目录 1.安装Nodejs服务器. 1.1.下载node.js 2.2.检查有没有安装成功node.js 2.2.1.按winds+r,输入命令cmd 2.2.2.打开之后,在cmd输入命令node ...

  8. win7 PLC相关软件下载安装-S7-200/300/400

    由于课程学习了PLC,需要下载一些软件,PLC300系列的比较麻烦,本人卡在了S7-PLCSIM下载安装上了,在百度找了很多版本的,安装在电脑上回失败 显示the software cannot be ...

  9. 近期整活之相关软件之安装说明

    目录 安装说明 1. Windows的Mujoco 1.1 Mujoco-py是啥 1.2 额外 安装说明 1. Windows的Mujoco RFC需要Mujoco-py,安装系统是Windows, ...

最新文章

  1. 【ASP.NET Core】依赖注入高级玩法——如何注入多个服务实现类
  2. #地形剖面图_高中地理——每日讲1题(地形剖面图)
  3. 邮件实现详解(三)------邮件的组织结构
  4. 06.delete_by_query操作
  5. Scala 中的文件操作
  6. Educational Codeforces Round 111 (Rated for Div. 2)
  7. 单E1光端机分类及技术指标详解
  8. html 圆环实现多种颜色,SVG实现多彩圆环倒计时效果的示例代码
  9. FRIDA - API使用篇:rpc、Process、Module、Memory 使用方法及示例
  10. PyCharm设置背景颜色
  11. 一改性冷淡风!红米Note 7 Pro包装盒曝光
  12. 浅析Comet技术在Java Web实时系统开发中的应用
  13. 基于Python的Fisher二分类判别模型实现
  14. 2019世界互联网大会 聚焦网络安全发展新动能新要求 最新等保测评机构名录发布10月版
  15. 简单模仿赛尔号哈莫雷特对战谱尼最难打的第五条命
  16. Win7下安装XP(PE)
  17. Android10 lowmemorykiller
  18. 边缘计算卸载算法--GT-GAOA
  19. login-shell和non login-shell区别 & bash配置文件实验报告
  20. js 实现一个简单的存钱/取钱/查询/退出等操作的ATM功能.

热门文章

  1. 不一般的Cover Letter
  2. 深度思考故事2:出租司机的经济学
  3. 互联网产品都有哪些类型?
  4. Failed to initialize NVML: Driver/library version mismatch
  5. 无法挣脱的命运——《巴黎圣母院》读后感4000字
  6. AM的常用T-CODE
  7. 测试显卡位宽软件,科普:显卡位宽基础知识指南
  8. 【清华集训2014】【BZOJ3811】玛里苟斯
  9. 深度学习入门笔记(一):深度学习引言
  10. js经验分享 JavaScript反调试技巧