您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

CentOS系統上查看用戶登錄記錄的方法

添加時間:2019-5-15 20:39:00  添加: 思海網絡 
在CentOS系統上,用戶登錄歷史存儲在以下這些文件中:

    /var/run/utmp(用于記錄當前打開的會話)被who和w工具用來記錄當前有誰登錄以及他們正在做什么,而uptime用來記錄系統啟動時間。
    /var/log/wtmp (用于存儲系統連接歷史記錄)被last工具用來記錄最后登錄的用戶的列表。
    /var/log/btmp(記錄失敗的登錄嘗試)被lastb工具用來記錄最后失敗的登錄嘗試的列表。


在本文中,我將介紹如何使用utmpdump,這個小程序來自sysvinit-tools包,可以用于轉儲二進制日志文件到文本格式的文件以便檢查。此工具默認在CentOS 6和7系列上可用。utmpdump收集到的信息比先前提到過的工具的輸出要更全面,這讓它成為一個勝任該工作的很不錯的工具。除此之外,utmpdump可以用于修改utmp或wtmp。如果你想要修復二進制日志中的任何損壞條目,它會很有用(LCTT 譯注:我怎么覺得這像是做壞事的前奏?)。
Utmpdump的使用及其輸出說明

正如我們之前提到的,這些日志文件,與我們大多數人熟悉的其它日志相比(如/var/log/messages,/var/log/cron,/var/log/maillog),是以二進制格式存儲的,因而我們不能使用像less或more這樣的文件命令來查看它們的內容。所以,utmpdump的出現拯救了世界。

為了要顯示/var/run/utmp的內容,請運行以下命令:

   


# utmpdump /var/run/utmp


    同樣要顯示/var/log/wtmp的內容:

   


# utmpdump /var/log/wtmp | tail -15
 最后,對于/var/log/btmp:
# utmpdump /var/log/btmp


    正如你所能看到的,三種情況下的輸出結果是一樣的,除了utmp和btmp的記錄是按時間排序,而wtmp的順序是顛倒的這個原因外(LCTT 譯注:此處原文有誤,實際上都是按照時間順序排列的)。

每個日志行格式化成了多列,說明如下。第一個字段顯示了會話識別符,而第二個字段則是PID。第三個字段可以是以下值:--(表示運行等級改變或系統重啟),bw(啟動守候進程),數字(表示TTY編號),或者字符和數字(表示偽終端)。第四個字段可以為空或用戶名、重啟或運行級別。第五個字段是主TTY或PTY(偽終端),如果此信息可獲得的話。第六個字段是遠程主機名(如果是本地登錄,該字段為空,運行級別信息除外,它會返回內核版本)。第七個字段是遠程系統的IP地址(如果是本地登錄,該字段為0.0.0.0)。如果沒有提供DNS解析,第六和第七字段會顯示相同的信息(遠程系統的IP地址)。最后一個(第八)字段指明了該記錄創建的日期和時間。
Utmpdump使用樣例

下面提供了一些utmpdump的簡單使用情況。

1、 檢查8月18日到9月17日之間某個特定用戶(如gacanepa)的登錄次數。

   


# utmpdump /var/log/wtmp | grep gacanepa

    如果你需要回顧先前日期的登錄信息,你可以檢查/var/log下的wtmp-YYYYMMDD(或wtmp.[1...N])和btmp-YYYYMMDD(或btmp.[1...N])文件,這些是由logrotate生成的舊wtmp和btmp的歸檔文件。

2、 統計來自IP地址192.168.0.101的登錄次數。

   


# utmpdump /var/log/wtmp | grep 192.168.0.101

 
3、 顯示失敗的登錄嘗試。

   


# utmpdump /var/log/btmp

  
    在/var/log/btmp輸出中,每個日志行都與一個失敗的登錄嘗試相關(如使用不正確的密碼,或者一個不存在的用戶ID)。上面圖片中高亮部分顯示了使用不存在的用戶ID登錄,這警告你有人嘗試猜測常用帳號名來闖入系統。這在使用tty1的情況下是個極其嚴重的問題,因為這意味著某人對你機器上的終端具有訪問權限(該檢查一下誰拿到了進入你數據中心的鑰匙了,也許吧?)

4、 顯示每個用戶會話的登入和登出信息

  


# utmpdump /var/log/wtmp

 
    在/var/logwtmp中,一次新的登錄事件的特征是,第一個字段為‘7’,第三個字段是一個終端編號(或偽終端id),第四個字段為用戶名。相關的登出事件會在第一個字段顯示‘8’,第二個字段顯示與登錄一樣的PID,而終端編號字段空白。例如,仔細觀察上面圖片中PID 1463的行。

    在 [Fri Sep 19 11:57:40 2014 ART],TTY1上顯示登錄提示符。
    在 [Fri Sep 19 12:04:21 2014 ART],用戶 root 登入。
    在 [Fri Sep 19 12:07:24 2014 ART],用戶 root 登出。
旁注:第四個字段的LOGIN意味著出現了一次登錄到第五字段指定的終端的提示。

到目前為止,我介紹一些有點瑣碎的例子。你可以將utmpdump和其它一些文本處理工具,如awk、sed、grep或cut組合,來產生過濾和加強的輸出。

例如,你可以使用以下命令來列出某個特定用戶(如gacanepa)的所有登錄事件,并發送輸出結果到.csv文件,它可以用像LibreOffice Calc或Microsoft Excel之類的文字或工作簿應用程序打開查看。讓我們只顯示PID、用戶名、IP地址和時間戳:

   


# utmpdump /var/log/wtmp | grep -E "\[7].*gacanepa" | awk -v OFS="," 'BEGIN {FS="] "}; {print $2,$4,$7,$8}' | sed -e 's/\[//g' -e 's/\]//g'

  
就像上面圖片中三個高亮區域描繪的那樣,過濾邏輯操作是由三個管道步驟組成的。第一步用于查找由用戶gacanepa觸發的登錄事件([7]);第二步和第三部用于選擇期望的字段,移除utmpdump輸出的方括號并設置輸出字段分隔符為逗號。

當然,如果你想要在以后打開來看,你需要重定向上面的命令輸出到文件(添加“>[文件名].csv”到命令后面)。


在更為復雜的例子中,如果你想要知道在特定時間內哪些用戶(在/etc/passwd中列出)沒有登錄,你可以從/etc/passwd中提取用戶名,然后運行grep命令來獲取/var/log/wtmp輸出中對應用戶的列表。就像你看到的那樣,有著無限可能。

在進行總結之前,讓我們簡要地展示一下utmpdump的另外一種使用情況:修改utmp或wtmp。由于這些都是二進制日志文件,你不能像編輯文件一樣來編輯它們。取而代之是,你可以將其內容輸出成為文本格式,并修改文本輸出內容,然后將修改后的內容導入回二進制日志中。如下:

   


# utmpdump /var/log/utmp > tmp_output
<使用文本編輯器修改 tmp_output>
# utmpdump -r tmp_output > /var/log/utmp
這在你想要移除或修復二進制日志中的任何偽造條目時很有用。

下面小結一下,utmpdump從utmp、wtmp和btmp日志文件或輪循的舊歸檔文件來讀取詳細的登錄事件,來補充如who,w,uptime,last,lastb之類的標準工具的不足,這也使得它成為一個很棒的工具。


關鍵字:CentOS、系統、登錄記錄
分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2019 All Rights Reserved.
聯系電話:(0757)22630313、22633833
公司地址: 廣東省佛山市順德區大良國際商業城A區4座3樓106號   郵編:528300
機房7x24小時服務熱線:(0757)23628508、23628509
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站
30选5今天开奖结果