2021年10月28日 星期四

Linux | 限制使用者登入(工作)SSH時間


RD提了一個需求,希望有個Booking系統能夠讓不同使用者在特定的時間登入,先不管Booking這件事的話,Google了一下pam_time.so模組可以做到限制使用者登入時間的功能,設定很簡單幾個步驟就可以完成。

步驟一:修改/etc/security/time.conf

增加下面這一行,意思是pen這個使用者在每天的13:00~14:00可以使用ssh登入

sshd;*;pen;Al1300-1400

上面每個欄位代表如下

services;ttys;users;times

Services就是服務只要在PAM裡面有定義的就可以用
Ttys代表終端
Users代表使用者
Times代表限定的時間有Mo Tu We Th Fr Sa Su Wk Wd Al這十個簡寫,其中wd代表week-end days,Al代表一周的七天,如最後設定成這樣MoTuSa是代表星期一,星期二與星期六。

以下是幾個範例

範例1: 除了root,其他使用者任何時間都禁止從console登入
login ; tty* & !ttyp* ; !root ; !Al0000-2400

範例2: root只能在周末和周一以外的時間從pseudo的終端使用xsh登入
xsh;ttyp*;root;!WdMo0000-2400


步驟二:修改/etc/pam.d/sshd後,重啟SSH服務

在/etc/pam.d/sshd中增加下面這一行,然後重啟SSH服務就可以測試了。
account required pam_time.so


步驟三:驗證

在步驟一的時候設定了pen這個使用者允許的登入時間,如果在這時間外登入的話會被拒絕,這時候可以去看一下auth.log顯示的內容,如下會看到阻擋的原因,可以知道設定生效了。

Oct 28 11:10:57 example sshd[1413823]: fatal: Access denied for user pen by PAM account configuration [preauth]


總結

這功能其實非常彈性,如果想加強安全性的話也可以考慮在這邊設定root的登入限制,但是要注意就是它是限制登入的時間,並不是限制使用時間,以上面例子來說是每天的13:00~14:00可以登入,在14:00以前進來的話即使超過14:00還是可以使用,如果要限制明確的時間那麼就要用其他方法來解決,之後有機會再說。



沒有留言: