Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

1. Giới thiệu 

Trong tương lai không xa, phần mềm mã nguồn mở và miễn phí rất có thể sẽ trở thành một lựa chọn tất yếu đối với các tổ chức/doanh nghiệp. Với ưu điểm mã nguồn mở, dễ dàng mở rộng, hoạt động ổn định… lĩnh vực ứng dụng này đang ngày càng chứng tỏ tính khả dụng và hiệu quả của nó.

Hầu hết các tổ chức/doanh nghiệp đều cần đến một hệ thống mạng nội bộ để hỗ trợ xử lý công việc thường ngày, điều hành hoạt động, phối hợp làm việc…

Bài viết sẽ hướng dẫn các bước xây dựng hệ thống mạng Ubuntu quản lý tập trung với LDAP, một giải pháp hoàn toàn có thể thay thế hệ thống mạng Microsoft Windows với Active Directory.
2. Yêu cầu hệ thống 

Chúng ta sử dụng 03 máy tính với thông tin như sau:

  • Máy tính Ubuntu server:
    • Địa chỉ IP: 192.168.10.2
    • DNS server: 192.168.10.2
    • Tên máy: ubuntu-server
  • Máy tính Ubuntu desktop 01:
    • Địa chỉ IP: 192.168.10.12
    • DNS server: 192.168.10.2
    • Tên máy: ubuntu-desktop01
  • Máy tính Ubuntu desktop 02:
    • Địa chỉ IP: 192.168.10.14
    • DNS server: 192.168.10.2
    • Tên máy: ubuntu-desktop02

3. Cấu hình hệ thống

3.1. Cấu hình ubuntu-server

Trên máy ubuntu-server, chúng ta thực hiện:

  • Cài đặt và cấu hình DNS server với phần mềm BIND.
    • Domain name: bits.com.vn
    • Bổ sung 02 Host (A) record tương ứng với 02 máy trạm Ubuntu vào DNS server:

      ubuntu-desktop01.bits.com.vn 192.168.10.12
      ubuntu-desktop02.bits.com.vn 192.168.10.14

  • Cài đặt và cấu hình LDAP server với phần mềm OpenLDAP.
    • Bổ sung 02 account tương ứng với 02 máy trạm Ubuntu vào LDAP server:

      Account 01 – tthai:********
      Account 02 – ctbach:********

Các bước thực hiện lần lượt như sau:

Cài đặt và cấu hình DNS server với phần mềm BIND

1. Cài đặt Ubuntu server, phiên bản 7.10 

Trong quá trình cài đặt, thiết lập các thông số sau:

  • Địa chỉ IP: 192.168.10.2
  • DNS server: 192.168.10.2
  • Netmask: 255.255.255.0
  • Tên máy: ubuntu-server
  • Phần mềm: chọn các gói cài đặt cho DNS server

2. Cấu hình DNS server 

Phần mềm dùng để xây dựng DNS server trên Ubuntu là BIND (Berkeley Internet Name Domain). Chúng ta sẽ thao tác trên các file của BIND để cấu hình DNS server. Các bước thực hiện như sau:

   [email protected]:~# vim /etc/bind/named.conf

// The zone definition
zone “bits.com.vn” {
type master;
file “/etc/bind/zones/bits.com.vn.db”;
};
// The zone definition for reverse DNS
zone “10.168.192.in-addr.arpa” {
type master;
file “/etc/bind/zones/rev.10.168.192.in-addr.arpa”;
}; 

Hiệu chỉnh file /etc/bind/named.conf.options để chuyển (forward) những yêu cầu mà DNS server này không phân giải được:

   [email protected]:~# vim /etc/bind/named.conf.options
options {

forwarders {
10.238.200.1;
10.238.200.8;
10.238.200.12;
};
}; 

