Vô hiệu hóa mô-đun PAM cho nhóm


10

Gần đây tôi đã kích hoạt xác thực hai yếu tố bằng cách sử dụng google-xác thực trên máy chủ SSH của mình. Tuy nhiên tôi hiện đang phải đối mặt với một vấn đề:

Tôi có một nhóm người dùng khác trên máy chủ của mình mà tôi đang sử dụng cho SFTP, nhưng nhóm đó không còn có thể đăng nhập do 2FA không được thiết lập cho người dùng trong nhóm. Có thể tắt mô-đun google-xác thực cho nhóm đó không? Kích hoạt nó cho người dùng trong nhóm không phải là một tùy chọn vì nhiều người dùng sẽ sử dụng tài khoản này.

Tái bút: Tôi sử dụng openssh-server


Đã trả lời trong nhận xét này - Hy vọng nó sẽ giúp Askubfox.com/a/1051973/846342
Abhimanyu Garg

Câu trả lời:


13

Bạn có thể sử dụng pam_succeed_ifmô-đun (xem trang thủ công) trước khi pam_google_authenticatorbỏ qua phần này cho nhóm của bạn:

# the other authentication methods, such as @include common-auth
auth [success=1 default=ignore] pam_succeed_if.so user ingroup group
auth required pam_google_authenticator ...

2
Nó có lẽ nên được [success=1 default=ignore]thay vì required. Ngay bây giờ, một người dùng không trong nhóm sẽ dẫn đến việc xác thực thất bại, tôi nghĩ vậy. success=1sẽ làm cho nó bỏ qua phương thức tiếp theo, default=ignorecó nghĩa là người dùng không trong nhóm sẽ đơn giản chuyển sang phương thức tiếp theo.
muru

@muru có, bạn rõ ràng đúng. Vẫn đang tìm hiểu các chi tiết và tất cả sự kỳ diệu của ngăn xếp PAM :)
Jakuje

Điều này có phụ thuộc vào việc bạn có nhiều "Xác thựcMethod" trong / etc / ssh / sshd_config không? Với dòng trên được thêm vào, tôi vẫn nhận được 'Quyền bị từ chối (tương tác bàn phím)'
Arj

@Arj điều này có nghĩa là bạn có cấu hình khác nhau nên câu trả lời cụ thể này không áp dụng cho bạn.
Jakuje

1

Một số khách hàng SFTP có thể xử lý 2FA. Ví dụ: tôi đang sử dụng 2FA với FileZilla và WinSCP và chúng hoạt động. Ngoài ra tôi có thiết lập xác thực ssh-key và nó hoạt động cùng với 2FA.

Tuy nhiên câu hỏi của bạn rất thú vị và tôi đã làm một cuộc khảo sát ngắn. Tôi tìm thấy câu trả lời này .

Vì vậy, có thể (và dễ dàng) để chạy các trường hợp ssh riêng. Tôi đã thử nó rồi.

  1. Tạo các bản sao riêng biệt của sshd_configtập tin.

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. Chỉnh sửa các configtập tin mới này . Một trong những điều bạn phải thay đổi là cổng shh. Theo ví dụ:

    2.a) sshd_config_pwdcác dòng cụ thể là:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2facác dòng cụ thể là:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. Mở các cổng cần thiết vào tường lửa. Theo ví dụ:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. Chạy các trường hợp ssh mới:

    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd
    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
    

Đó là nó.


Làm thế nào là điều này trả lời câu hỏi? Những gì bạn sửa đổi trong việc sshd_configsử dụng ngăn xếp PAM khác nhau và không sử dụng 2FA?
Jakuje

@Jakuje Tôi đã cập nhật câu trả lời của tôi.
pa4080

Ok, vì vậy vấn đề là "không sử dụng PAM". Nó có thể hoạt động trong một số trường hợp, nhưng PAM không chỉ về xác thực, mà còn thiết lập phiên và nhiều hơn nữa, do đó nó có thể ngừng hoạt động hàng ngày. Ngoài ra việc thay đổi cổng rất khó hiểu, đặc biệt nếu bạn muốn bên thứ ba kết nối với máy chủ của mình. Mặc dù có, giải pháp có thể.
Jakuje

Vâng, đó chỉ là một giải pháp khả thi, vẫn chưa hoàn chỉnh, vì tôi không biết cách thanh lịch để bắt đầu các trường hợp ssh riêng biệt này khi khởi động hệ thống.
pa4080

0

Sau đây sẽ làm cho Google 2FA bắt buộc đối với tất cả người dùng
ngoại trừ người dùng thuộc sudoquản trị nhóm
(có nghĩa là nếu một người sử dụng từ nhóm sudo hoặc quản trị không có 2FA cấu hình, nó sẽ xác nhận anh / cô ấy dựa trên khóa công khai của họ):

Tập tin: /etc/pam.d/sshd

auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin

Tập tin: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

Các kết quả:

          |  Belongs to sudo or  |  Has 2FA Already Setup      |  Authentication Result
          |  admin group         |  in ~/.google_authenticator | 
----------+----------------------+-----------------------------+------------------------
User A    |          NO          |       NO                    | DENIED LOGIN UNTIL 2FA IS SETUP
User B    |          YES         |       NO                    | CAN LOGIN (PRIVATE/PUBLIC KEY USED)

User C    |          NO          |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

User D    |          YES         |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

Theo Tài liệu README.md của Google Authenticator :

nullok

PAM yêu cầu ít nhất một câu trả lời THÀNH CÔNG từ một mô-đun và nullok khiến mô-đun này nói IGNORE. Điều này có nghĩa là nếu tùy chọn này được sử dụng thì ít nhất một mô-đun khác phải có THÀNH CÔNG. Một cách để làm điều này là thêm ph_permit.so yêu cầu vào cuối cấu hình PAM.

Điều này làm cho việc sử dụng nullokở đây an toàn.

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.