Cách tích hợp Sudoers với máy chủ OpenLDAP

theanh

Administrator
Nhân viên
Sudo là một ứng dụng cho phép bạn có được quyền root hoặc quyền quản trị viên trên các hệ điều hành Linux và Unix. Sudo thường được cài đặt theo mặc định trên các bản phân phối Linux, bạn cũng có thể thiết lập quyền người dùng thông qua tệp /etc/sudoers và cho phép những người dùng không có quyền thực thi các lệnh cụ thể với tư cách là người dùng root.

Sudo có thể được cấu hình theo nhiều cách, bạn có thể thiết lập sudo trên máy tính/máy chủ cục bộ hoặc bạn cũng có thể thiết lập sudo tập trung thông qua phần mềm của bên thứ ba. Và đối với ví dụ này, bạn sẽ sử dụng máy chủ OpenLDAP để thiết lập triển khai sudo tập trung.

Trong hướng dẫn này, chúng tôi sẽ thiết lập và tích hợp sudoers vào máy chủ OpenLDAP. Với điều này, bạn sẽ có quyền quản lý người dùng và quyền sudo tập trung trên máy chủ OpenLDAP của mình, cho phép cài đặt ở phía máy khách nhanh hơn. Bất kỳ dịch vụ SSSD nào trên máy khách được cấu hình với nguồn xác thực sudo đều cho phép người dùng OpenLDAP thực thi sudo.

Điều kiện tiên quyết​

Bạn phải đảm bảo rằng mình có các yêu cầu sau để hoàn thành hướng dẫn này:
  • Một máy chủ đã cài đặt và cấu hình Máy chủ OpenLDAP.
  • Một máy khách đã cấu hình Máy khách OpenLDAP và dịch vụ SSSD.
  • Nếu bạn đang sử dụng Bản phân phối dựa trên RHEL, hãy đảm bảo rằng SELinux đang chạy ở chế độ Cho phép.
Ví dụ này sẽ sử dụng hai máy cho Máy chủ OpenLDAP và Máy khách. Cả hai máy đều đang chạy máy chủ Rocky Linux 9. Dưới đây là các máy chủ chi tiết:
Mã:
Hostname IP Address Used as Domain/FQDN
--------------------------------------------------------------
ldap 192.168.5.25 OpenLDAP Server ldap.hwdomain.lan
client 192.168.5.80 OpenLDAP Client client.hwdomain.lan

Nhập lược đồ Sudoers vào máy chủ OpenLDAP​

Ở bước đầu tiên, bạn phải nhập lược đồ LDAP sudoers mặc định vào máy chủ OpenLDAP của mình. Bạn có thể thực hiện việc này thông qua tệp LDIF và tiện ích 'ldapadd'.

Đăng nhập vào máy chủ OpenLDAP và sao chép lược đồ sudoers mặc định cho LDAP bằng cách nhập lệnh cp bên dưới.
Mã:
sudo cp /usr/share/doc/sudo/schema.OpenLDAP /etc/openldap/schema/sudo.schema
Tiếp theo, nhập lệnh nano command editor sau để tạo tệp LDIF mới '/etc/openldap/schema/sudo.ldif'.
Mã:
sudo nano /etc/openldap/schema/sudo.ldif
Thêm các dòng sau vào tệp.
Mã:
dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ description ) )
Lưu và thoát khỏi tệp khi bạn hoàn tất.

Thay đổi quyền sở hữu tệp LDIF sudoers '/etc/openldap/schema/sudo.ldif' để đảm bảo rằng OpenLDAP có thể truy cập vào đó.
Mã:
sudo chown ldap:ldap /etc/openldap/schema/sudo.ldif
Bây giờ hãy nhập lệnh 'ldapadd' sau để thêm lược đồ LDAP sudoers vào máy chủ OpenLDAP. Với lệnh này, bạn sẽ thêm 'cn' mới có tên là 'sudo' vào máy chủ OpenLDAP và cho phép bất kỳ người dùng OpenLDAP nào trong 'cn=sudo' thực thi lệnh sudo trên máy khách.
Mã:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/sudo.ldif
Khi thành công, bạn sẽ nhận được kết quả như sau: 'thêm mục mới "cn=sudo,cn=schema,ch=config"'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22179%22%3E%3C/svg%3E