Tạo các file zone:

  • /etc/bind/zones/bits.com.vn.db: dùng cho việc lưu trữ các cặp IP address/machine name để DNS server này phân giải.
  • /etc/bind/zones/rev.10.168.192.in-addr.arpa: dùng cho mục đích phân giải ngược.

    [email protected]:~# mkdir /etc/bind/zones
    [email protected]:~# vim /etc/bind/zones/bits.com.vn.db
    $TTL    604800
    @       IN    SOA   ubuntu-server.bits.com.vn. admin.bits.com.vn. (
    1         ; Serial
    604800    ; Refresh
    86400     ; Retry
    2419200   ; Expire
    604800)   ; Negative Cache TTL
    ;
    ; Replace the following line as necessary:
    ; ns1 = DNS server name
    ; mail = Mail server name
    ; bits.com.vn. IN MX 10 mail.bits.com.vn.

    @       IN    NS    ubuntu-server.bits.com.vn.
    @       IN    A     192.168.10.2
    ubuntu-server.bits.com.vn. IN    A     192.168.10.2

    [email protected]:~# vim /etc/bind/zones/rev.10.168.192.in-addr.arpa
    ; The number before IN PTR ubuntu-server.bits.com.vn is
    ; the machine address of the DNS server. In this case, it’s
    ; 2, as my IP address is 192.168.10.2.

    $TTL    604800
    @       IN    SOA   ubuntu-server.bits.com.vn. admin.bits.com.vn. (
    1         ; Serial
    604800    ; Refresh
    86400     ; Retry
    2419200   ; Expire
    604800)   ; Negative Cache TTL
    ;
    @       IN    NS    ubuntu-server.bits.com.vn.
    2       IN    PTR   ubuntu-server.bits.com.vn.

Hiệu chỉnh file /etc/resolv.conf để liệt kê danh sách các DNS server trong mạng của mình:

   [email protected]:~# vim /etc/resolv.conf
search bits.com.vn
nameserver 192.168.10.2

  • Khởi động lại dịch vụ BIND:

       [email protected]:~# /etc/init.d/bind9 restart

  • Kiểm tra DNS server với tiện ích dig (domain information groper). dig là tiện ích truy vấn dữ liệu trên DNS server (DNS lookup utility). Tiện ích này sẽ tìm kiếm trên DNS server và hiển thị thông tin do DNS server trả về.

       [email protected]:~# dig bits.com.vn 

    Bên cạnh đó, chúng ta cũng cần sử dụng tiện ích ping để kiểm tra:

       [email protected]:~# ping bits.com.vn
    [email protected]:~# ping ubuntu-server
    [email protected]:~# ping ubuntu-server.bits.com.vn

 

Cài đặt và cấu hình LDAP server với phần mềm OpenLDAP

1. Cài đặt OpenLDAP

Phần mềm dùng để xây dựng LDAP server trên Ubuntu là OpenLDAP. Chúng ta sẽ cài đặt các phần mềm và tiện ích cần thiết để thiết lập LDAP server, bao gồm:

  • slapd (OpenLDAP Server – OpenLDAP standalone server): phần mềm này được dùng để tạo ra một standalone directory service và bao gồm cả slurpd replication server.
  • ldap-utils (OpenLDAP Utilities): gói này chứa các tiện ích dùng để truy cập LDAP server cục bộ hoặc từ xa (local or remote). ldap-utils cũng chứa tất cả các chương trình cần thiết (required client programs) để truy cập các LDAP server.
  • db4.2-util (Berkeley v4.2 Database Utility): gói này chứa các công cụ (tools) được dùng để thao tác (manipulating) với các cơ sở dữ liệu có định dạng là Berkeley v4.2 Database.

Các bước thực hiện như sau:

2. Cấu hình LDAP server 

