亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析Haproxy端口復用

發布時間:2022-01-18 16:10:40 來源:億速云 閱讀:188 作者:柒染 欄目:網絡管理

如何分析Haproxy端口復用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

本文作者:Spark(Ms08067內網安全小組成員)

一、概述

Haproxy是一個使用c語言開發的高性能負載均衡代理軟件,提供tcp和http的應用程序代理,免費、快速且可靠。
類似frp,使用一個配置文件+一個server就可以運行。
優點:

大型業務領域應用廣泛

支持四層代理(傳輸層)以及七層代理(應用層)

支持acl(訪問控制列表),可靈活配置路由

windows使用cygwin編譯后可運行(可跨平臺)

訪問控制列表(Access Control Lists,ACL)是應用在路由器接口的指令列表,這些指令列表用來告訴路由器哪些數據包可以接受,哪些數據包需要拒絕。

二、配置

官方配置手冊:https://cbonte.github.io/haproxy-dconv/2.2/configuration.html
配置文件由全局配置和代理配置組成:
全局配置(global):定義haproxy進程管理安全及性能相關的參數

代理設定(proxies):

defaults:為其他配置段提供默認參數,默認配置參數可由下一個"defaults"重新設定

frontend:定義一系列監聽的套接字,這些套接字可接受客戶端請求并與之建立連接

backend:定義"后端"服務器,前端代理服務器將會把哭護短的請求調度至這些服務器

listen:定義監聽的套接字和后端的服務器,類似于將frontend和backend段放在一起

示例:

global
defaults
  log global
  mode tcp
  option dontlognull
  timeout connect 5000
  timeout client 50000
  timeout server 50000

frontend main
  mode tcp
  bind *:8888
  option forwardfor except 127.0.0.1
  option forwardfor header X‐Real‐IP

# 配置acl規則
  acl is‐proxy‐now urlp_reg(proxy) ^(http|https|socks5)$
# 分發到對應的backend
  use_backend socks5 if is‐proxy‐now
  use_backend http
backend socks5
  mode tcp
  timeout server 1h
  server ss 127.0.0.1:50000
backend http
  mode tcp
  server http 127.0.0.1:80

重點關注frontend和backend。
Frontend中需要編寫acl規則,配置轉發。比如,當http流量來的時候,轉發給web服務;當rdp流量來的時候,轉發給rdp服務。
Backend中需要編寫具體的操作,就是轉達到哪個目標的哪個端口。

三、思路

(1) 思路一(通用)

編寫acl規則,在四層(傳輸層)進行負載,根據協議類型進行分發,例如:遇到http流量發送給http服務,遇到rdp發送給rdp服務等。

(2) 思路二

編寫acl規則,在七層(應用層)進行負載,判斷應用類型進行分發,例如,遇到http分發到http服務,否則發送到xxx服務。

四、步驟

以思路一為例:

通過wireshark捕獲tpkt(應用層數據傳輸協議)信息

編寫acl規則路由進行流量分發

添加后端server

原始接口接管

完成

4.1 捕獲tpkt

關于tpkt可百度或查看參考鏈接
三次握手后,開始應用層數據傳輸。
使用wireshark抓包:
ssh協議:
如何分析Haproxy端口復用

前三個包為三次握手,第四個包的起始三位,便是我們需要的tpkt,例如ssh為535348。
rdp協議:030000

如何分析Haproxy端口復用速查:

協議TPKT
SSH535348
RDP030000
HTTP(GET)474554
HTTP(POS)504f53
HTTP(PUT)505554
HTTP(DEL)44454c
HTTP(OPT)4f5054
HTTP(HEA)484541
HTTP(CON)434f4e
HTTP(TRA)545241
HTTPS160301

4.2 編寫acl規則

global
defaults
  timeout connect 5000
  timeout client 50000
  timeout server 50000
frontend main
  mode tcp
  bind *:8888
# 重點:編寫acl規則進行轉發
  tcp‐request inspect‐delay 3s
  acl is_http req.payload(0,3) ‐m bin 474554 504f53 505554 44454c 4f5054 484541 434f4e 545241
  acl is_ssh req.payload(0,3) ‐m bin 535348
  acl is_rdp req.payload(0,3) ‐m bin 030000
# 設置四層允許通過
  tcp‐request content accept if is_http
  tcp‐request content accept if is_ssh
  tcp‐request content accept if is_rdp
  tcp‐request content accept
# 分發到對應的backend
  use_backend http if is_http
  use_backend ssh if is_ssh
  use_backend rdp if is_rdp
  use_backend socks5
backend socks5
  mode tcp
  timeout server 1h
  server ss 127.0.0.1:50000
backend http
  mode tcp
  server http 127.0.0.1:80
backend ssh
  mode tcp
  server ssh 127.0.0.1:22
backend rdp
  mode tcp
  server rdp 192.168.213.129:3389

該配置文件的功能是監聽8888端口,將http流量(速查表中http協議的8種tpkt)轉發到本地的80上,將ssh流量轉發到本地的22端口上,將rdp流量轉發到另一主機的3389上。

五、實驗

Target1:Ubuntu 16.04 x64

IP:192.168.213.128

開啟22端口、80端口

如何分析Haproxy端口復用

Target2:Win7 x64

IP:192.168.213.129

開啟3389端口

如何分析Haproxy端口復用

啟動haproxy,-f 指定配置文件,開啟8888端口表示啟動成功。-d:調試模式,可不加。

如何分析Haproxy端口復用

HTTP協議:訪問靶機的8888端口,流量被haproxy分發至本機的80。

如何分析Haproxy端口復用

RDP協議:訪問靶機的8888端口,流量被haproxy分發至192.168.213.129的3389。

如何分析Haproxy端口復用SSH協議:訪問靶機的8888端口,流量被haproxy分發至本機的22。

如何分析Haproxy端口復用

haproxy日志:

如何分析Haproxy端口復用

六、端口重定向

為了不影響正常的80端口的訪問,將過來的80端口流量轉發到8888端口上。這樣用戶正常訪問80端口時,流量會先轉發到8888端口上,再由haproxy轉發回80端口。

  • Linux:iptables(不需要重啟服務)

iptables ‐t nat ‐A PREROUTING ‐i eth0 ‐p tcp ‐‐dport 80 ‐j REDIRECT ‐‐to‐port 8888

訪問80可以正常訪問:

如何分析Haproxy端口復用

Haproxy日志有記錄,說明流量由80先到8888,再回到80。

如何分析Haproxy端口復用

  • Windows:netsh(需要重啟web服務)

netsh interface portproxy add v4tov4 listenport=80 connectport=8888 connectaddress=127.0.0.1

注意:如果在windows下啟用端口重定向,需要在端口啟動前添加netsh端口轉發規則。

看完上述內容,你們掌握如何分析Haproxy端口復用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

象山县| 安庆市| 玉龙| 京山县| 隆德县| 玉屏| 安化县| 南靖县| 怀来县| 天峻县| 衡阳县| 通河县| 南川市| 乌拉特后旗| 正宁县| 遂平县| 遂宁市| 屯门区| 密山市| 福鼎市| 加查县| 炉霍县| 清涧县| 房山区| 库车县| 凌海市| 磴口县| 阳西县| 遵化市| 扶风县| 铜梁县| 诸城市| 鹤壁市| 富锦市| 桐乡市| 格尔木市| 古丈县| 乌海市| 丹寨县| 河津市| 巴青县|