在CentOS系統上查看使用者登入記錄的方法

來源:互聯網
上載者:User

   保留、維護和分析日誌(如某個特定時期內發生過的,或正在發生的帳號事件),是Linux系統管理員最基礎和最重要的任務之一。對於使用者管理,檢查使用者的登入和登出日誌(不管是失敗的,還是成功的)可以讓我們對任何潛在的安全隱患或未經授權使用系統的情況保持警惕。例如,工作時間之外或放假期間的來自未知IP地址或帳號的遠程登入應當發出紅色警報。

  在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[code]

  

最後,對於/var/log/btmp:

[code]# 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之類的標準工具的不足,這也使得它成為一個很棒的工具。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.