Bây giờ lược đồ LDAP sudoers đã được thêm vào, bạn sẽ cần thiết lập 'ou' hoặc Đơn vị tổ chức cho sudoers.

Tạo Đơn vị tổ chức cho Sudo​

Sau khi thêm lược đồ LDAP sudoers, tiếp theo bạn sẽ tạo một 'ou' hoặc Đơn vị tổ chức mới có tên là 'sudo' cho phép bất kỳ người dùng OpenLDAP nào trong ou này thực thi lệnh sudo. Ngoài ra, bạn sẽ thiết lập cấu hình sudoers mặc định cho người dùng OpenLDAP.

Nhập trình soạn thảo nano sau để tạo tệp mới 'sudoers.ldif'.
Mã:
sudo nano sudoers.ldif
Thêm các dòng sau vào tệp và đảm bảo thay đổi tên miền chính bằng tên miền máy chủ OpenLDAP của bạn tên.
Mã:
# sudoers.ldif

dn: ou=sudo,dc=hwdomain,dc=lan
objectClass: organizationalUnit
objectClass: top
ou: sudo
description: Default ou for SUDO
Lưu và đóng tệp khi hoàn tất.

Tiếp theo, nhập lệnh 'ldapadd' sau để thêm sudoers ou vào máy chủ OpenLDAP. Khi được nhắc nhập mật khẩu, hãy nhập đúng mật khẩu gốc OpenLDAP.
Mã:
sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f sudoers.ldif
Khi thao tác thành công, bạn sẽ nhận được kết quả như sau 'thêm mục mới "ou=sudo,dc=hwdomain,dc=lan"'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22168%22%3E%3C/svg%3E


Bây giờ hãy nhập lệnh 'ldapsearch' sau để tìm bất kỳ 'ou' nào có giá trị 'sudo' trên máy chủ OpenLDAP.
Mã:
sudo ldapsearch -x -b "dc=hwdomain,dc=lan" ou=sudo
Đầu ra bên dưới xác nhận rằng 'ou=sudo' đã được thêm vào và có sẵn trên Máy chủ OpenLDAP.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22642%22%20height=%22329%22%3E%3C/svg%3E


Tiếp theo, tạo một tệp LDIF khác để xác định cấu hình sudoers mặc định. Nhập lệnh trình soạn thảo nano sau để tạo tệp mới 'sudoconf.ldif'.
Mã:
sudo nano sudoconf.ldif
Thêm các dòng sau vào tệp.
Mã:
# sudoconf.ldif

dn: cn=defaults,ou=sudo,dc=hwdomain,dc=lan
objectClass: sudoRole
objectClass: top
cn: defaults
sudoOption: env_reset
sudoOption: mail_badpass
sudoOption: secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
#sudoOrder: 1
Lưu và đóng tệp khi hoàn tất.

Bây giờ hãy nhập lệnh 'ldapadd' bên dưới để thêm cấu hình sudoers mặc định cho Máy chủ OpenLDAP. Bất kỳ người dùng OpenLDAP nào trong 'ou=sudo' sẽ áp dụng cấu hình sudoers mặc định.
Mã:
sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f sudoconf.ldif
Nhập mật khẩu gốc OpenLDAP của bạn khi được nhắc. Khi thành công, bạn sẽ có đầu ra như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22166%22%3E%3C/svg%3E


Với điều này, cấu hình sudoer trên máy chủ OpenLDAP đã hoàn tất. Bây giờ bạn có thể thêm người dùng OpenLDAP vào 'ou=sudo', cho phép người dùng OpenLDAP thực thi lệnh sudo.

Thêm người dùng OpenLDAP vào Sudo​

Trong phần này, bạn sẽ tìm hiểu cách thêm OpenLDAP vào 'ou=sudo' để cho phép người dùng thực thi lệnh 'sudo' trên máy khách OpenLDAP. Với lệnh này, bạn thêm một người dùng OpenLDAP hiện có vào 'ou=sudo' hoặc thêm một người dùng mới bằng lệnh 'ou=sudo'.

