Bài viết này sẽ hướng dẫn bạn cài đặt và cấu hình PAM (Pluggable Authentication Modules) trên Ubuntu, với trọng tâm là cách sử dụng các module như pam_faillock để giới hạn số lần đăng nhập sai và pam_time để kiểm soát khung giờ đăng nhập của người dùng từ đó tăng cường bảo mật cho hệ thống.Trong môi trường Linux, bảo mật luôn là yếu tố then chốt, đặc biệt với các dịch vụ thường xuyên bị tấn công như SSH, nơi các cuộc brute-force xảy ra phổ biến. PAM đóng vai trò như một hệ thống xác thực linh hoạt, cho phép quản trị viên dễ dàng thiết lập quy tắc đăng nhập, hạn chế quyền truy cập và quản lý người dùng theo chính sách riêng của tổ chức.
1. PAM là gì?
PAM (Pluggable Authentication Modules) là một hệ thống xác thực linh hoạt được sử dụng rộng rãi trên các hệ điều hành Unix/Linux, bao gồm cả Ubuntu. Framework này cung cấp một cấu trúc chuẩn hóa giúp các ứng dụng như SSH, login, sudo dễ dàng tích hợp nhiều phương thức xác thực khác nhau mà không cần chỉnh sửa mã nguồn.Nhờ cơ chế module động và tệp cấu hình riêng, PAM cho phép quản trị viên thiết lập các chính sách xác thực, phân quyền và quản lý phiên đăng nhập một cách linh hoạt. Ví dụ, bạn có thể giới hạn số lần đăng nhập sai để ngăn brute-force, hoặc thiết lập khung giờ truy cập cụ thể cho từng nhóm người dùng nhằm tăng cường bảo mật cho hệ thống.
2. Kiểm tra và cài đặt PAM
Trên Ubuntu, PAM được cài sẵn theo mặc định. Bạn có thể xác nhận bằng lệnh:
ls /etc/pam.d/
Nếu thư mục này tồn tại, PAM đã được cài.

Nếu vì lý do nào đó PAM bị thiếu, cài lại bằng:
sudo apt update
sudo apt install libpam-modules libpam-modules-bin libpam0g
3. Cấu trúc thư mục và file PAM
PAM lưu tất cả cấu hình trong thư mục /etc/pam.d/.Mỗi file trong thư mục này đại diện cho một dịch vụ cụ thể trên hệ thống, ví dụ: sshd cho SSH, sudo cho lệnh sudo, login cho đăng nhập trực tiếp. PAM sẽ đọc các file này để xác định cách xác thực, quản lý quyền và kiểm soát truy cập cho từng dịch vụ.
Ví dụ:
/etc/pam.d/sshd # cấu hình PAM cho SSH
/etc/pam.d/sudo # cấu hình PAM cho sudo
Cấu trúc một dòng cấu hình:
<type> <control> <module-path> <module-args>
- type: loại (auth, account, password, session)
- control: cách xử lý kết quả (required, requisite, sufficient, optional)
- module-path: đường dẫn module (ví dụ: pam_unix.so)
- module-args: các đối số tùy chọn
4. Một số ví dụ cấu hình PAM phổ biến
4.1. Giới hạn số lần đăng nhập sai
Sử dụng module pam_tally2 hoặc pam_faillock:
sudo nano /etc/pam.d/common-auth
Thêm dòng sau vào đầu file:
auth required pam_tally2.so deny=5 onerr=fail unlock_time=600
Giải thích:
- deny=5: Giới hạn 5 lần đăng nhập thất bại.
- unlock_time=600: Khóa tài khoản trong 600 giây (10 phút).
- onerr=fail: Từ chối đăng nhập nếu có lỗi PAM.
Nghĩa là sau 5 lần sai, người dùng bị khóa 10 phút.

Kiểm tra trạng thái:
sudo pam_tally2

4.2. Giới hạn thời gian sử dụng hệ thống
Dùng module pam_time.so trong /etc/pam.d/login, mở file /etc/pam.d/login
sudo nano /etc/pam.d/loginThêm dòng sau vào phần account
account required pam_time.so
Cấu hình file /etc/security/time.conf như sau, mở file bằng sudo nano /etc/security/time.conf:
login;*;user1;!Al0000-1800
user1 chỉ được đăng nhập ngoài khung giờ 00:00–18:00 từ thứ Hai đến thứ Bảy.

6. Kết luận
PAM là một công cụ không thể thiếu để tùy chỉnh bảo mật trên Ubuntu, cho phép quản lý xác thực và truy cập một cách linh hoạt. Với các module như pam_faillock và pam_time, bạn có thể dễ dàng bảo vệ SSH khỏi tấn công brute-force và giới hạn thời gian sử dụng hệ thống. Cấu hình đúng PAM sẽ giúp máy chủ của bạn an toàn hơn!
Công Ty TNHH VPSMMOCLOUD
- VP: D19 Đường Số 5, KDC Văn Hóa Tây Đô, Phường Hưng Thạnh, Quận Cái Răng, Thành phố Cần Thơ, Việt Nam
- Mail: info@muavpsgiare.vn
- Tel: 0939.569.415
