ubuntu基础搭建

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 请求和响应了。

相关推荐
一个龙的传说20 分钟前
linux 常用命令
linux·服务器·zookeeper
别致的影分身1 小时前
Docker 镜像原理
运维·docker·容器
路人蛃1 小时前
通过国内扣子(Coze)搭建智能体并接入discord机器人
人工智能·python·ubuntu·ai·aigc·个人开发
庸子2 小时前
Ansible & AWX 自动化运维
运维·自动化·ansible
Ching·2 小时前
esp32使用ESP-IDF在Linux下的升级步骤,和遇到的坑Traceback (most recent call last):,及解决
linux·python·esp32·esp_idf升级
斯是 陋室2 小时前
在CentOS7.9服务器上安装.NET 8.0 SDK
运维·服务器·开发语言·c++·c#·云计算·.net
子柒s3 小时前
Linux 基础
linux
MC皮蛋侠客3 小时前
Ubuntu安装Mongodb
linux·mongodb·ubuntu
ii_best3 小时前
解锁 iOS 按键精灵辅助工具自动化新可能:iOSElement.Click 让元素交互更简单
运维·自动化