Cách định cấu hình Linux để xác thực bằng Kerberos

Tác giả sysadmin, T.M.Hai 29, 2022, 03:15:28 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách định cấu hình Linux để xác thực bằng Kerberos


Kerberos là một giao thức xác thực có thể cung cấp đăng nhập mạng an toàn hoặc SSO cho các dịch vụ khác nhau qua mạng không an toàn. Kerberos hoạt động với khái niệm vé được mã hóa và có thể giúp giảm số lần mật khẩu cần được gửi qua mạng.

Những vé này được phát hành trên toàn bộ lĩnh vực Kerberos bởi một trung tâm phân phối khóa tập trung (KDC). Ở đây chúng tôi sẽ giới thiệu cách thiết lập KDC và lấy vé Kerberos từ hệ thống máy khách trong CentOS Linux.

Lưu ý rằng đối với kỳ thi RHCE, bạn sẽ không phải thực sự tạo KDC, bạn chỉ cần thiết lập một máy khách để kết nối với KDC hiện có. Chúng tôi đã đề cập đến cả hai phần để bạn có thể tạo KDC của riêng mình để có thứ gì đó kết nối trong khi học.

1. Môi trường ví dụ

Đây là danh sách các máy chủ của chúng tôi mà chúng tôi sẽ thử nghiệm, cả hai đều đang chạy CentOS 7.

  • Máy chủ Kerberos (KDC): 192.168.1.13 – Máy chủ Linux này sẽ đóng vai trò là KDC của chúng tôi và phân phối vé Kerberos.
  • Máy khách Kerberos: 192.168.1.14 – Máy khách Linux này sẽ yêu cầu vé Kerberos từ KDC.

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

Để Kerberos hoạt động chính xác, trước tiên phải định cấu hình các mục sau trên cả hai máy chủ.

  • NTP: Cần đồng bộ hóa thời gian, nếu chênh lệch thời gian quá 5 phút, xác thực sẽ không thành công. Xem hướng dẫn của chúng tôi về đồng bộ hóa thời gian với NTP để biết thêm chi tiết về việc thiết lập tính năng này.
  • DNS: Lý tưởng nhất là FQDN sẽ phân giải trong một môi trường thích hợp, tuy nhiên ở đây chúng tôi thực hiện bằng cách chỉ sử dụng địa chỉ IP. Sửa đổi /etc/hosts cũng sẽ hoạt động để thử nghiệm, tuy nhiên, nên sử dụng DNS đúng cách.

3. Thiết lập một KDC

Như đã đề cập trước đây, thiết lập KDC không phải là mục tiêu RHCE, tuy nhiên, bạn sẽ cần một mục tiêu để thực hiện các mục tiêu khác sử dụng Kerberos, chẳng hạn như thiết lập NFS để sử dụng Kerberos.

Các lệnh sau được chạy trên máy chủ KDC của chúng tôi.

Mã nguồn [Chọn]
yum install krb5-server krb5-workstation
Khi các gói này đã được cài đặt, tệp /etc/krb5.conf cần được sửa đổi. Theo mặc định, một số thứ được nhận xét cần được cấu hình. Dưới đây là một bản sao của cấu hình mặc định.

Mã nguồn [Chọn]
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
# default_realm = EXAMPLE.COM
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
# EXAMPLE.COM = {
#  kdc = kerberos.example.com
#  admin_server = kerberos.example.com
# }

[domain_realm]
#.example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM

Xóa các nhận xét khỏi default_realm và toàn bộ phần [realms] và đặt các nhận xét này phù hợp với môi trường của bạn, ví dụ này tôi sẽ sử dụng   Đăng nhập để xem liên kết, với kdc của tôi là   Đăng nhập để xem liên kết

Tiếp theo chỉnh sửa tệp /var/kerberos/krb5kdc/kdc.conf và một lần nữa thay thế các phiên bản của   Đăng nhập để xem liên kết thành tên miền cụ thể của bạn, một lần nữa tôi sẽ để mặc định này vì tôi đang sử dụng tên miền   Đăng nhập để xem liên kết ở đây để thử nghiệm.