Tạo một tệp LDIF mới 'adduser_sudo.ldif' bằng lệnh nano editor sau.
Mã:
nano adduser_sudo.ldif
Thêm các dòng sau vào tệp. Lệnh này sẽ thêm một người dùng OpenLDAP hiện có 'rocky' vào 'ou=sudo' và cho phép người dùng 'rocky' thực thi lệnh 'sudo' trên máy khách. Ngoài ra, hãy nhớ thay đổi tên miền 'dc=hwdomain,dc=lan' bằng tên miền máy chủ OpenLDAP của bạn.
Mã:
# adduser_sudo.ldif

dn: cn=rocky,ou=sudo,dc=hwdomain,dc=lan
objectClass: sudoRole
objectClass: top
cn: rocky
sudoCommand: ALL
sudoHost: ALL
sudoRunAsUser: ALL
sudoUser: rocky
Lưu và đóng tệp khi hoàn tất.

Nếu bạn muốn tạo người dùng OpenLDAP mới với 'ou=sudo' mặc định, hãy sử dụng tệp LDIF sau và đảm bảo thay đổi tham số 'userPassword', username và tên miền mặc định cho máy chủ OpenLDAP của bạn.
Mã:
# adduser.ldif

dn: uid=rocky,ou=People,dc=hwdomain,dc=lan
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: rocky
sn: temp
userPassword: {SSHA}cDG5NuQd+rYn6rWh1r5UnysUOwJlt1uk
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/rocky
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

dn: cn=rocky,ou=Group,dc=hwdomain,dc=lan
objectClass: posixGroup
cn: rocky
gidNumber: 2000
memberUid: rocky

dn: cn=rocky,ou=sudo,dc=hwdomain,dc=lan
objectClass: sudoRole
objectClass: top
cn: rocky
sudoCommand: ALL
sudoHost: ALL
sudoRunAsUser: ALL
sudoUser: rocky
Tiếp theo, nhập lệnh 'ldapadd' bên dưới để áp dụng các thay đổi cho máy chủ OpenLDAP. Khi được nhắc, hãy nhập mật khẩu máy chủ OpenLDAP của bạn.
Mã:
sudo ldapadd -x -D cn=Manager,dc=hwdomain,dc=lan -W -f adduser_sudo.ldif
Khi thành công, bạn sẽ nhận được thông báo như sau 'thêm mục mới "cn=rocky,ou=sudo,dc=hwdomain,dc=lan"'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22158%22%3E%3C/svg%3E


Cuối cùng, nhập lệnh 'ldapsearch' sau để hiển thị và xác minh danh sách người dùng trên 'ou=sudo'. Với thao tác này, bạn sẽ thấy người dùng mới của mình được thêm vào và có sẵn trên 'ou=sudo'.
Mã:
sudo ldapsearch -x -b "ou=sudo,dc=hwdomain,dc=lan"

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22740%22%20height=%22740%22%3E%3C/svg%3E


Lúc này, bạn đã thêm một người dùng OpenLDAP hiện có tên là 'rocky' vào 'ou=sudo' và cho phép người dùng thực thi lệnh 'sudo' trên máy khách.

Trong bước tiếp theo, bạn sẽ thêm các thiết lập mới vào dịch vụ SSSD để bật sudoers qua máy chủ OpenLDAP.

Thiết lập máy khách OpenLDAP​

Trên máy khách, bạn phải thêm một số thiết lập vào cấu hình nsswitch và sssd. Đảm bảo chạy các lệnh sau trên máy khách OpenLDAP.

Trên tệp cấu hình Nsswitch '/etc/nsswitch.conf', bạn nên xác định dịch vụ tên sudoers để cho phép quản lý sudoers qua dịch vụ SSSD. Sau đó, trên tệp cấu hình SSSD '/etc/sssd/sssd.conf', bạn phải thêm 'sudo_provider' của 'ldap', định nghĩa dịch vụ 'sudo', sau đó thêm phần '[sudo]' để cấu hình sudoers bổ sung.

