2017-05-31 66 views
0

好日子,記錄特定成功的SSH登錄和disconections

我試圖記錄成功的ssh登錄和斷開特定用戶的時間。即我想在SSH連接建立和關閉時觸​​發一個bash腳本。

我一直在試圖理解不只是pam_exec多少成功的PAM.d模塊可能是我所期待的。

這裏是journalctl日誌當用戶我斷開後再重新連接:

May 31 00:47:31 myhostname.com sshd[11517]: Connection closed by 41.113.99.123 
May 31 00:47:31 myhostname.com sshd[11517]: Transferred: sent 10160, received 12196 bytes 
May 31 00:47:31 myhostname.com sshd[11517]: Closing connection to 41.113.99.123 port 24976 
May 31 00:47:31 myhostname.com sshd[12377]: pam_unix(sshd:session): session closed for user myuser 
May 31 00:47:31 myhostname.com systemd-logind[4406]: Removed session 24778. 
May 31 00:47:52 myhostname.com sshd[11964]: Connection from 41.113.99.123 port 24989 on 178.79.130.104 port 22 
May 31 00:47:55 myhostname.com sshd[11964]: Postponed publickey for myuser from 41.113.99.123 port 24989 ssh2 [preauth] 
May 31 00:47:56 myhostname.com sshd[11964]: Accepted publickey for myuser from 41.113.99.123 port 24989 ssh2: RSA SHA256:R0y/xxxxxxxxxxxxxxxx/HuC6vZp/xxxxxxxxxxxxxx 
May 31 00:47:56 myhostname.com sshd[11964]: pam_unix(sshd:session): session opened for user myuser by (uid=0) 
May 31 00:47:56 myhostname.com systemd-logind[4406]: New session 24786 of user myuser. 
May 31 00:47:56 myhostname.com systemd[1]: Started Session 24786 of user myuser. 
May 31 00:47:57 myhostname.com sshd[11964]: User child is on pid 12009 

是否有執行腳本的效率(可能PAM)的方式時,「會話」開和關的「myuser的? 如果可能的話,將有可能暴露相關的PID如圖所示的最後一行?

感謝

回答

0

所以,很多搜索和實驗後,我才意識到,無論PAMñ或者ssh及其守護進程的所有奇特功能都可以用來實現我的目標。我發現使用-N選項建立一個ssh反向隧道不同於普通的ssh登錄。我會試着解釋爲什麼。

有了這樣的方式,這是我做了什麼。

SSH Access Control是相當精闢的總結這篇文章。這說明PAM適用於SSH進程的位置。 PAM允許各種「模塊」來補充和增強認證/登錄過程。我在我的問題中遇到的一個這樣的模塊是pam_exec()。其中包括我在/etc/pam.d/sshd文件的末尾,如下所示:

session optional pam_exec.so debug log=/tmp/pam_exec.log seteuid /usr/local/bin/login_auth 

當時的想法是,當用戶建立SSH連接,這將大火,可以登錄/採取一些行動腳本。該腳本工作,但執行該命令的「shell」是有限的,只有最少的一組會話信息。像SSH_CONNECTION即正常SSH環境變量是不可用,並從所述遠程客戶端(-o SendEnv=LC_MYVAR)發送的任何環境變量也不可用(LC_MYVAR)。事實證明,這僅適用於反向隧道類型的ssh連接,通常不會建立一個感謝-N選項的shell。

總之,人們可以非常漂亮,用上面的方法來捕獲用戶名和任何連接的IP,甚至像SSH_CONNECTION用於交互式登錄的詳細信息。

我需要在這一點上我試圖實現澄清。我在「字段」中有多個設備,它們被編程爲在可能時建立反向ssh隧道。這個想法是在每個設備連接和斷開連接時監視服務器端,從而瞭解連接問題。問題是我把它們全部用相同的用戶和sshkey來設置。所以區分它們只能在我設置的遠程端口上通過。 2222,2223,2224,2225,2226等。我需要獲取並記錄有關連接和斷開連接的信息。

最後,我不得不承認並使用日誌tail的方法,如:

tail -F /var/log/auth.log | grep "Connection closed by" | /usr/bin/myscript