Chúng ta sẽ thao tác trên các file của OpenLDAP để cấu hình LDAP server. Các bước thực hiện như sau:

  • Sao chép dự phòng các file của OpenLDAP:   [email protected]:~# cp -R /etc/ldap /backup 
  • Sử dụng tiện ích slappasswd để mã hóa mật khẩu admin và lưu chuỗi ký tự mã hóa vào cuối file /etc/ldap/slapd.conf:   [email protected]:~# slappasswd >> /etc/ldap/slapd.conf
    New password:
    Re-enter new password:
  • Cấu hình OpenLDAP:Hiệu chỉnh file /etc/ldap/slapd.conf (file cấu hình chính của OpenLDAP) như sau:

       [email protected]:~# vim /etc/ldap/slapd.conf
    suffix     “dc=bits,dc=com,dc=vn”
    rootdn     “cn=admin,dc=bits,dc=com,dc=vn”
    # password này do tiện ích ldappasswd tạo ra.
    rootpw     {SSHA}AwiGYep3HmBbL5rQka4Bchd4g8ofhnXC
    directory  “/var/lib/ldap”

    # Set change password permission
    access to attrs=userPassword,shadowLastChange
    by dn=“cn=admin,dc=bits,dc=com,dc=vn” write
    by anonymous auth
    by self write
    by * none

    # Ensure read access to the base for things like
    # supportedSASLMechanisms.
    access to dn.base=“” by * read

    # The admin dn has full write access, everyone else can
    # read everything.
    access to *
    by dn=“cn=admin,dc=bits,dc=com,dc=vn” write
    by * read

    Lưu ý: giữ lại những thiết lập mặc định của file /etc/ldap/slapd.conf không được đề cập ở trên.

  • Khởi chạy standalone LDAP server:   [email protected]:~# /etc/init.d/slapd start
    Starting OpenLDAP: slapd

    Đến bước này, LDAP server đã sẵn sàng. Để bắt đầu đưa server này vào hoạt động, chúng ta cần bổ sung các entry (thực thể – user, group, ou…) khởi tạo trên server.

  • Bổ sung các initial entry (thực thể khởi tạo):LDAP server có thể bổ sung các entry bằng câu lệnh hoặc từ các file có định dạng ldif (ldap directory interchange format). Dưới đây, chúng ta tạo ra file init.ldif và lưu vào thư mục /etc/ldap.

       [email protected]:~# vim /etc/ldap/init.ldif
    dn: dc=bits,dc=com,dc=vn
    objectClass: dcObject
    objectClass: organizationalUnit
    dc: bits
    ou: bits.com.vn

    dn: cn=admin,dc=bits,dc=com,dc=vn
    objectClass: simpleSecurityObject
    objectClass: organizationalRole
    cn: admin
    description: LDAP administrator
    userPassword: {SSHA}AwiGYep3HmBbL5rQka4Bchd4g8ofhnXC

    dn: ou=users,dc=bits,dc=com,dc=vn
    objectClass: organizationalUnit
    ou: users

    dn: ou=groups,dc=bits,dc=com,dc=vn
    objectClass: organizationalUnit
    ou: groups

    dn: cn=ktm,ou=groups,dc=bits,dc=com,dc=vn
    objectClass: posixGroup
    cn: ktm
    gidNumber: 5000

          Lưu ý: UID/GID trong bài viết này được thiết lập theo qui định sau:

    • System account: UID < 500
    • Real People in LDAP: 499 < UID < 10.000
    • Local users, groups (not in LDAP): UID > 10.000