Mở tệp cấu hình Nsswitch '/etc/nsswitch.conf' bằng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/nsswitch.conf
Thêm cấu hình sau để định nghĩa dịch vụ tên 'sudoers' và cho phép quản lý dịch vụ này thông qua SSSD dịch vụ.
Mã:
sudoers: files sss
Lưu và đóng tệp khi hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22548%22%20height=%22305%22%3E%3C/svg%3E


Tiếp theo, nhập lệnh nano editor sau để mở tệp cấu hình SSSD '/etc/sssd/sssd.conf'.
Mã:
sudo nano /etc/sssd/sssd.conf
Trong phần '[domain/default]', thêm các tham số mới 'sudoers_base' và 'sudo_provider. Trong phần '[sssd]', bạn phải thêm 'sudo' vào tham số 'services'. Nếu bạn cần cấu hình sudoers bổ sung, hãy thêm phần '[sudo]' vào cuối dòng.
Mã:
[domain/default]
....
sudoers_base ou=sudo,dc=hwdomain,dc=lan
sudo_provider = ldap

[sssd]
services = nss, pam, autofs, sudo
domains = default

[nss]
homedir_substring = /home

[sudo]
Lưu và đóng tệp khi bạn hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22410%22%20height=%22505%22%3E%3C/svg%3E


Cuối cùng, nhập lệnh systemctl sau để khởi động lại dịch vụ SSSD và áp dụng các thay đổi.
Mã:
sudo systemctl restart sssd
Khi dịch vụ SSSD được khởi động lại, quản lý sudoers thông qua máy chủ OpenLDAP hiện đã được bật. Bất kỳ người dùng OpenLDAP nào đã đăng nhập vào ou mặc định cho sudo đều có thể thực thi lệnh 'sudo' trên máy khách.

Xác minh tích hợp Sudoers với máy chủ OpenLDAP​

Từ máy chủ OpenLDAP, đăng nhập vào máy khách trên địa chỉ IP '192.168.5.80' với người dùng OpenLDAP 'rocky' thông qua lệnh 'ssh' bên dưới.
Mã:
ssh [emailprotected]
Khi được nhắc, hãy nhập mật khẩu cho mật khẩu. Khi thành công, bạn sẽ được đăng nhập vào máy khách OpenLDAP.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22581%22%20height=%22398%22%3E%3C/svg%3E


Nhập các lệnh sau để xác minh người dùng, gid và uid hiện đang sử dụng. Bạn sẽ nhận được kết quả là người dùng OpenLDAP 'rocky' với gid và uid '2000'.
Mã:
id
whoami
Cuối cùng, nhập lệnh 'sudo su' sau để xác minh sự tích hợp của sudoer với máy chủ OpenLDAP.
Mã:
sudo su
Khi được nhắc, nhập mật khẩu cho người dùng 'rocky'. Khi thành công, dấu nhắc thiết bị đầu cuối của bạn sẽ trở thành 'root@client ....'.

Bây giờ hãy chạy lại lệnh sau để xác minh người dùng hiện tại mà bạn đang sử dụng và bạn sẽ thấy người dùng hiện tại là 'root'.
Mã:
id
whoami
Điều này xác nhận rằng tích hợp sudoers với máy chủ OpenLDAP đã hoàn tất và thành công.

Kết luận​

Trong hướng dẫn này, bạn đã định cấu hình và tích hợp sudoers với máy chủ OpenLDAP cho phép người dùng OpenLDAP thực thi lệnh 'sudo' trên máy khách. Bạn cũng đã tích hợp sudoers với dịch vụ SSSD trên máy khách, dịch vụ này sẽ tự động bật sudo cho người dùng OpenLDAP.

Với điều này, giờ đây bạn có thể thêm nhiều người dùng OpenLDAP hơn vào 'ou=sudo' để cho phép người dùng thực hiện sudo trên máy khách. Ngoài ra, bạn phải cập nhật cấu hình của nsswitch và SSSD trên máy khách để người dùng OpenLDAP có thể kết nối với nhà cung cấp sudo OpenLDAP.

Để biết thêm chi tiết về OpenLDAP, hãy kiểm tra tài liệu chính thức của OpenLDAP. Và đối với Sudoers, hãy truy cập tài liệu của sudoers.
 
Back
Bên trên