close

因為手上FreeBSD機器數太多, 想整合一下登入帳號, 於是有了這篇.

 

1. 架構

    A. FreeBSD支援PAM
    B. PAM中有pam_ldap
    C. 有LDAP (AD在這邊無法比照辦理)
    D. 所以架構是FreeBSD ---透過PAM---> LDAP認證

2. 安裝

    A. 安裝nss_ldap
        cd /usr/ports/net/nss_ldap && make install clean
    B. 安裝pam_ldap
        cd /usr/ports/security/pam_ldap && make install clean
    C. 安裝pam_mkhomedir, 讓LDAP user在local端沒有home dir.時可以自動產生.
        cd /usr/ports/security/pam_mkhomedir && make install clean

3. 設定

    A. ldap.conf: 在/usr/local/etc下會有ldap.conf.dist把他複製/更名為ldap.conf
        mv /usr/local/etc/ldap.conf.dist /usr/local/etc/ldap.conf

    B. 在ldap.conf中, 設定以下欄位
        host ldap.example.com (依你的LDAP DN or IP)
        base ou=users,dc=ldap,dc=example,dc=com (依你的LDAP規畫)
        uri ldap://ldap.example.com/ (依你的LDAP DN or IP)
        rootbinddn cn=manager,dc=ldap,dc=example,dc=com (要用什麼帳號登入LDAP進行查詢)
        port 389 (預設即為port 389)
        scope one (設定搜尋範圍)
        bind_policy soft (設定連線失敗時的動作)
        pam_filter objectclass=posixAccount (這邊是過濾的選項,可以用來決定那些種類的帳號可以進行認證)
        pam_login_attribute uid (設定要用什麼欄位的資料當做帳號, 也可以是cn, display ...etc.)

    C. 設定ldap client登入用的密碼
        ee /usr/local/etc/ldap.secret (直接把ldap.conf中對應rootbinddn帳號的密碼寫入後存檔)
        chmod 400 /usr/local/etc/ldap.secret (因為有密碼, 所以改為只有root可以讀)

    D. 生出nss_ldap.conf與nss_ldap.secret: 由於ldap.conf與nss_ldap.conf設定完全相同, secret檔也是, 所以用ln的
        ln -s /usr/local/etc/ldap.conf /usr/local/etc/nss_ldap.conf
        ln -s /usr/local/etc/ldap.secret /usr/local/etc/nss_ldap.secret 

    E. 修改/etc/nsswitch.conf
        預設的 group_compat 是 group_compat: nis 改成 group_compat: ldap nis
        預設的 passwd_compat 是 passwd_compat: nis 改成 passwd_compat: ldap nis

    F. 修改本機帳號檔與群組檔: /etc/master.passwd與/etc/group
        vipw
        在最下面加入 +:*::::::::
        ee /etc/group
        在最下面加入  +:*::

    G. 測試: 這時應該可以測試一下是否抓得到LDAP user了
        id ldap_user_account
        如果出現帳號uid, gid等資訊, 就是成功了.
        如果出現no such user, 就是連線失敗, 要再檢查以上設定.

    H. 設定ssh 登入
        ee /etc/pam.d/sshd 在auth 那一段中的最上面加入以下
        auth            sufficient      /usr/local/lib/pam_ldap.so      no_warn try_first_pass
        
在session 那一段中加入以下
        session        required        /usr/local/lib/pam_mkhomedir.so

    I. 設定本機登入: 修改內容比照上一步
        ee /etc/pam.d/login

    J. 試著在本機與透過SSH登入看是否能夠登入, 而登入後是否會自動建立家目錄.

arrow
arrow

    lychen 發表在 痞客邦 留言(0) 人氣()