Thực hiện các bước như sau để bổ sung entry vào LDAP server:

      Dừng dịch vụ LDAP:
     [email protected]:~# /etc/init.d/slapd stop

      Xóa nội dung đã tự động tạo ra trong khi cài đặt OpenLDAP:
     [email protected]:~# rm -rf /var/lib/ldap/*

      Bổ sung entry mới:
     [email protected]:~# slapadd -l init.ldif

      Hiệu chỉnh quyền trên cơ sở dữ liệu:
     [email protected]:~# chown -R openldap:openldap /var/lib/ldap

      Khởi chạy dịch vụ LDAP:
     [email protected]:~# /etc/init.d/slapd start

  • Kiểm tra các entry vừa bổ sung:Chúng ta có thể kiểm tra các entry vừa mới bổ sung vào bằng cách sử dụng tiện ích ldapsearch:

       [email protected]:~# ldapsearch –xLLL –b “dc=bits,dc=com,dc=vn”

    Trong đó:

    • -x: không sử dụng phương thức thẩm định  SASL (mặc định).
    • -LLL: vô hiệu hoá việc in thông tin LDIF.
    • -b: tìm kiếm cơ bản.

Nếu các thao tác bổ sung entry vào LDAP server được thực hiện một cách chính xác, tiện ích ldapsearch sẽ hiển thị thông tin về các entry này tương tự như nội dung đã tạo trong file /etc/init.ldif.

Với các bước cấu hình như trên, chúng ta đã hoàn thành thao tác cài đặt và cấu hình LDAP server trên máy tính ubuntu-server. Tiếp theo, chúng ta tiến hành các thao tác cài đặt và cấu hình các hệ thống máy trạm Ubuntu.

3.2. Cấu hình ubuntu-desktop01

Để máy trạm đăng nhập với tài khoản được tạo ra trên LDAP server, chúng ta cần thực hiện các bước cấu hình trên các file PAM (Pluggable Authentication Modules) và NSSWITCH (Name Service Switch) trong Ubuntu. Các bước thực hiện như sau:

1. Cài đặt LDAP client 

Các phần mềm và tiện ích cần phải cài đặt trên máy trạm Ubuntu là:

  • libpam-ldap: thư viện dùng để cho phép xác thực (allow for authentication) qua LDAP.
  • libnss-ldap: thư viện dùng để cho phép truy vấn thông tin về các session (allow session information) qua LDAP.
  • nss-updatedb: tiện ích dùng để tạo ra một cơ sở dữ liệu tài khoản cục bộ (local database of the user names). Cơ sở dữ liệu này được dùng để khắc phục trường hợp mạng bị giảm tốc độ truy cập (network slowdown), hoặc bị ngưng hoạt động vì sự cố (outage).

Các bước thực hiện như sau:

  • Cập nhật danh mục phần mềm (package list) trên Ubuntu và cài đặt libpam-ldap, libnss-ldap và nss-updatedb:   [email protected]:~$ sudo -i
    [sudo] password for ctbach:
    [email protected]:~#
    [email protected]:~# aptitude update
    [email protected]:~# apt-get install libpam-ldap

    Khi cài đặt thư viện này, chúng ta cần cung cấp các thông số:

    • LDAP Server Uniform Resource Identifier: ldap://192.168.10.2
    • Distinguished name of the search base: dc=bits,dc=com,dc=vn
    • LDAP version to use: 3
    • LDAP account for root: cn=admin,dc=bits,dc=com,dc=vn
    • LDAP root account password: ******
    • [email protected]:~# apt-get install libnss-ldap

Khi cài đặt thư viện này, chúng ta cần cung cấp các thông số:

  • LDAP account for root: cn=admin,dc=bits,dc=com,dc=vn
  • LDAP root account password: ******

Chú ý: một hộp thoại xuất hiện, thông báo rằng hệ thống không thể quản lý file nsswitch.conf một cách tự động. Chúng ta nhấn nút OK và sẽ thay đổi cấu hình của file này ở phần sau.

   [email protected]:~# apt-get install nss-updatedb

 

2. Cấu hình LDAP client

