Security

etc_security_lastlog 的視覺化

  • September 11, 2019

我正在尋找一種簡單的方法來視覺化來自 etc_security_lastlog 的數據,以查看非活動使用者 ID。“非活動”使用者將根據他們的 time_last_login 是否足夠大來確定。我該怎麼做?

lp:
time_last_unsuccessful_login = 1174162435
tty_last_unsuccessful_login = /dev/pts/7      
host_last_unsuccessful_login = 1x.xxx.xxx.x.x                                    
unsuccessful_login_count = 1         

smtsftp:
unsuccessful_login_count = 3         
time_last_login = 1382043613
tty_last_login = /dev/ssh-16842912
host_last_login = 1x.xxx.xxx.x.x.net.intra                       
time_last_unsuccessful_login = 1382083294
tty_last_unsuccessful_login = ssh
host_last_unsuccessful_login = 1x.xxx.xxx.x.x.net.intra

svcsinae:
unsuccessful_login_count = 0         

privil1:
unsuccessful_login_count = 0
time_last_login = 1567112152
tty_last_login = /dev/pts/1
host_last_login = 11x.xxx.xxx.x.x              
time_last_unsuccessful_login = 1507892677
tty_last_unsuccessful_login = ssh
host_last_unsuccessful_login = 1x.xxx.xxx.x.x 

您可以使用簡單的 awk 過濾器來解決此問題;只需傳入目前時間戳和您感興趣的截止時間。它將解析輸入以查找使用者名及其 time_last_login 值。如果它發現一個早於截止值的值,它會報告相應的使用者。

下面的範例使用 1 年(31,536,000 秒)的粗略近似值。

awk -v now=$(date +%s) -v cutoff=31536000 '
 /^[^-+@~ ][^:"#,=\\\/?` ]+:$/ { 
   user=$1
   sub(/:$/, "", user)
 }
 /time_last_login = [[:digit:]]+/ { 
   if (now - $3 > cutoff) print user " has not logged in within the cutoff"
 }
 ' /etc/security/lastlog

我在搜尋使用者名時使用的正則表達式來自mkuser 文件。擷取使用者名(行)後,我從使用者名中刪除了尾隨冒號。

引用自:https://unix.stackexchange.com/questions/539655