Control Your Linux Server Remotely with GnuPG, procmail, and PHP
建構一套機制,讓你能在安全的前提下,透過 email 與 Linux 伺服器進行交談 - 只要有 email 用戶端程式、GunPG、procmail 以及 PHP。
這樣的狀況你遇過幾次:想存取遠端伺服器,但因為它藏在防火牆後頭而無法作業 ? 當我需要存取連接在 Internet 上的 Linux 伺服器時,就常遇上這樣的狀況,所以我想要有一套系統,可透過遠端簡單 email 的方式,起始我伺服器的控管作業。
當然,這個解決方案的必要條件就是:它必須是安全的。伺服器必須只回應經過辯識與認可的傳送者 (sender);傳送到伺服器端的命令及其對應的相關輸出訊息,都必須透過線路以加密的型式傳送。為達成此安全性需求,我用的是自由/免費的 GNU Privacy Guard 以及一些非對稱的加密技術 ( 見 Sidebar 1. Asymmetric Cryptography in This Solution )。
GnuPG 乃為 OpenPGP 安全性軟體的開放源碼應用,任務在執行訊息的加密,我套用的是 GnuPG 裡免專利權的演算法 - ElGamal 加密系統。
本文旨在說明如何使用我這樣的系統,執行遠端伺服器控管,以批次模式,使用簽章且加密後的 email 達成此目的。
此處使用虛構的認證後 email sender ( sender@example.com ) 以及遠端範例伺服器 ( machine@example.com ) 提供予 sender 使用。伺服器執行的是 Debina Linux。
大致程序如下:
下面的幾個步驟即為透過 email 控制伺服器的程序:
一、建立完整的認可指令傳送之傳送者清單 ( 例如:sender@example.com )
二、讓傳送者產生透過 GnuPG 作成的私有/公開金鑰組。
三、使用 GnuPG 產生伺服器的私有/公開金鑰組 - 裡頭需含括 email address machine@example.com
四、在伺服器匯入傳送者的公開金鑰、在傳送者處匯入伺服器的公開金鑰。
五、讓傳送者將要傳至遠端伺服器的命令簽章並加密,將之嵌入至 email 裡,然後傳送至伺服器 address。
六、讓伺服器下載 email 訊息,並透過下面這樣的 script 程序處理:
.確認傳送端是否被認可。七、令傳送者讀取伺服器輸入,確認並解密該回應訊息。
.解密並執行命令
.自 stdout 與 stderr 擷取輸入,若可能的話在執行一段合理時間後,砍掉 hanging 命令。
.簽章並加密該輸出訊息,然後將之嵌入 email 裡,再將此回應傳送回傳送者 address。
第二頁:設定 GunPG
第三頁:使用 Procmail - 一套絕佳的郵件過濾程式
第四頁:最後一步:將回應傳回給 Sender
以上譯自 http://www.devx.com/opensource/Article/38547 (原文出處)
如有版權問題,請來信 (nicaliu at gmail dot com) 告知,謝謝。