附:完整筆記目錄~
ps:本人小白,筆記均在個人理解基礎上整理,若有錯誤歡迎指正!
1.1.3 Web額外配置
-
引子:本篇主要介紹Web服務常用到的一些額外配置,如負載均衡、反向代理、CDN、OSS、WAF等。個人覺得本章銜接於第一節後好一些,但迪總把其放在第三節講,那就依迪總思路來吧。
-
負載均衡
- 概念:簡單來說,負載均衡是將使用者的請求分散到多個伺服器上,這些伺服器會部署相同業務系統並共享同一資料。由於這種設計,1. 可對伺服器進行分流。2. 若某一伺服器損壞並不影響業務系統的正常執行。
- 影響:使用者對業務系統進行訪問時,會依據配置訪問不同的伺服器,從而導致訪問ip不唯一。
-
反向代理
- 概念:有反向代理那就一定會有正向代理,先介紹一下什麼是正向代理吧。正向代理代表客戶端向目標伺服器發起請求,一般常用於訪問客戶端無法直接訪問的資源,如梯子。而反向代理則代表服務端去處理來自客戶端的請求,即與客戶端互動的僅是反向代理而非後端Web伺服器。
- 影響:使用者訪問帶有反向代理服務的Web系統時,實際處理使用者請求為反向代理ip。
-
CDN
-
概念:CDN(Content Delivery Network 內容分發網路),各地區都會有其自己CDN伺服器,而CDN伺服器會快取配置了CDN服務Web系統的靜態資源(HTML、CSS、圖片、影片等)。當使用者嘗試訪問配置CDN服務的Web時,會優先訪問距離其最近的CDN伺服器,由CDN伺服器將內容返回給使用者。
注:若使用者存在互動行為,則仍由後端Web伺服器處理而非CDN伺服器。
-
影響:使用者對開啟CDN服務的Web進行訪問時,實際處理使用者請求ip為距離其最近的CDN伺服器ip。
-
-
OSS
-
概念:OSS(Object Storage Service 物件儲存服務),即雲端儲存服務。傳統儲存服務由硬碟實現,資料存放於本地,而云儲存服務則將資料儲存於雲服務商所提供雲端。
-
影響:
使用者向目標伺服器上傳檔案,若其檔案為指令碼檔案。傳統儲存服務會將指令碼檔案儲存至其Web伺服器上,由於伺服器上配置了指令碼解析環境,則當使用者訪問其上傳檔案時會預設解析該指令碼。
而使用OSS,由於OSS僅提供儲存服務,而無任何額外環境配置。當訪問使用OSS儲存的檔案資源時,會預設下載該檔案而非解析。眾所周知,所有的後門檔案只有當伺服器解析後才能連線,而OSS服務則徹底杜絕了檔案上傳漏洞。更何況OSS儲存的檔案在雲服務商而非目標伺服器。
-
-
WAF
-
概念:WAF(Web Application Firewall Web應用防火牆),為保護Web應用程式設計的安全裝置或服務,透過分析http/https流量檢測並攔截來自使用者/攻擊者的惡意行為。
-
類別
-
硬體WAF:物理裝置,支援串/並行部署。華為的硬體waf嘛,長的跟1u交換機挺像。
-
軟體WAF:顧名思義,以軟體形式部署。如雷池
-
雲WAF:由雲服務商所提供。如阿里雲WAF。
注:所有類別WAF若想起到對Web攻擊的防護作用,均需將WAF配置於Web服務前,由流量先經過WAF再轉發給Web伺服器,與使用者進行直接互動的始終為WAF。
是不是感覺有些熟悉呢,沒錯,一般情況下,WAF均是作為反向代理接入整個網路中。
-
-
-
實驗
-
實驗內容
- 透過Nginx分別實現Web服務的負載均衡&反向代理。
- 使用Clouddreve分別配置本地儲存&雲端儲存服務。
- 為Webgoat靶場部署雷池WAF,並觀察WAF的攔截效果。
-
透過Nginx分別實現Web服務的負載均衡&反向代理。
-
使用寶塔皮膚安裝Nginx(寶塔安裝見上一篇)
-
建立一個站點併為bilibili做反向代理
-
訪問反向代理ip,並觀察返回結果
-
實驗一結束(ps:負載均衡沒做出來,跟我沒註冊域名有關係嗎?有會的師傅可以教教我🙏)
-
-
使用Clouddreve分別配置本地儲存&雲端儲存服務。
-
Clouddreve:雲盤系統,既能將各種檔案存於本地(Clouddreve uploads目錄下),也能連線OSS將資料儲存於雲上。(專案地址:https://github.com/cloudreve/Cloudreve)
-
下載安裝並開啟Clouddreve管理皮膚(5212埠下)
-
預設本地儲存,嘗試上傳圖片
-
開通OSS服務,透過Cloudreve皮膚配置OSS。
-
再次上傳檔案
檔案被上傳至OSS
-
嘗試對上傳至OSS的檔案進行訪問
-
實驗二結束
-
-
為Webgoat靶場部署雷池WAF,並觀察WAF的攔截效果。
-
使用docker部署WebGoat
sudo apt update sudo apt install docker.io sudo systemctl start docker sudo docker pull webgoat/webgoat-8.0 sudo docker run -d -p 8080:8080 webgoat/webgoat-8.0 # 瀏覽器輸入xxx.xxx.xxx.xxx:8080/WebGoat訪問
-
部署雷池,並將WebGoat加入防護
# 一句話命令自動安裝雷池 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)" # 注:由於該命令會再次安裝docker及其元件,導致之前已經開啟的WebGoat容器會被關閉,需重新開啟。 # emmm...伺服器要是已存在docker服務,為避免不必要的bug還是建議手動安裝吧,可參考雷池官網。 # 預設部署埠:9443
-
嘗試進行SQL隱碼攻擊
攻擊者頁面
雷池運維者頁面
-
實驗三結束
-
-