Chúng ta sẽ thao tác trên các file của PAM và NSSWITCH để cấu hình LDAP client. Các bước thực hiện như sau:

  • Sao chép dự phòng các file của PAM và NSSWITCH:   [email protected]:~# mkdir /backup
    [email protected]:~# cp /etc/nsswitch.conf /backup
    [email protected]:~# cp -R /etc/pam /backup
  • Cấu hình NSSWITCH:Hiệu chỉnh file /etc/nsswitch.conf (file cấu hình chính của NSSWITCH). File này xác định các name service mà hệ thống sử dụng để truy vấn thông tin (search for information). File này cũng chỉ ra thứ thự của các name service để hệ thống ưu tiên tìm kiếm theo một thứ tự đã được lập ra.

       [email protected]:~# vim /etc/nsswitch.conf
    passwd: files ldap
    group: files ldap

    Kiểm tra cấu hình vừa thiết lập bằng cách thực hiện 02 lệnh:

       [email protected]:~# getent passwd
    [email protected]:~# getent group

    02 lệnh trên sẽ liệt kê mật khẩu và các nhóm trên Ubuntu desktop và trên LDAP server.

  • Cấu hình PAM:Có 04 file cấu hình của PAM liên quan đến LDAP:
    • /etc/pam.d/common-account
    • /etc/pam.d/common-auth
    • /etc/pam.d/common-password
    • /etc/pam.d/common-session

Hiệu chỉnh các file này theo các bước như sau:

    • [email protected]:~# cd /etc/pam.d
    • [email protected]:/etc/pam.d# vim ./common-account
      account   sufficient    pam_ldap.so
      account   required      pam_unix.so
    • [email protected]:/etc/pam.d# vim ./common-auth
      auth      sufficient    pam_ldap.so
      auth      required      pam_unix.so nullok_secure use_first_pass
    • [email protected]:/etc/pam.d# vim ./common-password
      password  sufficient    pam_ldap.so
      password  required      pam_unix.so nullok obscure min=4 max=8 md5
    • [email protected]:/etc/pam.d# vim ./common-session
      session   required      pam_unix.so
      session   required      pam_mkhomedir.so skel=/etc/skel/
      session   optional      pam_ldap.so
      session   optional      pam_foreground.so
       
  • Tạo thư mục dùng để lưu trữ các thư mục home tương ứng với mỗi tài khoản đăng nhập vào máy trạm:   [email protected]:~# mkdir /home/users
    [email protected]:~# mkdir /home/users/ktm

Chú ý: nếu không thực hiện bước này sau khi đã tạo tài khoản trên LDAP, chúng ta sẽ gặp thông báo lỗi trong quá trình đăng nhập vào máy trạm Ubuntu.

    • “Authentication failed”. Nếu xem trong file /var/log/auth.log, chúng ta sẽ thấy nguyên nhân của lỗi: “Unable to create directory /home/users/ktm/tthai”; “couldn’t open session for tthai”.

 

3. Tạo tài khoản đăng nhập với phpLDAPadmin 

Để đơn giản trong việc quản lý OpenLDAP server, chúng ta sử dụng phpLDAPadmin. Đây là ứng dụng web được sử dụng để thao tác với OpenLDAP server.

Các bước sau đây sẽ giúp chúng ta cài đặt và sử dụng phpLDAPadmin trên máy trạm Ubuntu để quản lý LDAP server.

Cài đặt phpLDAPadmin với lệnh:

   [email protected]:~# apt-get install phpldapadmin

Cấu hình phpLDAPadmin:

   [email protected]:~# cp -R /usr/share/phpldapadmin /var/www/myphpldapadmin
[email protected]:~# cp /etc/phpldapadmin/config.php /etc/phpldapadmin/first.config.php
[email protected]:~# rm /var/www/myphpldapadmin/config/config.php
[email protected]:~# ln –s /etc/phpldapadmin/first.config.php /var/www/myphpldapadmin/config/config.php
[email protected]:~# chmod +r /etc/phpldapadmin/first.config.php 

Truy cập phpLDAPadmin:

  • Từ cửa sổ trình duyệt, nhập địa chỉ http://localhost/myphpldapadmin.

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

