Có lẽ câu hỏi chính xác là làm thế nào để cấu hình pam để không cho phép mật khẩu?
Chính xác. Bạn đã vấp phải sự thật rằng thiết lập UsePAM no
nói chung là lời khuyên tồi. Nó không chỉ ngăn chặn bất kỳ hình thức xác thực dựa trên PAM nào, mà còn vô hiệu hóa account
và session
các mô-đun. Kiểm soát truy cập và cấu hình phiên là những điều tốt.
Đầu tiên, hãy xây dựng một danh sách các yêu cầu:
- OTP qua
pam_google_authenticator.so
. Điều này đòi hỏi UsePAM yes
và ChallengeResponseAuthentication yes
. Rốt cuộc, bạn đang nhắc họ cho một chứng chỉ!
- Không có hình thức xác thực mật khẩu khác thông qua PAM. Điều này có nghĩa là vô hiệu hóa bất kỳ
auth
mô-đun nào có thể cho phép mật khẩu được truyền qua thông tin keyboard-interactive
đăng nhập. (mà chúng tôi phải để lại cho OTP)
- Xác thực dựa trên khóa. Chúng tôi cần yêu cầu
publickey
xác thực và có thể gssapi-with-mic
nếu bạn đã cấu hình Kerberos.
Thông thường, xác thực bằng khóa bỏ qua xác thực hoàn toàn dựa trên PAM. Điều này sẽ khiến chúng tôi dừng theo dõi với các phiên bản mở rộng cũ hơn, nhưng Debian 8 (jessie) hỗ trợ AuthenticationMethods
chỉ thị. Điều này cho phép chúng tôi yêu cầu nhiều phương thức xác thực, nhưng chỉ hoạt động với các máy khách triển khai SSHv2.
cấu hình sshd
Dưới đây là những dòng tôi đề nghị cho /etc/ssh/sshd_config
. Hãy chắc chắn rằng bạn có một cách để truy cập hệ thống này mà không sshd
trong trường hợp bạn phá vỡ một cái gì đó!
# Require local root only
PermitRootLogin no
# Needed for OTP logins
ChallengeResponseAuthentication yes
UsePAM yes
# Not needed for OTP logins
PasswordAuthentication no
# Change to to "yes" if you need Kerberos. If you're unsure, this is a very safe "no".
GSSAPIAuthentication no
# Require an OTP be provided with key based logins
AuthenticationMethods publickey,keyboard-interactive
# Use this instead for Kerberos+pubkey, both with OTP
#
#AuthenticationMethods gssapi-with-mic,keyboard-interactive publickey,keyboard-interactive
Đừng quên tải lại sshd
sau khi những thay đổi này được thực hiện.
Cấu hình PAM
Chúng ta vẫn phải cấu hình PAM. Giả sử cài đặt sạch Debian 8 (theo câu hỏi của bạn):
- Nhận xét
@include common-auth
từ /etc/pam.d/sshd
.
- Xem lại
/etc/pam.d/sshd
và xác nhận rằng không có dòng bắt đầu với auth
hiện tại. Không nên có nếu đây là một bản cài đặt sạch, nhưng tốt nhất là an toàn.
- Thêm một
auth
mục cho pam_google_authenticator.so
.
Hãy nhớ rằng mật khẩu cục bộ vẫn hoạt động.
Chúng tôi đã không thực hiện bất kỳ thay đổi nào sẽ ảnh hưởng đến thông tin đăng nhập thông qua bảng điều khiển cục bộ hoặc ngăn người dùng sử dụng mật khẩu để nâng cấp các đặc quyền của họ thông qua sudo.
Điều này nằm ngoài phạm vi của câu hỏi. Nếu bạn quyết định đưa mọi thứ đi xa hơn, hãy nhớ rằng root phải luôn được phép đăng nhập cục bộ qua mật khẩu. Bạn có nguy cơ tự khóa mình ra khỏi hệ thống.