FRP指定訪問者:安全地暴露內網服務
之前的教程介紹的frp內網穿透都是用tcp模式,但是tcp模式是直接把埠對映到公網IP上,很容易被掃描,還是存在一定的風險。我們可以使用frp提供的stcp模式來避免公開暴露埠,要求訪問者執行一個frpc作為身份認證和流量轉發,把 訪問者的本地埠繫結到內網frpc服務上。不再公開對映內網frpc埠。 |
作為中間傳輸的伺服器端的frps配置不變,參考之前的文章,如果想自定義其他埠,注意兩端的frpc中的"server_addr"、"server_port"引數要一致。frps用到的埠要在防火牆或者寶塔那裡放行。
[common] bind_port = 7100 token=12310086N dashboard_port = 7501 dashboard_user = admin dashboard_pwd = admin123
stcp模式的演示,我們以windwos的 遠端桌面為例,不再直接把內網的3389埠對映到公網IP的埠上,而是透過stcp模式指定驗明訪問者分身,要求訪問者也要執行一個frpc 作為身份校驗和流量轉發,讓訪問者 把訪問本地埠的請求轉發到內網機器上。
frpc兩端分為外部的 "控制端"和處於內網中的 "受控端"。
編輯 fcpc.ini檔案。服務[secret_rdp]之類的服務名可以自定義,見名知意即可。
[common] server_addr = 伺服器ip server_port = 7100 token=12310086N [secret_rdp] type = stcp sk = 58iD9tfjPIHQ0dWO local_ip = 127.0.0.1 local_port = 3389
frpc.exe -c frpc.ini
編輯 fcpc.ini檔案,服務[secret_rdp_visitor]之類的服務名可以自定義,見名知意即可。
[common] server_addr = 伺服器ip server_port = 7100 token=12310086N [secret_rdp_visitor] type = stcp role = visitor sk = 58iD9tfjPIHQ0dWO server_name = secret_rdp bind_addr = 127.0.0.1 bind_port = 30009
frpc.exe -c frpc.ini
兩端都顯示連線成功了,frp的線上皮膚裡也看到stcp中多了"secret_rdp"一個連線記錄。
控制端啟動連線成功時候也會看到frps出現連線成功的日誌。
我們在外網的控制端,開啟遠端桌面,輸入 "127.0.0.1:30009",就彈出來連線成功的登入介面了。
原理兩端的frpc啟用的stcp模式,就是要求frps把一端訪問本地埠的請求轉發到內網frpc上。一端必須執行訪客模式的frpc表明身份才會被frps接納再轉發。
受控端中frpc讀取配置檔案:
- “[secret_rdp]”服務中,以stcp模式,把受控端本地的3389轉發到伺服器的frps上。
- "sk"是stcp服務的金鑰,兩端中的"sk"不匹配,不允許連線。
- 受控端stcp模式以 服務名的形式匹配連線,不需要對映到公網IP的埠上,也不再需要remote_port。
控制端中的配置:
- [secret_rdp_visitor]服務中"role=visitor"是指定本機的服務為"訪問者"的stcp模式。
- "sk"金鑰。
- 控制端中的“server_name”是指定要連線的 受控端中的服務名,服務名必須一致。
- 控制端中的"bind_addr"必須是"127.0.0.1"。
- "bind_addr"、"bind_port"這兩個引數是指本地埠。指定本地frpc轉發要透過frps和受控端連線的 本地埠。
- frps啟動,等著兩端frpc的stcp轉發配置。
- 受控端frpc啟動,讀取配置檔案:服務名 [secret_rdp]以stcp模式,將本地的3389埠轉發到frps上。
- 控制端frpc讀取配置檔案和frps連線。
- 控制端frpc的配置指定"sk"金鑰和受控端的服務名,要frps把 控制端本地30009埠和受控端的[secret_rdp]服務繫結上。
- 控制端訪問本地30009埠,請求被控制端的frpc轉發到frps上,frps再將請求轉發到受控端的[ secret_rdp]服務上。
- 受控端[ secret_rdp]服務裡也指明瞭受控端哪些埠來接收響應處理被轉發請求。
流程就是frpc指定使用stcp訪問,要求校驗正確身份和服務名後再轉發請求,把 訪問者的本地埠繫結到內網frpc服務上。不再直接把受控端對映到公網埠上,也避免因為公開被掃描的風險,安全的暴露內網服務。
表達水平有限,多讀幾遍上面的步驟,就是把 訪問者的本地埠繫結到內網frpc服務上,這一套下來比較繞,如果沒看懂,照著教程操作一次,理解了就豁然開朗了。
同時也可以著手實踐安全的暴露其他的內網服務,比如MySQL:指定控制端訪問本地的33306埠的響應由內網的MySQL 3306響應。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2775645/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- frp免費內網穿透訪問家用電腦本地服務(http示例)FRP內網穿透HTTP
- frp內網穿透,客戶端能訪問,服務端訪問報錯404,有兄弟遇到過嗎FRP內網穿透客戶端服務端
- linux之frp服務部署(內網穿透)LinuxFRP內網穿透
- frp實現內網穿透--支援80埠訪問FRP內網穿透
- docker內服務訪問宿主機服務Docker
- 如何實現在家訪問公司內網服務內網
- frp + nginx 配置多人共用的http 內網穿透服務FRPNginxHTTP內網穿透
- frp實現NAS外網訪問FRP
- 如何安全地訪問網際網路
- Frp內網穿透搭建,家庭主機對外提供介面,支援ssh訪問FRP內網穿透
- FRP 內網穿透FRP內網穿透
- 使用frp進行內網穿透,實現ssh遠端訪問Linux伺服器FRP內網穿透Linux伺服器
- FRP搭建內網穿透FRP內網穿透
- FRP 內網穿透、反向代理FRP內網穿透
- frp 實現內網穿透FRP內網穿透
- frp與nginx結合,實現內網裝置的ssh,遠端桌面和http訪問FRPNginx內網HTTP
- 配置ACL在網路服務中訪問控制
- ubuntu系統docker部署java後端服務和redis時,內網不能訪問UbuntuDockerJava後端Redis內網
- 日誌服務之分析使用者訪問行為
- kubernetes如何訪問pod服務
- 配置 frp 實現內網穿透FRP內網穿透
- 使用frp實現內網穿透FRP內網穿透
- frp內網穿透(已驗證)FRP內網穿透
- 內網穿透—使用 frp 實現內外網互通內網穿透FRP
- 外網如何透過https訪問自己的服務HTTP
- 在kubernetes 叢集內訪問k8s API服務K8SAPI
- Dubbo服務暴露原始碼解析②原始碼
- Cloudflare DNS 服務中斷,大量網站和服務無法訪問CloudDNS網站
- 零信任內網安全訪問內網
- 容器服務 TKE 上服務暴露的幾種方式
- 如何使用RestTemplate訪問restful服務REST
- 如何使用 frp 實現內網穿透FRP內網穿透
- frp 實現內網穿透(Windows 版)FRP內網穿透Windows
- Windows限制訪問指定IPWindows
- 如何從公網訪問內網Django內網Django
- 在自己的域名網站安裝Kubernetes並暴露服務網站
- Dubbo原始碼分析之服務暴露原始碼
- nginx對訪問路徑進行限制【部分介面可以內外網訪問、剩餘介面只可以內網訪問】Nginx內網