如何免密碼登入Moodle伺服器並提高後台管理安全性?

Q:

如何提高 Moodle 主機(Linux)的安全性, 一直是重要的議題。這次談的是主機管理的部份;如何讓我們的 Moodle 主機更安全的管理?

要介紹給大家的是,只接受公開金鑰認證(Public Key Authentication)的方式,不用打帳號/密碼就可以登入 Moodleo伺服器 (經由 SSH 方式)。

A:

Step 1

在 Linux(管理端) 上產生 SSH 登入用的金鑰,可以使用 ssh-keygen 這個指令。在建立金鑰之前,要先建立 ~/.ssh 這個目錄,並設定 700 權限:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

接著用 ssh-keygen 產生金鑰

ssh-keygen # or ssh-keygen -t rsa 選擇 RSA 的加密演算法

在產生金鑰的過程中,會詢問一些問題,對於一般的使用者而言,全部都使用預設值(直接按下 Enter 鍵)即可。

Generating public/private rsa key pair.

Enter file in which to save the key (/home/seal/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/seal/.ssh/id_rsa.

Your public key has been saved in /home/seal/.ssh/id_rsa.pub.

The key fingerprint is:

c7:tt:98:xx:02:91:yy:db:12:96:zz:9d:dd:91:aa:25 seal@moodle.com.tw

The key's randomart image is:

+--[ RSA 2048]----+

| .=O.+oo |

| *.+ .o |

| E ++ o . |

| = S o |

+-----------------+

PS: seal 是我們業務部同事的帳號, 就是為了方便給他管理 Moodle 企業展示站台(不用一直來找我... :-), 要開帳號給他,這個方法不用知道(他要設定的)密碼(我也不想知道...)


這個步驟會產生兩個檔案: id_rsa.pub (公開金鑰-public key), 另一個是 id_rsa (私鑰-private key)。

Step 2

接著將上一步產生的 公鑰複製到 Moodle 的伺服器上。以下兩種方式擇一即可。

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST # or ssh-copy-id USER@HOST 也是一樣的

另外一個方式

ssh USER@HOST 'mkdir -p ~/.ssh;cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

兩種方式都可以將公開金鑰放在 authorized_keys 內。

以上步驟完成後,就可以不用打密碼就登入 Moodle 伺服器了。

停用密碼驗證

在 Moodle 伺服器的部份,如果要全面停用密碼驗證(用公鑰驗證),避免一些亂猜密碼的攻擊。

請在 /etc/ssh/sshd_config 中修改以下參數:

PasswordAuthentication no

PubkeyAuthentication yes

存檔後,重啟 sshd 即可生效。

systemctl restart sshd

等一下!!! 請注意, 這樣的方式要先留意自己的金鑰是否設定正確? 確認可以不需要密碼登入之後才進行這樣的設定;否則停用密碼登入之後,如果沒有金鑰或是沒有將公開金鑰放在 Moodle server上,就會完全無法登入該 Moodle 伺服器!!! 請小心