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 請求和響應了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處: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 解壓文件 配置環境變量 啟動…