Chặn một địa chỉ và khóa một tài khoản là hai cơ chế khác nhau, và chúng thất bại theo hai hướng ngược nhau. Lệnh cấm địa chỉ dừng một nguồn và tài khoản mục tiêu vẫn truy cập được từ nơi khác; khóa tài khoản dừng danh tính đó ở mọi nơi, kể cả trên máy tính xách tay của chính người dùng.

Với một VPN giao việc xác thực cho PAM, bộ đếm là nơi ngăn xếp PAM chạm tới, không phải điều mà bộ lắng nghe ghi lại.

Hai bộ đếm, hai nạn nhân khác nhau

Bộ giới hạn tốc độ nhìn vào một nguồn và hỏi có bao nhiêu lần thử đến từ đó gần đây. Khóa nhìn vào một danh tính và hỏi tài khoản đó đã tích lũy bao nhiêu thất bại. Cái đầu bảo vệ tính sẵn sàng, cái sau bảo vệ thông tin đăng nhập; không cái nào thay thế cái kia.

Vì vậy câu chúng tôi chặn IP sau năm lần thất bại không phải câu trả lời cho báo cáo về việc nhồi thông tin đăng nhập. Kẻ tấn công luân chuyển nguồn, mỗi nguồn nhận ít lần thử, và tài khoản không bao giờ được đếm. Ngược lại, khóa không có kiểm soát nguồn cho phép kẻ tấn công giữ tài khoản bị khóa vô thời hạn bằng cách cố ý thất bại.

Hai biện pháp cũng có câu chuyện phục hồi khác nhau. Lệnh cấm địa chỉ hết hạn theo bộ hẹn giờ mà không ai phải nghĩ tới; khóa tài khoản có thể cần quản trị viên, thời gian chờ được ghi lại hoặc tự đặt lại.

Tìm kho lưu trữ đã sở hữu số đếm

Trước khi thêm bất cứ điều gì, hãy xác định xem đã có kho lưu trữ thất bại chưa. Tài khoản Linux cục bộ, dịch vụ thư mục và nhà cung cấp danh tính bên ngoài mỗi bên giữ số đếm riêng, và một mô-đun PAM đặt trước chúng tạo ra cái thứ hai thay vì mở rộng cái đầu.

grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20

Đọc tệp dịch vụ mà VPN thực sự nêu tên và theo các dòng bao gồm của nó. Trong nhiều bản phân phối, dịch vụ VPN bao gồm một tệp chung, nghĩa là số đếm bạn đang điều chỉnh cũng áp dụng cho SSH và đăng nhập cục bộ.

Nếu thư mục đã áp đặt khóa, câu hỏi hữu ích là cuộc trò chuyện PAM đến được quyết định đó như thế nào và VPN báo cáo nó ra sao. Số đếm cục bộ thêm vào bên trên không trở thành bộ đếm của thư mục, và hai chính sách có thể không đồng ý về thời điểm tài khoản mở khóa.

pam_faillock có ba vị trí gọi, không phải một

Mô-đun tách ba thao tác mà một dòng sao chép thường làm mờ: kiểm tra tài khoản đã bị khóa chưa, ghi nhận thất bại và xóa lịch sử sau khi thành công.

Đây là nơi việc chuyển từ mô-đun đếm cũ thường sai. Sao chép một dòng từ ví dụ pam_tally2 đang hoạt động vào ngăn xếp pam_faillock không phải đổi tên; cấu hình được ghi lại khác đi, và một lời gọi đặt sai chỗ có thể ghi nhận thất bại mà không bao giờ kiểm tra chúng.

faillock --user alice
faillock --user alice --reset

Công cụ kiểm tra là cách nhanh nhất để xem bộ đếm có thật hay không: nó hiển thị các thất bại đã ghi cho một tài khoản và có thể xóa chúng. Nếu một thất bại có kiểm soát không thay đổi đầu ra đó, vị trí lời gọi là sai.

Tên dịch vụ riêng không phải cách ly

Cấp cho VPN tệp dịch vụ PAM riêng làm chính sách dự định trở nên hữu hình, nhưng không giới hạn tác động. Bất kỳ việc bao gồm một tệp chung nào cũng mang theo những gì tệp đó làm, kể cả số đếm cho toàn hệ thống.

Hãy quyết định rõ ràng liệu khóa chỉ bao trùm quyền truy cập VPN hay mọi dịch vụ xác thực cùng tài khoản đó. Cả hai câu trả lời đều bảo vệ được; thất bại là tin rằng bạn đã chọn một trong khi ngăn xếp thực hiện cái kia.

Sau đó tính đến chi phí. Kẻ tấn công có thể kích hoạt khóa, và người dùng chịu đau khổ là chủ tài khoản. Ngưỡng, thời gian chờ và đường phục hồi hành chính đều là một phần của chính sách, và việc phục hồi không được phụ thuộc vào việc cấu hình lại VPN trong lúc sự cố.

Chấp nhận trình tự, không phải một lần từ chối

Kiểm thử với danh tính được chỉ định theo một kế hoạch đã phê duyệt, và kiểm thử một chuỗi thay vì một sự kiện: tài khoản hợp lệ xác thực, mật khẩu cố ý sai di chuyển bộ đếm, khóa đã cấu hình có hiệu lực và phục hồi được ghi lại trả lại quyền truy cập.

faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'

Quan sát hành vi khi thành công cẩn thận như khi thất bại. Nếu đăng nhập thành công không xóa lịch sử, tài khoản sẽ bị khóa sau khi các lỗi thông thường tích tụ chậm. Nếu nó xóa mọi thứ khỏi mọi dịch vụ, bộ đếm yếu hơn những gì chính sách tuyên bố.

Cuối cùng, dừng các máy khách không giám sát trước khi tuyên bố thắng lợi. Thông tin đăng nhập đã lưu thử lại ở chế độ nền sẽ tạo lại các thất bại vài phút sau khi phục hồi và khóa tài khoản lần nữa. Giới hạn tốc độ theo nguồn có thể còn lại như một kiểm soát bổ sung, nhưng đó không phải chính sách tài khoản.

Bài viết liên quan