# 暗黑穿牆術
如何在受(防火牆)限制的環境下提供服務
---
## 基本概念介紹
----
### 防火牆
* 限制連入連出
* 在這裡以限制 IP:port 的類型為主

<span style='font-size: 20%;'>
Bruno Pedrozo - Feito por mim, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=2864257
</span>
----
### 穿牆層級
- L4(應用層):SSH、其他程式
- L3:VPN
- L2:*略*
- L1:*物理穿牆*
----
穿牆方法
* 開洞(建立 Tunnel)
* Proxy
* Relay
---
### SSH Tunnel
透過 SSH 協定轉送來自其他 port 的流量(TCP)
----
#### 適用情境
* 其他 port 被封鎖
* 任何一方的機器有開放 SSH
* Public IP
----
#### Tunnel 類型
* Local
* 遠端服務映射至本機 Port
* Remote
* 本機服務映射至遠端 Port
* Dynamic
* SOCKS Proxy
----
<div style='background-color: white;'>

</div>
<span style='font-size: 20%;'>
https://commons.wikimedia.org/wiki/File:Ssh-R-tunnel.svg
</span>
----
#### Local Tunnel
將遠端主機的服務透過隧道對應到本機,常用於連回 Lab 進行開發
```
ssh -L <local port>:<target ip>:<target port> user@domain
```
* `<local port>`: 本機提供的埠口
* `<target ip>:<target port>`: 要連線到的遠端主機 IP 與對應埠口
* 可以將其作為跳板連接
* 例:無線路由器 Web UI (192.168.0.1:80)
----
#### Remote Tunnel
將本機的流量透過隧道傳輸到遠端主機,常用於需要公開 Demo 時
```
ssh -R <target port>:<local ip>:<local port> user@domain
```
* `<target port>`: 遠端主機服務的埠口
* `<local ip>:<local port>`: 要連線到的本機 IP 與對應埠口
----
#### Dynamic Tunnel
動態意指不是從固定伺服器的流量,通常當 Proxy 使用
```
ssh -D <port> user@domain
```
* `<port>`: 要對應到的本機埠口
接著就可以將 Client 設定 SOCKS 連線使用 Proxy
---
以上前提是必須**其中一端有 Public IP**
----
沒有的話......
需要 Relay Server(透過有公開 IP 的中間人)
* A <---> B
* A <---> Relay <---> B
---
#### 相關服務與軟體
* [ngrok](https://ngrok.com)
* [cloudflare tunnel](https://developers.cloudflare.com/pages/how-to/preview-with-cloudflare-tunnel/)
---
#### 長期跨域內網?
* VPN
* Wireguard
* SSL VPN: OpenVPN
---
#### 更多
* **軟體:Tor**
* L3: Wireguard
* L2: ZeroTier
---
### Tor 簡介
深層網路之一、暗網的入口
----
#### 網路分層概念

<span style='font-size: 20%;'>
Chiaerae - Surface web and Deep web explained with iceberg chart, https://en.wikipedia.org/wiki/Deep_web#/media/File:Surface_Web_&_Deep_Web.jpg
</span>
----
#### Tor 洋蔥路由
- 全名「The Onion Router」
- 多個節點與加密技術
- 核心軟體類似於 VPN

<span style='font-size: 20%;'>
The Tor Project, Inc., https://commons.wikimedia.org/wiki/File:Tor-logo-2011-flat.svg
</span>
----
#### Tor 專用網域後綴
- `.onion`
- 網域名為演算法自動計算生成
- 基本上不可自行取名
----
#### 主要應用:[Tor 瀏覽器](https://www.torproject.org/zh-TW/download/)
- Firefox 修改而成
- 搭配 Tor 可瀏覽其中網頁

<span style='font-size: 20%;'>
The Tor Project, Inc., CC BY-SA 4.0, https://commons.wikimedia.org/wiki/File:Tor_Browser_icon.svg
</span>
----
#### 其他應用:[OnionShare](https://onionshare.org)
- 點對點檔案分享
- 建立簡易網站
- 臨時聊天室
---
### Tails
- 注重安全與隱私的作業系統
- 網路預設開啟 Tor
---
### Demo(?)
---
## END
<style>
:root {
--r-background-color: #0a2f0f;
--r-main-color: #8892b0;
--r-heading-color: #ccd6f6;
--r-link-color: #63ffb4;
--r-link-color-hover: rgb(150,255,200);
}
</style>
{"metaMigratedAt":"2023-06-18T02:27:18.170Z","metaMigratedFrom":"YAML","title":"暗黑穿牆術","breaks":true,"contributors":"[{\"id\":\"640dcc6d-b761-4cd0-95c7-20bb26add618\",\"add\":3518,\"del\":296}]"}