Các mô-đun PAM tùy chỉnh và cân nhắc bảo mật


8

Tôi đang viết mô-đun PAM của riêng mình, đây sẽ là một phần của ứng dụng mà tôi đang phát triển, nhưng tôi không chắc chắn chính xác nên đặt nó ở đâu. Mô-đun của tôi về cơ bản thực hiện xác thực cấp mạng (tất nhiên với các mojo khác) tương tự như LDAP.

Có rất nhiều tệp cấu hình trong /etc/pam.d/thư mục của tôi và tôi biết hầu hết các dịch vụ làm gì (ngoại trừ một vài, như atd, polkit, ppp). Tôi giả sử rằng xác thực với ngăn xếp PAM sẽ giống như thế này:

  1. Chạy ngăn xếp dựa trên tên dịch vụ (nếu có tệp cấu hình)
  2. Nếu không được xác thực, hãy quay lại phổ biến- *, trong đó * là loại mô-đun (auth, tài khoản, v.v.)
  3. Trả về thành công hoặc không gọi được ứng dụng (và bất kỳ dữ liệu nào khác)

Tôi có đúng trong giả định này không? Có phải tất cả các nền tảng đều có chung-auth, tài khoản chung, mật khẩu chung và phiên chung?

Nếu vậy, tôi đã suy nghĩ về việc chỉ đặt nó lên hàng đầu - * như một sufficientmô-đun để khi thất bại, ngăn xếp PAM thông thường sẽ không bị ảnh hưởng. Điều này đặc biệt thuận lợi vì tôi có thể lập trình thực hiện việc này khi cài đặt phần mềm.

Tôi có thiếu bất kỳ lỗ hổng bảo mật tiềm năng nào không?

Tôi không thể tìm thấy tài liệu rất tốt về nơi tích hợp các mô-đun PAM tùy chỉnh hoặc các vấn đề bảo mật xung quanh nơi đặt mô-đun.


2
Toàn bộ quan điểm của PAM là tách rời các quy trình xác thực thực tế khỏi các ứng dụng, do đó, hãy để sysadmin cấu hình chúng một cách riêng biệt. Nếu ứng dụng của bạn phụ thuộc vào mô-đun xác thực, đây có thể là dấu hiệu cho thấy bạn đang lạm dụng PAM.
Riccardo Murri

Chà, ứng dụng của tôi là một daemon đồng bộ tài khoản của người dùng với mạng nếu người dùng đăng nhập là người dùng mạng. Tôi nghĩ miễn là tôi không cho phép giao tiếp giữa daemon và mô-đun PAM thì tôi sẽ ổn.
beatgammit

Câu trả lời:


7

Khi bạn gọi vào Linux-PAM cho một số quy trình xác thực, luôn có một và chỉ một ngăn xếp được chạy.

Định nghĩa ngăn xếp được tìm kiếm ở những nơi này; lần thử thành công đầu tiên xác định tệp nào được đọc:

  1. tệp /etc/pam.dđược đặt tên theo ứng dụng "tên dịch vụ" (ví dụ: sshdhoặc gdm), hoặc

  2. tệp /etc/pam.d/othernếu không có tệp dành riêng cho dịch vụ, hoặc

  3. tập tin /etc/pam.confnếu thư mục /etc/pam.dkhông tồn tại

Xem tài liệu cho chức năng pam_start để biết chi tiết.

Các tệp chung- * là một quy ước được theo sau bởi nhiều bản phân phối Linux nhưng không bắt buộc bởi chính phần mềm PAM. Chúng thường được bao gồm bởi các tệp PAM khác bằng các @include câu lệnh; ví dụ: /etc/pam.d/othertệp trên Debian có nội dung như sau:

# We fall back to the system default in /etc/pam.d/common-*
@include common-auth
@include common-account
@include common-password
@include common-session

Các @includecâu lệnh tương tự cũng có thể được sử dụng bởi tệp dành riêng cho dịch vụ và -có thể chúng nằm trong cấu hình mặc định trên Debian. Lưu ý rằng đây là vấn đề về cấu hình: một sysadmin có thể tự do thay đổi tệp /etc/pam.dđể không bao gồm bất kỳ tệp chung * * nào cả!

Do đó: nếu mô-đun PAM của bạn dành riêng cho ứng dụng của bạn, hãy tạo tệp dịch vụ dành riêng cho ứng dụng và gọi mô-đun từ đó. Đừng không tự động thêm một module để tập tin PAM dịch vụ khác cũng không đến sự sụp đổ trở lại otherstập tin, vì điều này có thể phá vỡ các ứng dụng khác được cài đặt trên hệ thống. Quản lý ngăn xếp phần mềm PAM là một nhiệm vụ cho người quản trị hệ thống, không phải cho các nhà phát triển ứng dụng.


Điều này thực sự xóa công cụ lên cho tôi. Có một số bản phân phối sử dụng các tệp chung- * làm bản sao lưu cho các tệp cấu hình dành riêng cho dịch vụ không? Khi tôi đặt mô-đun của mình ở chế độ chung-auth, nó đã chạy ngay cả khi chạy sudo.
beatgammit

@tjameson Tôi đã cập nhật câu trả lời với nhiều chi tiết hơn về các tệp chung- *
Riccardo Murri

Được rồi cảm ơn!! Bây giờ tôi hiểu tất cả. Tôi nghĩ rằng có lẽ bản phân phối của tôi có một quy trình dự phòng tùy chỉnh được xây dựng trong phiên bản PAM của họ hoặc một cái gì đó. Cảm ơn cho thanh toán bù trừ này lên.
beatgammit
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.