2014年10月11日 星期六

ssh 遠端連線「安全性」

ssh 是一個遠端連線服務,但連上網路後,
有可能會有相當的資安風險,因此要多幾道防禦手續。

1. 安裝 ssh server。
sudo apt-get update && apt-get install ssh


2. 測試遠端連線
(-X 是支援 X11,可遠端開圖形介面程式)。
ssh -Xl Account IP
ssh -X Account@IP

舉例:
Account : userA
IP: 192.168.1.2

ssh -Xl userA 192.168.1.2
ssh -X userA@192.168.1.2
-------------------------------------------------------------------------
安全性1. 拒絕遠端直接登入 Root。
一般而言,我們使用 Root 之前,會先登入一般 User,
再用 su 指令來進入 SuperUser 權限;而拒絕 ssh 直接連 root ,意思是要遠端取得 root 權限,需要有兩組密碼才行!
(當然 root 跟一般 user 密碼要不同。)
vi /etc/ssh/sshd_config

將 「PermitRootLogin」關閉,設 no

/etc/init.d/ssh restart

詳細參考 鳥哥-簡易 Telnet 與 SSH 主機設定

安全性2. ssh 黑名單套件。
當有人嚐試遠端登入,並失敗一定次數時,
代表這位遠端使用者來者不善,我們可以把它加到:
/etc/hosts.deny 把它黑名單掉!!
安裝下面套件可以自動完成這件防禦機制:
apt-get update
apt-get install denyhosts openssh-blacklist openssh-blacklist-extra
/etc/init.d/ssh restart


更詳細設定要參考下面設定檔,
包含對方連幾次才加黑名單之類的…
vi /etc/denyhosts.conf

-------------------------------------------------------------------------
※ 技術補充
遠端控制 rsh + sshpass
※ 注意,使用 rsh  時,Server 與 Client 必需有相同之使用者帳號,
若 Server 端使用 root 權限,則 rsh 所執行的指令於 Client 端也為 root 權限。

1. 於 server 端發遠端指令的方法參考 http://jamyy.us.to/blog/2013/08/5260.html 

2. 安裝
apt-get install sshpass rsh

3. 遠端 ssh 第一次,無需打 yes ,自動更新 known_hosts 檔方法:
建一設定檔於 PXE Server 端: /root/.ssh/config
StrictHostKeyChecking no

4 遠端下指令,注意目前執行 rsh 的使用者權限:
sshpass -p <密碼> rsh <主機 IP> <指令> &

※令 ssh 連線無需輸入密碼
於 PXE Server 端,指令` ssh-keygen `產生 public key ,
並 copy 至 Client 端:/root/.ssh/authorized_keys (自行建立)的檔案內。