Làm cách nào để từ chối quyền truy cập vào tài khoản AD bị vô hiệu hóa thông qua kerberos trong pam_krb5?


10

Tôi có một thư mục AD / Linux / LDAP / KRB5 đang hoạt động và thiết lập xác thực, với một vấn đề nhỏ. Khi tài khoản bị vô hiệu hóa, xác thực SSH công khai vẫn cho phép người dùng đăng nhập.

Rõ ràng rằng các máy khách kerberos có thể xác định một tài khoản bị vô hiệu hóa, vì kinit và kpasswd trả về "Thông tin khách hàng đã bị thu hồi" mà không cần thêm mật khẩu / tương tác.

PAM có thể được định cấu hình (với "UsePAM yes" trong sshd_config) để không cho phép đăng nhập cho các tài khoản bị vô hiệu hóa, nơi xác thực được thực hiện bởi khóa công khai? Điều này dường như không hoạt động:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

Vui lòng không giới thiệu winbind trong câu trả lời của bạn - chúng tôi không sử dụng nó.

Câu trả lời:


4

Tôi đã đọc được những người khác yêu cầu SSH được "sửa lỗi" để các tài khoản bị khóa không thể đăng nhập thông qua SSH. (xem lỗi Debian 219377) Yêu cầu này đã bị từ chối dưới dạng bản vá "vì nó phá vỡ một số kỳ vọng từ người dùng [những người] đã sử dụng để passwd -l chỉ khóa mật khẩu." (xem lỗi Debian 389183), vd: một số người MUỐN có thể khóa tài khoản khỏi thông tin đăng nhập mật khẩu, nhưng vẫn cho phép truy cập khóa SSH.

PAM sẽ không từ chối xác thực khóa SSH đối với các tài khoản vừa bị khóa (ví dụ do các lần thử mật khẩu không hợp lệ, vì xác thực khóa SSH được thiết kế để không chú ý đến trường mật khẩu, nơi mà tài khoản thường bị khóa.)

Tôi hiểu rằng mục nhập băm mật khẩu được kiểm tra ngầm tại thời gian pam_authenicate (), không phải lúc pam_acct_mgmt (). pam_unix.so pam_sm_acct_mgmt () hoàn toàn không kiểm tra hàm băm mật khẩu và pam_authenticate () không được gọi trong khi xác thực khóa chung.

Nếu ý định của bạn là có thể vô hiệu hóa tập trung các tài khoản khỏi đăng nhập, có những cách giải quyết khác có thể, bao gồm:

Thay đổi vỏ đăng nhập.

(lại) di chuyển tệp ủy quyền của họ.

Một tùy chọn khác để từ chối quyền truy cập có thể là một số sử dụng Từ chối nhóm hoặc Cho phép nhóm trong sshd_config. (sau đó thêm người dùng vào nhóm "sshdeny" hoặc xóa họ khỏi nhóm "sshlogin" để vô hiệu hóa họ khỏi đăng nhập.) (đọc tại đây: https ://help.ub Ubuntu.com/8.04/serverguide/user-man Quản lý .html )

Từ http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL Tôi đọc: "Vấn đề là pam_unix chỉ kiểm tra ngày hết hạn của mục nhập bóng, không phải nội dung trường băm mật khẩu." Nếu điều này là đúng, sẽ hết hạn tài khoản thay vì khóa nó làm những gì bạn cần?

Câu trả lời cho câu hỏi của bạn có thể là "có, nếu bạn vô hiệu hóa chúng ở nơi nào khác ngoài trường mật khẩu"


4

Đã làm thêm một số bài tập về nhà, và đang trả lời câu hỏi của riêng tôi.

Trong pam_krb5 ( pam_krb5-2.3.14-1/src/acct.c) của RedHat , trừ khi mô-đun tham gia vào giai đoạn xác thực, hàm pam_sm_acct_mgmt () trả về PAM_IGNORE hoặc PAM_USER_UNKNOWN tùy thuộc vào cấu hình mô-đun. Do đó, nó sẽ yêu cầu thay đổi mã pam_krb5 để làm những gì tôi muốn.

Câu trả lời của JohnGH là một cách giải quyết tốt; sử dụng các thuộc tính "proxy" để truyền đạt ý nghĩa tương tự, chẳng hạn như phá vỡ vỏ hoặc thêm vào nhóm "người dùng bị vô hiệu hóa".

Một cách giải quyết khác (đã được kiểm tra một phần) là đặt ngày hết hạn tài khoản trong quá khứ và sử dụng một mô-đun như pam_unix để không kiểm tra tài khoản. Điều này sử dụng LDAP, thay vì KRB5, nhưng truy vấn cùng thư mục người dùng được quản lý tập trung.


2

Xác thực dựa trên khóa SSH độc lập với PAM. Bạn có các giải pháp sau:

  • vô hiệu hóa xác thực dựa trên khóa trong sshd_config
  • thay đổi và biên dịch lại sshd và thêm một hook để auth có khóa cũng sẽ kiểm tra nếu tài khoản hợp lệ qua pam.

Nếu bạn muốn sử dụng đăng nhập không mật khẩu qua kerberos, bạn phải đảm bảo rằng:

  • bạn không sử dụng pam cho sshd
  • bạn có kerberos được cấu hình đúng. Ví dụ bạn có thể làmkinit -k host/server1.example.com@DOMAIN
  • bạn sshd được cấu hình để sử dụng gssapi:

    KerberosAuthentication yes GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM no

  • bạn sử dụng máy khách ssh kerberized như PuTTY v0.61 hoặc mới hơn.


1
Tôi không đồng ý rằng SSH công khai khóa độc lập với PAM. Thêm account optional pam_echo.so file=/etc/redhat-releasevào /etc/pam.d/sshd khiến nội dung tệp được in trong khi sử dụng thông tin đăng nhập xác thực dựa trên khóa (thử nó).
Phil

Tôi nghĩ rằng pam chỉ được sử dụng cho tài khoản (ví dụ: để tạo thư mục chính) chứ không phải cho auth. Tôi đang kiểm tra trường hợp này bây giờ.
Mircea Vutcovici
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.