Ssh

Debian:如何檢測使用者第一次使用 SFTP 連接的時間?

  • February 2, 2014

我正在嘗試設置以下內容: 僅允許通過 ssh 密鑰訪問 OpenSSH sftp 伺服器,即不允許密碼驗證。SSH 密鑰在伺服器上自動生成。該伺服器旨在用作網路託管伺服器,每個網站有一個使用者。這些使用者只允許 sftp 訪問,沒有 shell。

為了讓新使用者能夠通過 sftp 檢索他們的密鑰,我們允許他們第一次使用密碼登錄(僅限第一次!)。密碼通過簡訊發送,每個新使用者都有有限的時間來連接和獲取密鑰。第一次成功連接後,密碼訪問被禁用,該使用者只允許基於密鑰的訪問。

我已經配置了這個工作流程的所有步驟,除了一個:如何檢測新使用者何時通過 sftp 首次連接?除了解析日誌還有什麼優雅的方法嗎?

除了解析日誌之外,我還能想到另外兩種方法。

  1. 安裝 incron。然後,您可以創建一個腳本以在讀取和關閉文件時執行。該腳本可以鎖定密碼訪問等。
  2. 使用 OTP(一次性密碼)。這是一個完美的解決方案。 http://www.linotp.org/doc/latest/index.html

我會選擇#2,但如果事情變得更複雜,#1 會很有用。

回答我自己的問題以指出另一種不需要安裝任何額外軟體的方法:PAM 模組 pam_exec。我從這裡得到了靈感(類似的問題,不同的背景):在我的情況下,把

auth    optional     pam_exec.so /path/to/command

在 /etc/pam.d/ssh 文件中。這僅在 ssh/sftp 進行密碼身份驗證時執行,而不是在它進行基於密鑰的身份驗證時執行。然後 /path/to/command 中的命令可以

  • 將使用者分配給僅允許進行基於密鑰的身份驗證的組(sshd_config 中的 MatchGroup 指令)。

或者

  • 將使用者名添加到一個簡單的文本文件。如果您隨後在 /etc/pam.d/ssh 中輸入“auth required pam_listfile.so item=user sense=deny file=/path/to/text/file”,那麼 pam_listfile 模組下次會小心拒絕該使用者。

有關 PAM 的優秀教程,包括我提到的兩個模組,請參閱以下連結:

http://linuxtutorial.info/modules.php?name=Howto&pagename=User-Authentication-HOWTO/x115.html

http://susefaq.sourceforge.net/howto/pam.html

引用自:https://serverfault.com/questions/571406