用 LDAP Server 管理 SSH Key login – 管理篇

這一篇主要是延續前篇設定篇,在各 Server 設定都準備好後,剩下就是簡單的介紹以 phpldapadmin 來管理 users/groups/sudoers 這些基本的 Unix 帳戶控管。

本篇的內容會有

  • 建立用戶群組及用戶的基本密碼認證方式
  • 使用 SSH Public Key 方式認證
  • 用戶加入多群組的方式
  • 設定用戶 sudo 權限的方式

再看一下前篇設定篇寫的架構圖

ldap-net

phpldapadmin 我是架設在 192.168.88.14,所以 url 是 http://192.168.88.14/ldapadmin,一開始成功登入後會看到如下圖

phpldapadmin1在左邊選單有個 dc=my-domain ... 底下建立新記錄給它按下去

phpldapadmin2如上圖點了之後,我們要選擇 Generic: Organisational Unit 來建立 ou , 這個 ou 必須建立 users , groups , sudoers , 也就是作三次

phpldapadmin3

上圖建立好後,就看見三個 ou , 這就類似 Unix 的帳戶分類法了,接下來就是分別在這三個 ou 作操作。

group 的建立

這是第一個步驟,因為在建立 user 的階段會至少需要指定一個 group,所以必須先建立,方法很簡單,就是在 ou=groups 上建立子記錄,如下面四張圖的步驟

phpldapadmin4

phpldapadmin5

phpldapadmin6

phpldapadmin7

現在建立了一個名稱叫 test_group 的群組,預設 GID Number 是 500 , 這可以進去改成其它數字,這個 GID Number 就是 Unix 的 group id 啦。

user 的建立

建立 User 就和建立 Group 一樣的步驟,如下圖,選擇 ou=users ,再建立子記錄的步驟要選擇 Generic : User Account

phpldapadmin8

 

phpldapadmin9

這表單最主要是 User ID ,這個欄位就是登入的帳號了,預設 UID Number 是 1000 , 這以後都可以改的,GID Number 是之前建立的群組,也可以設定 Home Directory 和 Login Shell ,這些都是基本的 Linux 對應的欄位,應該不難理解。

這樣就行了。

測試登入後的狀況

現在直接用 SSH Client 來測試,如果正常,會如下圖一樣

phpldapadmin10

太棒了,由於前篇有設定自動建立家目錄,所以這次第一次登入時確實有自動建立家目錄。現在已經知道 ldap 認證方式是正常運作了。

設定 user 使用 SSH Public key 的方式登入

這裡就不說明如何產生 KEY 了,Google 上很多用 SSH KEY 方式登入的教學,換作用 LDAP 的方式也一樣

我先回頭看看剛剛建立的用戶 test_user1 資料

phpldapadmin11

上圖中 objectClass 的部分,我們需要先增加一個叫 ldapPublicKey 才行

phpldapadmin12

phpldapadmin13

將我們的 public key 輸入後就行了,基本上我是用 putty gen 來產生的,例如將下圖紅框的部分 copy 貼到上圖的 sshPublicKey 的欄位就行了。

phpldapadmin14

接著我們就可以用 putty 載入我們的 private key 來試著登入了

phpldapadmin15

太棒了,現在已經完全可以集中管理每個帳戶使用密碼或 SSH Key 了。

用戶加入多群組方式

在 phpldapadmin 中用戶的屬性只能輸入一組 gidNumber,這個 gidNumber,我們可以看作是 primary group,也就是主要的群組。

而要讓用戶加入到其他群組,必須直接在群組的地方設定,我們之前已經建立一個 test_user1 ,而 gidNumber 是 500 也就是 primary group 是 test_group,如果我們還有一個 test_group2 的群組,要將 test_user1 加入到 test_group2,就必須在 test_group2 上作,照下面圖示步驟

phpldapadmin19

在群組中新增一個 memberUid ,輸入帳號名稱即可,接在我們在另一台 Linux 採用 LDAP  認證的 Server 重新以 test_user 登入,並且下 groups 命令,應該會得到以下結果

login as: test_user1
Authenticating with public key "rsa-key-20150712"
Last login: Sun Jul 12 01:31:22 2015 from 192.168.88.127
[test_user1@ldap ~]$ groups
test_group test_group2

成功了, test_user1,確實加入到了 test_group2 了.

 

sudo 的設定方式

sudo 的建立方式必須建個 ou=sudoers。

建立 sudo user 的方式如下

phpldapadmin20

phpldapadmin21

弄好後,回到 console 下 sudo -l 看看是否生效

[test_user1@server1 ~]$ sudo -l
[sudo] password for test_user1:
Matching Defaults entries for test_user1 on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User test_user1 may run the following commands on this host:
    (root) ALL

看起來生效了,這個 user 可以用 sudo 執行任何命令了。

 

結語

寫了設定篇和管理篇累死人了,我並不是專業的網管,所以在不熟的情況下寫了好幾天,不斷找資料,驗證,我寫的文章中並沒有交待更深入的設定,例如設定 LDAP 的 Master/Slave 及使用 SSL 的方式傳輸會相對安全,更進階的可能要使用到 ACL 來限制用戶能幹些什,這些應該 Google 都找的到,我寫的就是基本的,千萬不要以為我寫得非常完整了,因為作到這樣的程度,其實非常的不夠,例如登入成功的用戶基本上可以拿到別人的 public key ,至於何時會被解密就不得而知,這方面我也不夠深入,也許改天我真的要買一本書來研究看看。

發佈留言