假設公司有一台Linux Server伺服器在機房中
而有一位系統管理員人在外面想要:
不可能每次都跑回這台伺服器電腦前方操作
所以需要:遠端存取 Remote Access
管理員 -> Internet網際網路 -> 伺服器
因為會透過網路所以就需要擔心:
如果這中間被看到怎麼辦
所以我們需要(安全遠端存取)Secure Remote Access
這是SSH(安全殼層協定)的主要用途之一
Secure Shell
安全殼層協定
簡單說就是
讓你可以透過網路安全遠端登入與管理另一台電腦
建立SSH連線可以:
Tunnel通道
簡單說就是:
網路上建立一條只有你和對方能用的秘密通道
資料在裡面傳輸,外面的人看不到
DAY24學的
TLS就是一種
還有
VPN把所有網路流量包進加密通道
SSH用SSH加密建立安全通道
先知道:
SSH=安全遠端登入/管理
SSH PORT =TCP22 (容易跟Telnet 搞混"TCP23")
Telnet 遠端終端協定
PORT在TCP23
同樣是遠端服務但與SSH不同
- 它沒有加密都是以明文顯示
- 安全性不佳
- 現在幾乎很少在用
如果有人用封包監聽可能會看到敏感資料
| Telnet | SSH | |
|---|---|---|
| 功能 | 遠端連線操作 | 遠端連線操作 |
| 加密 | 沒有 | 有加密 |
| 安全性 | 非常不安全 | 安全 |
| 現在 | 幾乎不用 | 主流 |
SSH最主要的差異就是有加密
與TLS很像:
SSH伺服器用來代表自己身分的長期金鑰
主要用來回答:
我連到的是不是原本那台Server
用戶端用它來辨識Server
當第一次SSH連接上Server時可能會看到
主機金鑰指紋
Host Key Fingerprint
指紋就是
將原本很長的主機公開金鑰計算成簡短的識別值
用意就是:
短一點比較好比對主機金鑰是不是正確
不然一大串的公開金鑰
很難檢查
指紋通常會出現在
你第一次與這台主機做SSH連線時
The authenticity of host "XXX" be established
因為是第一次連
所以電腦還沒有它的Host Key可以比對
就會出現主機金鑰讓使用者去確認
如果過去有連線過的主機通常會記住主機金鑰Host Key
通常記錄在known_host
確認完了伺服器的主機後接下來
伺服器會問:你是誰?
這就是使用者身分驗證
常見有:
- 密碼驗證
- 公開金鑰驗證
OverTheWire的Bandit就是用這種密碼驗證的方式來做每一關的Flag
overthewire bandit
例如:
ssh bandit@bandit.labs.overthewire.org -p 2220
輸入後 會要求第0關的密碼
bandit@bandit.labs.overthewire.org's password:
這時候輸入第0關密碼
bandit0bandit0
就會成功SSH進入
這就是使用者身分驗證中其中的密碼驗證
缺點
密碼本身可能有被猜到的風險
例如:
弱密碼
密碼重複使用
暴力破解攻擊
資訊竊取
所以SSH有加密不代表密碼本身安全
DAY12.DAY13有提過
使用
公鑰與私鑰
客戶端:保存私鑰
伺服器端:保存使用者公鑰
伺服器不需要拿到私鑰
只需要確認與自己的使用者公鑰有沒有一樣
例如:
Server知道:
MIKEY的公鑰
可以用公鑰出一個只有私鑰能回答出的題目
現在有人說:
我是MIKEY
Server會要求對方:
證明你有MIKEY的私鑰
客戶端使用私鑰驗證
電腦用私鑰解題回傳答案
伺服器再用公鑰驗證
伺服器用公鑰來看答案對不對
一樣不是絕對安全
如果私鑰被偷走,攻擊者就可能利用它
所以私鑰需要:
- 妥善儲存
- 限制檔案權限
- 避免分享
- 遺失或外洩時撤銷/更換
DAY11有記到特權存取管理PAM和即時權限JIT
假設管理員維護伺服器:
系統管理員
SSH解決連線安全
PAM解決誰可以使用特權
JIT解決特權可以使用多久
SSH File Transfer Protocol
SSH檔案傳輸協定透過SSH機制來安全傳輸檔案
SFTP決定怎麼打包怎麼傳檔案
因為是建立在SSH協定之上所以PORT也是22
IPAS 115-1 Q6
SSH主要運作於 (資料連結層),並負責對區域網路的MAC位址進行加密,防止 Spoofing(ARP 欺騙)
為什麼錯?
- SSH 不是資料連結層的MAC保護協定
- SSH(安全殼層協定)安全遠端存取
- SSH是應用層的協定
- 防範ARP欺騙攻擊
- ARP主要發生在第2層而SSH是運作在第7層