Mã nguồn [Chọn]
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 EXAMPLE.COM = {
  #master_key_type = aes256-cts
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal

4. Tạo cơ sở dữ liệu Kerberos

Bây giờ chúng ta đã sẵn sàng để tạo cơ sở dữ liệu Kerberos bằng lệnh kdb5_util như hình bên dưới. Bạn sẽ được nhắc nhập mật khẩu sẽ đóng vai trò là khóa chính, mật khẩu này được KDC sử dụng để mã hóa cơ sở dữ liệu, vì vậy điều rất quan trọng là phải lưu trữ mật khẩu này một cách an toàn.

Mã nguồn [Chọn]
[root@kdc ~]# kdb5_util create -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'EXAMPLE.COM',
master key name 'K/[email protected]'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:

Lệnh này mất khoảng một phút để hoàn thành vì phải mất một lúc để tải dữ liệu ngẫu nhiên, bạn có thể di chuyển chuột trong GUI hoặc nhấn phím để tăng tốc quá trình. Cờ -s được chỉ định để tệp lưu trữ được tạo, cho phép dịch vụ Kerberos tự động khởi động mà không yêu cầu cung cấp khóa chính theo cách thủ công.

5. Quản lý dịch vụ

Nói về khởi động tự động, chúng tôi muốn bật và khởi động cả kadmin và krb5kdc để các dịch vụ Kerberos KDC của chúng tôi sẽ tự động khả dụng sau khi khởi động lại hệ thống.

Mã nguồn [Chọn]
[root@kdc ~]# systemctl enable kadmin krb5kdc
Created symlink from /etc/systemd/system/multi-user.target.wants/kadmin.service to /usr/lib/systemd/system/kadmin.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/krb5kdc.service to /usr/lib/systemd/system/krb5kdc.service.

[root@kdc ~]# systemctl start kadmin krb5kdc

Để biết thêm thông tin về quản lý dịch vụ cơ bản với systemctl, hãy xem hướng dẫn của chúng tôi tại đây.

6. Cấu hình tường lửa

Để các hệ thống khác giao tiếp với các dịch vụ của KDC, cần phải đặt các quy tắc tường lửa chính xác. Điều này có thể được thực hiện như hình bên dưới với tường lửa.

Mã nguồn [Chọn]
[root@kdc ~]# firewall-cmd --permanent --add-service=kerberos
success
You have new mail in /var/spool/mail/root

[root@kdc ~]# firewall-cmd --reload
success

Dịch vụ Kerberos được xác định trước cho phép cả lưu lượng truy cập cổng TCP/UDP 88. Chúng tôi có thể kiểm tra và xác nhận rằng dịch vụ krb5kdc thực sự đang lắng nghe trên các cổng này để tìm kết nối.

Mã nguồn [Chọn]
[root@kdc ~]# netstat -antup | grep krb
tcp        0      0 0.0.0.0:88              0.0.0.0:*               LISTEN      12744/krb5kdc
tcp6       0      0 :::88                   :::*                    LISTEN      12744/krb5kdc
udp        0      0 0.0.0.0:88              0.0.0.0:*                           12744/krb5kdc
udp6       0      0 :::88                   :::*                                12744/krb5kdc

Chúng tôi chỉ cho phép Kerberos thông qua, lưu ý rằng lưu lượng truy cập vào kadmin yêu cầu TCP 749, vì vậy nếu bạn muốn truy cập từ xa, bạn cũng cần xem xét việc mở nó, tuy nhiên, vì mục đích của chúng tôi và để tăng cường bảo mật, chúng tôi sẽ chỉ để đó dưới dạng truy cập cục bộ.

7. Quản trị Kerberos

KDC có thể được quản lý bằng cách chạy lệnh   Đăng nhập để xem liên kết. Để xem các lệnh khả dụng trong ngữ cảnh   Đăng nhập để xem liên kết, chỉ cần chạy '?'. Từ thông tin hữu ích này, chúng tôi có thể thấy rằng 'addprinc' có thể được sử dụng để thêm tiền gốc Kerberos, điều mà chúng tôi sẽ thực hiện cho tài khoản 'người dùng' của mình.

Mã nguồn [Chọn]
[root@kdc ~]# kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local:  addprinc user
WARNING: no policy specified for [email protected]; defaulting to no policy
Enter password for principal "[email protected]":
Re-enter password for principal "[email protected]":
Principal "[email protected]" created.

KDC của chúng tôi hiện đã sẵn sàng chấp nhận các kết nối khách hàng và cung cấp vé cho chủ sở hữu 'người dùng'.

8. Thiết lập máy khách

Bây giờ là lúc cấu hình hệ thống máy khách của chúng ta để sử dụng KDC. Có một vài phương pháp khác nhau mà bạn có thể sử dụng để hoàn thành việc này, cá nhân tôi thấy việc sử dụng GUI thực sự rất nhanh chóng và dễ dàng ở đây. Để sử dụng GUI, trước tiên hãy cài đặt gói authconfig-gtk.

Mã nguồn [Chọn]
yum install authconfig-gtk -y
Sau khi hoàn tất, chỉ cần chạy 'authconfig-gtk' từ cửa sổ đầu cuối trong GUI. Thao tác này sẽ mở ra cửa sổ Cấu hình xác thực. Từ tab Danh tính & Xác thực, chọn LDAP từ trình đơn thả xuống Cấu hình tài khoản người dùng để có quyền truy cập vào Cấu hình xác thực, đây là nơi chúng tôi sẽ chọn mật khẩu Kerberos và cung cấp thông tin về vùng và KDC của chúng tôi.

Trong ví dụ này, như đã trình bày trước đây, vương quốc trên KDC là   Đăng nhập để xem liên kết, địa chỉ IP của KDC của chúng tôi là 192.168.1.13 vì tôi không thiết lập DNS nên không thể sử dụng FQDN và máy chủ quản trị cũng là giống như KDC vì đây là nơi kadmin đang điều hành.


Khi bạn đã xác định vương quốc và KDC của mình, hãy nhấp vào nút Áp dụng.

Nếu bạn không phải là người yêu thích GUI hoặc đơn giản là chưa cài đặt GUI, bạn cũng có thể sử dụng giao diện người dùng văn bản thay vì chạy 'authconfig-tui'. Cả hai điều này sẽ tự động định cấu hình tệp /etc/sssd/sssd.conf của chúng tôi, tuy nhiên, bạn có thể chỉnh sửa thủ công tệp này nếu bạn biết mình đang làm gì. Cá nhân tôi luôn có trải nghiệm tồi tệ khi cố gắng đặt sssd.conf theo cách thủ công, vì vậy tôi khuyên bạn nên sử dụng một trong hai công cụ authconfig này.

9. Tạo người dùng

Trên KDC của chúng tôi, chúng tôi đã tạo hiệu trưởng cho 'người dùng', bây giờ chúng tôi sẽ tạo tài khoản người dùng cục bộ trên hệ thống máy khách. Điều này không bắt buộc về mặt kỹ thuật, chúng tôi có thể kết nối từ người dùng khác, tuy nhiên để đảm bảo tính nhất quán, chúng tôi sẽ sử dụng tài khoản này.

Mã nguồn [Chọn]
[root@client ~]# useradd user
Bây giờ, chúng tôi đã sẵn sàng để thử và nhận vé từ KDC, trước tiên, chúng tôi trở thành người dùng mới và chạy lệnh 'kinit' được sử dụng để lấy và lưu vào bộ đệm vé Kerberos của chúng tôi.

Mã nguồn [Chọn]
[root@client ~]# su user

[user@client root]$ kinit
Password for [email protected]:

[user@client root]$ klist
Ticket cache: KEYRING:persistent:1004:1004
Default principal: [email protected]

Valid starting       Expires              Service principal
06/11/2016 00:51:16  06/12/2016 00:51:16  krbtgt/[email protected]

Từ 'klist', chúng tôi có thể thấy rằng chúng tôi đã được cấp một vé có giá trị trong 24 giờ.

Chúng tôi đã cấu hình thành công trung tâm phân phối khóa (KDC) có khả năng cung cấp vé Kerberos cho khách hàng.