ubuntu上docker的搭建

https://vulhub.org/zh
网站最下面找到开始使用,有搭建的命令
在这里插入图片描述
//安装docker,连接失败多试几次
curl -fsSL https://get.docker.com | sh

//验证Docker是否正确安装:
docker version

//还要验证Docker Compose是否可用:
docker compose version

安装挂载proxychains:
apt install proxychains

编辑配置文件:
vim /etc/proxychains.conf

对最下面的配置进行修改:改自己的主机IP

proxychains curl http://www.google.com
测试是否可以成功访问谷歌

点击开头github点击code复制里面的链接进行克隆:https://github.com/vulhub/vulhub.git

proxychains git clone --depth 1 https://github.com/vulhub/vulhub.git

切换目录:选择漏洞环境 浏览仓库并选择您想要探索的漏洞。每个目录代表一个不同的漏洞应用程序。

cd vulhub/cacti/CVE-2022-46169/

启动环境 使用Docker Compose构建并启动漏洞环境

docker compose up -d

拉镜像是遇到了报错Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 大概就是请求超时,是网络问题导致镜像没拉下来

配置一个加速地址

vim /etc/docker/daemon.json

添加下面内容 { “registry-mirrors”: [ “https://docker.211678.top”, “https://docker.1panel.live”, “https://hub.rat.dev”, “https://docker.m.daocloud.io”, “https://do.nark.eu.org”, “https://dockerpull.com”, “https://dockerproxy.cn”, “https://docker.awsl9527.cn” ] }

然后保存 重启

systemctl daemon-reload systemctl restart docker

vscode上dockers连接失败解决方法:

先在商店中下载docker

如果安装后连接失败可能是当前用户没有权限导致的:

需要将普通用户加入到 docker 用户组,并重启,即可不使用 sudo 来运行 docker 相关操作

sudo usermod -aG docker $USER

重启:

reboot

ubuntu上nginx和php:

1.安装依赖包

apt-get install gcc apt-get install libpcre3 libpcre3-dev apt-get install zlib1g zlib1g-dev sudo apt-get install openssl sudo apt-get install libssl-dev

2.安装nginx

cd /usr/local

mkdir nginx

cd nginx

wget http://nginx.org/download/nginx-1.21.6.tar.gz

tar -xvf nginx-1.21.6.tar.gz

3.编译nginx

cd /usr/local/nginx/nginx-1.21.6

执行命令

./configure 安装make

apt install make 执行make命令 make

执行make install命令

make install4

4.启动nginx

cd /usr/local/nginx/sbin

启动nginx

./nginx

5.访问nginx

在浏览器上输入ubuntu虚拟机的ip
在这里插入图片描述

7.安装php

​ nginx使用php的话要用到php7.3-fpm,所以要安装

sudo apt-get install php7.3 php7.3-mysql php7.3-fpm php7.3-curl php7.3-xml php7.3-gd php7.3-mbstring php-memcached php7.3-zip

8.配置php-fpm

​ 把监听端口改掉

把上面一行的换成下面那个

;listen = /run/php/php7.3-fpm.sock listen = 127.0.0.1:9000

9.启动php-fpm

sudo service php7.3-fpm start sudo service php7.3-fpm restart netstat -lnt | grep 9000

查看9000端口:
在这里插入图片描述

https和dns:

DNS域名解析过程
首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:

(1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;

(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;

(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。

(4)若没有找到,则返回错误信息

https原理–RSA密钥协商算法
TLS 第一次握手
客户端首先会发一个「Client Hello」消息,字面意思我们也能理解到,这是跟服务器「打招呼」。

消息里面有客户端使用的 TLS 版本号、支持的密码套件列表,支持的压缩算法,以及生成的随机数(Client Random),这个随机数会被服务端保留,它是生成对称加密密钥的材料之一。

TLS 第二次握手
当服务端收到客户端的「Client Hello」消息后,会确认 TLS 版本号是否支持,和从密码套件列表中选择一个密码套件,还有选择压缩算法(安全性原因,一般不压缩),以及生成随机数(Server Random)。

接着,返回「Server Hello」消息,消息里面有服务器确认的 TLS 版本号,也给出了随机数(Server Random),然后从客户端的密码套件列表选择了一个合适的密码套件。

前面这两个客户端和服务端相互「打招呼」的过程,客户端和服务端就已确认了 TLS 版本和使用的密码套件,而且你可能发现客户端和服务端都会各自生成一个随机数,并且还会把随机数传递给对方。

这两个随机数是后续作为生成「会话密钥」的条件,所谓的会话密钥就是数据传输时,所使用的对称加密密钥。

然后,服务端为了证明自己的身份,会发送「Server Certificate」给客户端,这个消息里含有数字证书。

随后,服务端发了「Server Hello Done」消息,目的是告诉客户端,我已经把该给你的东西都给你了,本次打招呼完毕。、

TLS第三次握手
客户端验证完证书后,认为可信则继续往下走。接着,客户端就会生成一个新的随机数 (pre-master),用服务器的 RSA 公钥加密该随机数,通过「Change Cipher Key Exchange」消息传给服务端。

服务端收到后,用 RSA 私钥解密,得到客户端发来的随机数 (pre-master)。

至此,客户端和服务端双方都共享了三个随机数,分别是 Client Random、Server Random、pre-master。

于是,双方根据已经得到的三个随机数,生成会话密钥(Master Secret),它是对称密钥,用于对后续的 HTTP 请求/响应的数据加解密。

生成完会话密钥后,然后客户端发一个「Change Cipher Spec」,告诉服务端开始使用加密方式发送消息。

然后,客户端再发一个「Encrypted Handshake Message(Finishd)」消息,把之前所有发送的数据做个摘要,再用会话密钥(master secret)加密一下,让服务器做个验证,验证加密通信是否可用和之前握手信息是否有被中途篡改过。

可以发现,「Change Cipher Spec」之前传输的 TLS 握手数据都是明文,之后都是对称密钥加密的密文。

TLS 第四次握手
服务器也是同样的操作,发「Change Cipher Spec」和「Encrypted Handshake Message」消息,如果双方都验证加密和解密没问题,那么握手正式完成。

最后,就用「会话密钥」加解密 HTTP 请求和响应了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89577.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89577.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89577.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划 + DFS + 记忆化!Swift 解 LeetCode 329 的实战笔记

文章目录摘要描述题解答案题解代码分析代码解析示例测试及结果时间复杂度空间复杂度总结摘要 这篇文章带你用 Swift 实战一道非常经典的 DFS 记忆化搜索题目 —— LeetCode 329《矩阵中的最长递增路径》。看似一个简单的“走格子”游戏,实则考察了搜索顺序、剪枝策…

046_局部内部类与匿名内部类

一、局部内部类(Local Inner Class) 1.1 定义与基本概念 局部内部类是定义在方法、构造器或代码块内部的类,其作用域仅限于所在的局部范围(定义它的方法、构造器或代码块),超出该范围则无法访问。 它的核心…

Jenkins Pipeline 中使用 JsonSlurper 报错:cannot find current thread

Jenkins Pipeline 中使用 JsonSlurper 报错:cannot find current thread🌟 背景⚠ 问题重现🧠 原因解析:CPS 与非 CPS 安全方法冲突✅ 解决方案一:使用 NonCPS 注解(经典方案)✅ 解决方案二&…

Go 语言循环语句详解

Go 语言循环语句详解 在编程语言中,循环语句是实现重复执行某些代码块的关键元素。Go 语言作为现代编程语言之一,提供了多种循环结构来满足不同的编程需求。本文将详细讲解 Go 语言中的循环语句,包括 for、while 和 goto 语句,帮助…

day30——零基础学嵌入式之进程间通信1.0

一、进程间通信7种方式1.传统的进程间通信方式(1)管道①无名管道:②有名管道:(2)③信号(3)system Ⅴ 》系统Ⅴ 进程间通信方式 inner Process Comunication④共享内存 &#xff…

408考研逐题详解:2010年第33题——网络体系结构

2010年第33题 下列选项中,不属于网络体系结构所描述的内容是( ) A. 网络的层次 \qquad B. 每层使用的协议 \qquad C. 协议的内部实现细节 \qquad D. 每层必须完成的功能 解析 本题属于计算机网络基础知识的范畴,考查网络体系结构…

VR 远程系统的沉浸式协作体验​

在传统的远程协作中,团队成员往往通过二维的视频画面进行交流,这种方式虽然能实现基本的沟通,但缺乏真实感和互动性。而 VR 远程系统的出现,彻底改变了这一局面。戴上 VR 设备,员工们仿佛置身于同一个真实的办公室空间…

记录DataGrip 2025.1.3破解失败后,无法重启问题修复

记录DataGrip 2025.1.3破解失败后,无法重启问题修复安装过程复盘异常场景解决方式总结安装过程 在官网下载了最新版本2025.1.3。安装成功后,使用30天试用方式,打开datagrip。 复盘异常场景 网上搜索破解教程进行破解。找了一个需要现在ja…

私有服务器AI智能体搭建配置选择记录

在搭建私有服务器上的AI智能体时,需要从多个方面进行选择和规划,以确保系统性能、安全性、可扩展性等方面满足需求。1. 硬件选择 服务器配置: CPU:选择高性能多核CPU(如Intel Xeon或AMD EPYC系列)&#xff…

SDC Specical check setting的描述 - false path

在上一篇文中描述了SDC的基本语法,其中关于时序异常约束并没有进行详细的描述,但是在正常的设计中,一般这种异常的设置反而是需要特别关注的,主要包括:1. 虚假路径- false path不需要满足任何时序要求的路径&#xff1…

【Python练习】048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应

048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应 在 Python 中,可以通过 input() 函数创建一个简单的命令行接口,接受用户输入并根据输入内容进行响应。 示例代码 def simple_command_line_interface():"""实现一个简单的命令行接口,接受用…

软件工厂语境下的知识系统选型:兼顾合规性与集成深度

在过去几十年间,制造业从“工匠手作”迈向“工业流水线”,完成了生产效率的巨大飞跃。当软件开发也面临交付复杂性、合规要求与协作成本不断上升的现实,“软件工厂”的理念逐步兴起。 在这场“开发现代化”的转型中,知识管理被重新…

C语言-一维数组,二维数组

数组 数组的引入如果要在程序中保存一个人的年龄?如何保存? 答:创建一个基于int类型的变量,举例:int age 22如果要在程序中保存一个人的三门课的成绩?如何保存? 答:创建三个基于flo…

如何区别HTML和HTML5?

要区分 HTML&#xff08;通常指 HTML4 及更早版本&#xff09;和 HTML5&#xff0c;主要可以从以下关键方面进行比较&#xff1a;一、文档声明区别 <!-- HTML4 文档声明 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:/…

Java实战:实时聊天应用开发(附GitHub链接)

一、前置技术项目介绍&#xff1a; 项目为局域网沟通软件&#xff0c;类似内网通&#xff0c;核心功能包括昵称输入、聊天界面展示在线人数&#xff08;实时更新&#xff09;、群聊&#xff0c;也可扩展私聊、登录注册、聊天记录存储等功能&#xff0c;结尾附GitHub链接。项目涉…

linux 的list_for_each_entry

linux的宏定义提高了代码的简洁性&#xff0c;但有时候的命名不够完美。比如list_for_each_entry&#xff0c;看名字只知道是遍历list&#xff0c;但一看里面的三个变量参数&#xff0c;有点懵逼。/*** list_for_each_entry - iterate over list of given type* pos: …

分布式面试点

目录 1.分布式理论 为什么CAP不可兼得呢? 2.CAP对应的模型和应用 3.Base理论 4,有哪些分布式锁的案例 5.分布式事务 6.Seata 分布式一致性算法 1. 准备阶段&#xff08;Prepare Phase&#xff09; 2. 接受阶段&#xff08;Accept Phase&#xff09; 3. 学习阶段&…

Neo4j系列---【Linux离线安装neo4j】

Linux离线安装neo4j 1.官方安装文档 地址&#xff1a;https://neo4j.com/docs/operations-manual/current/installation/linux/tarball/ 2.如果浏览器无法访问 修改neo4j.conf,开放所有ip访问 # 允许所有IP地址访问 server.default_listen_address0.0.0.0 3.创建开机自启动服务…

SEO长尾关键词核心实战技巧提升排名

内容概要 本文聚焦于SEO长尾关键词的核心实战技巧&#xff0c;旨在帮助读者精准锁定目标用户的搜索意图&#xff0c;从而提升网站自然排名和获取精准流量。文章将从基础概念入手&#xff0c;系统解析如何挖掘高转化率的长尾关键词&#xff0c;优化内容结构以增强搜索可见度&…

当OT遇见IT:Apache IoTDB如何用“时序空间一体化“技术破解工业物联网数据孤岛困局?

目录 一. 什么是时序数据库&#xff1f; 二. 时序数据库的选型要素 性能指标 架构能力 数据模型与查询能力 安全与权限控制 部署与运维能力 三 Apache IoTDB 简介及安装使用&#xff1a; 安装准备教程 检查 Java 版本 下载与安装 下载 IoTDB 解压文件 配置环境变量 启动…