Nhấn vào nút Login ở panel bên trái, nhập thông tin tài khoản root:

  • Login DN: cn=admin,dc=bits,dc=com,dc=vn
  • Password: ******

Nhấn nút Authenticate để đăng nhập.

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

Nếu đăng nhập vào LDAP server thành công, hệ thống sẽ thông báo:

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

 

Tạo tài khoản trên phpLDAPadmin:

  • Kích vào mục ou=users, chọn Create new entry here, chọn User Account. Nhấn nút Process>>.

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

  • Điền thông tin liên quan đến tài khoản và nhấn nút Process>>.

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

  • Xem lại thông tin. Sau khi đã chắc chắn, nhấn nút Create Object.

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

  • Sau khi tạo xong, màn hình hiển thị thông tin của tài khoản vừa tạo sẽ xuất hiện.

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

  • Nhấn nút Add new attribute để thêm thuộc tính LoginShell.

Thiết lập hệ thống mạng Ubuntu quản lý tập trung với LDAP

Nhấn nút Add để hoàn thành thao tác tạo và hiệu chỉnh tài khoản. Đến bước này, chúng ta nhấn nút Logout và bắt đầu kiểm tra khả năng hoạt động của hệ thống LDAP trên Ubuntu.

3.3. Cấu hình ubuntu-desktop02

Thực hiện các bước tương tự như với máy tính ubuntu-desktop01.

4. Kiểm tra hệ thống

Để kiểm tra hệ thống sau khi hoàn thành các bước cấu hình, từ máy trạm ubuntu, chúng ta đăng nhập bằng tài khoản được tạo ra trên LDAP server. Trong trường hợp của mình, trên máy ubuntu-desktop01, sau khi hệ thống khởi động, chúng ta nhập:

  • Username: tthai
  • Password: ******

Hệ thống sẽ thông báo: “Creating directory ‘/home/users/ktm/tthai’”, chúng ta nhấn nút OK để hoàn thành thao tác đăng nhập.

 

Kết luận
Sử dụng LDAP để xây dựng mạng nội bộ theo mô hình client/server, với các máy tính Ubuntu là một giải pháp quản lý tập trung hiệu quả và tiết kiệm chi phí. Với các bước cài đặt đơn giản, cấu hình dễ dàng, việc thiết kế hệ thống mạng nội bộ với LDAP và Ubuntu là hoàn toàn khả thi.

Phụ lục 1 – Một số thao tác hữu ích khi cấu hình LDAP trên Ubuntu 

1. Cấu hình máy tính Ubuntu để cho phép account trên LDAP server có thể chuyển sang (sudo) account quản trị hệ thống root

Để cho phép account tthai trên LDAP server có thể chuyển sang account root, trên máy trạm Ubuntu, chúng ta thực hiện như sau:

Mở file /etc/group, bổ sung user01 vào dòng admin…

   # gedit /etc/group 

Tìm đến dòng admin:x:117:ctbach,administrator

Bổ sung user01 vào cuối dòng. Sau khi bổ sung, chúng ta nhận được kết quả tương tự như sau:

   admin:x:117:ctbach,administrator,tthai 

Tiếp đến, cần cập nhật password LDAP server để hệ thống Ubuntu có thể hiểu được password này:

   [email protected]:~# passwd tthai
Enter login (LDAP) password: ******
New password: ******
Re-enter new password: ******

2. Sử dụng đĩa USB trên Ubuntu server

Để sử dụng được các đĩa USB trên Ubuntu server (giao diện dòng lệnh), chúng ta phải thực hiện thao tác mount đĩa USB vào Ubuntu server.

3. Xem lỗi đăng nhập trên máy trạm Ubuntu 

Để xem được các lỗi đăng nhập trên máy trạm Ubuntu nhằm giúp chúng ta xác định nguyên nhân phát sinh lỗi trong quá trình Ubuntu đăng nhập qua LDAP, chúng ta mở file /var/log/auth.log

Theo An ninh mạng.