Linux--深入理解linux文件系統與日誌分析 理論+數據恢復實驗(inode與block詳解,軟鏈接與硬鏈接,恢復誤刪除的文件實驗,日誌文件分類與分析)
前言
- 在處理Linux系統出現的各種故障時,故障的症狀是最容易發現的,而導致這一故障的原因纔是最終排除故障的關鍵。
- 熟悉Linux系統中常見的日誌文件,瞭解一般故障的分析與解決辦法,將有助於管理員快速定位故障點,“對症下藥”,及時解決各種系統問題。
- 在linux下通過分區、格式化來創建文件系統,而文件系統的運行又與block和inode有關。
一:元信息(inode)與實際數據(block)
- 嶄新的操作系統的文件除了實際內容外,通常含有非常多的屬性,例如Linux操作系統的文件權限(rwx)與文件屬性(所有者,羣組,時間參數等)。文件系統通常會將這兩部分分別存放在inode和block中
1.1:inode和block概述
-
文件數據包括元信息與實際數據
-
文件存儲在硬盤上,硬盤最小存儲單元是“扇區”,每個扇區存儲512字節
-
元信息
-
元信息是關於信息的信息,用於描述信息的結構、語義、用途和用法等,比如文件的創建者,文件的創建日期,文件的大小等
-
block(塊)
操作系統讀取硬盤的時候,不會一個個扇區的讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取多個扇區叫做“塊”(block)
連續的八個扇區組成一個block,“塊”的大小,最長見的是4KB
是文件存取的最小單位
- inode(索引節點)
文件數據存儲在“塊”中,那麼還必須找到一個地方存儲文件的元信息,比如文件的創建者,文件的創建日期,文件的大小等
這種存儲文件元信息的區域就叫做inode,中文譯名爲(索引節點),也叫i節點
一個文件必須佔用一個inode,但至少佔用一個block
存儲內容 | 存儲位置 |
---|---|
元信息 | inode |
數據 | block |
1.2:inode的內容
1.2.1:inode包含文件的元信息
-
inode包含很多的文件元信息,但不包括文件名,例如:
文件的字節數
文件擁有者的UserID
文件的GroupID
文件的讀,寫,執行權限
文件的時間戳
…
-
使用stat命令即可查看某個文件的inode信息
[root@localhost ~]# stat anaconda-ks.cfg
文件:"anaconda-ks.cfg"
大小:1420 塊:8 IO 塊:4096 普通文件 ##大小1420字節=1.4k
設備:803h/2051d Inode:537173187 硬鏈接:1
權限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
最近訪問:2020-03-17 08:13:55.474987121 +0800
最近更改:2020-03-17 08:13:55.478987121 +0800
最近改動:2020-03-17 08:13:55.498987121 +0800
創建時間:
Linux系統文件有三個主要的時間屬性,分別是ctime(change time), atime(access time), mtime(modify time)
ctime(change time) 是最後一次改變文件或目錄(屬性)的時間,例如執行 chmod, chown 等命令;
atime(access time) 是最後一次訪問文件或目錄的時間;
mtime(modify time) 是最後一次修改文件或目錄(內容)的時間
1.2.2:Linux系統文件三個主要的時間屬性
-
ctime(change time)
最後一次改變文件或目錄(屬性)的時間,例如執行chmod,chown等命令
-
atime(access time)
最後一次訪問文件或目錄的時間
-
mtime(modify time)
最後一次修改文件或目錄(內容)的時間
1.2.3:目錄文件的結構
- inode不包括文件名,文件名是存放在目錄當中的
- Linux系統中一切皆文件,因此目錄也是一種文件
- 目錄文件的結構,每一行稱爲一個目錄項
文件名1 | inode號碼1 |
---|---|
文件名2 | inode號碼2 |
- 每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件
- Linux系統內部不使用文件名,而使用inode號碼來識別文件
- 對於用戶來說,文件名指示inode號碼便於識別的別稱
1.2.4:inode的號碼
- 用戶通過文件名打開文件時,表面上是用戶通過文件名打開的,而實際系統內部的過程分成散步完成的
1.系統找到這個文件名對應的inode號碼
2.通過inode號碼,獲取inode信息
3.根據inode信息,找到文件數據所在的block,讀出數據
文件名-----對應的inode號碼-----inode信息-----找到文件所在的block,讀取數據
- 查看inode號碼的方法
ls -i命令,查看文件名對應的inode號碼
[root@localhost ~]# ls -i anaconda-ks.cfg 查看anaconda-ks.cfg文件的節點號
537173187 anaconda-ks.cfg\
查看文件系統的inode數量信息(總數,已用,可用)
[root@localhost ~]# df -i
文件系統 Inode 已用(I) 可用(I) 已用(I)% 掛載點
/dev/sda3 154729472 35613 154693859 1% /
devtmpfs 479975 372 479603 1% /dev
tmpfs 482689 1 482688 1% /dev/shm
tmpfs 482689 1195 481494 1% /run
tmpfs 482689 16 482673 1% /sys/fs/cgroup
/dev/sr0 0 0 0 - /mnt
/dev/sda1 524288 329 523959 1% /boot
tmpfs 482689 1 482688 1% /run/user/0
1.2.5:文件存儲小結
1.2.6:inode的大小
- inode也會消耗硬盤空間,每個inode的大小一般是128字節或256字節
- 格式化文件系統時確定inode的總數
- 使用df -i命令可以查看每個硬盤分區的inode總數和已經使用的數量
[root@localhost opt]# df -i
文件系統 Inode 已用(I) 可用(I) 已用(I)% 掛載點
/dev/sda2 10485760 117069 10368691 2% /
devtmpfs 229705 372 229333 1% /dev
tmpfs 233378 1 233377 1% /dev/shm
tmpfs 233378 543 232835 1% /run
tmpfs 233378 16 233362 1% /sys/fs/cgroup
/dev/sda5 5241856 141 5241715 1% /home
/dev/sda1 3145728 328 3145400 1% /boot
tmpfs 233378 16 233362 1% /run/user/0
df命令
df - 報告文件系統磁盤空間的使用情況
df -a:顯示所有文件系統的磁盤使用情況,包括0塊(block)的文件系統。
df -h:以容易理解的格式輸出文件系統大小,例如124KB、345MB、46GB。
df -i:顯示i節點信息,而不是磁盤塊。
df -t:顯示各指定類型的文件系統的磁盤空間使用情況。
df -x:列出不是某一指定類型文件系統的磁盤空間使用情況。
df -T:顯示文件系統類型。
df 以512字節爲單位
df –k 以1024字節爲單位
1.2.7:inode的特殊作用
- 由於inode號碼與文件名分離,導致一些Unix/Linux系統具有以下的現象
1,當文件名包含特殊字符,可能無法正常刪除文件,直接刪除inode,也可以刪除文件
2,移動或者重命名文件時,只改變文件名,不影響inode號碼
3,打開一個文件後,系統通過inode號碼來識別該文件,不再考慮文件名
- 這使得軟件更新變得簡單,可以在不關閉軟件的情況下進行更新,不需要重啓
因爲系統通過inode號碼,識別運行中的文件,不通過文件名
更新的時候,新版文件以同樣的文件名,生成一個新的inode,不會影響到運行中的文件
等到下一次運行這個軟件的時候,文件名就會自動指向新版文件,舊版文件的inode則被回收
二:硬鏈接與軟鏈接
- 在Linux下面的鏈接文件有兩種:
- 一種類似於Windows的快捷方式功能的文件,可以快速連接到目標文件或目錄,這種稱爲軟鏈接
- 另一種則是通過文件系統的inode鏈接文件來產生新的文件名,而不是產生新文件,這種稱之爲硬鏈接
2.1:硬鏈接
- 一般情況下,文件名和inode號碼是一一對應關係,每個inode號碼對應一個文件名。
- 但是Linux系統允許,多個文件名指向同一個inode號碼。這表示可以用不同的文件名來訪問同樣的內容
ln命令可以創建硬鏈接,命令基本格式
ln 源文件 目標
不能對目錄做硬鏈接
硬鏈接:
文件名1--------node節點(abc)--------數據
|
文件名2--------node節點(abc)-----------
運行此命令後,源文件和目標文件的inode號碼相同,都指向同一個inode。
inode信息中的“鏈接數”此時就會增加1
- 當一個文件擁有多個硬鏈接時,對文件內容修改,會影響到所有文件名
但刪除一個文件名,不會影響另一個文件名的訪問
刪除一個文件名,就會使得inode信息中的“鏈接數”減少1
2.2:軟鏈接
-
軟鏈接就是再創建一個獨立的文件,而這個文件會讓數據的讀取指向它連接的那個文件的文件名
-
例如:文件A和文件B的inode號碼雖然不一樣,但是文件A的內容是文件B的路徑。
讀取文件A時,系統會自動將訪問者導向文件B
此時,文件A就稱爲文件B的“軟鏈接(soft link)”或者“符號鏈接(symbolic link)”
- 這表示,文件A依賴於文件B而存在,如果刪除了文件B ,打開文件A就會報錯
這是軟鏈接與硬鏈接的最大不同:文件A指向文件B的文件名,而不是文件B的inode號碼,文件B的inode“鏈接數”不會因此產生變化。
- 軟鏈接的創建命令的基本格式爲:
ln -s 源文件或目錄 目標文件或目錄
軟連接:
文件名1--------node節點(abc)--------數據
|
文件名2--------node節點(cde)
2.3:軟鏈接與硬鏈接總結
- 鏈接文件是爲文件或目錄建立鏈接文件
- 軟鏈接與硬鏈接對比
軟鏈接(符號鏈接) | 硬鏈接 | |
---|---|---|
刪除原始文件後 | 失效 | 仍舊可用 |
使用範圍 | 適用於文件或目錄 | 只可用於文件 |
保存位置 | 與原始文件可以位於不同的文件系統中 | 必須與原始文件在同一個文件系統(如一個Linux分區)內 |
- 刪除原始文件後,軟鏈接無法找到原始文件的文件名,所以會報錯(閃爍)。硬鏈接與原始文件inode相同,所以不影響訪問,仍舊可用。
三:恢復誤刪除的文件
-
刪除一個文件,實際上並不清除inode節點和block的數據,只是在這個文件的父目錄裏面的block中,刪除這個文件的名字
-
Linux是通過link的數量來控制文件的刪除的,只有當一個文件不存在任何link的時候,這個文件纔會被刪除
-
注意:在數據被誤刪除後,第一時間要做的就是卸載被刪除數據所在的分區,如果是根分區的 數據遭到誤刪,就需要將系統進入單用戶模式,並且將根分區以只讀模式掛載。這樣做的原 因很簡單,因爲將文件刪除後,僅僅是將文件的 inode 節點中的扇區指針清零,實際文件還 存儲在磁盤上,如果磁盤繼續以讀寫模式掛載,這些已刪除的文件的數據塊就可能被操作系統重新分配出去,在這些數據庫被新的數據覆蓋後,這些數據就真的丟失了,恢復工具也回 天無力。所以以只讀模式掛載磁盤可以儘量降低數據庫中數據被覆蓋的風險,以提高恢復數據成功的比例。
3.1:實驗:恢復XFS類型的文件
3.1.1:xfsdump命令格式
xfsdump -f 備份存放位置 要備份的路徑或者設備文件
-
xfsdump備份級別(默認爲0)
0:完全備份
1-9:增量備份
-
xfsdump常用選項:-f,-L,-M,-s
-
xfsrestore命令格式
xfsrestore -f 恢復文件的位置 存放恢復後文件的位置
3.2:xfsdump使用限制
- 只能備份已掛載的文件系統
- 必須使用root的權限才能操作
- 只能備份xfs文件系統
- 備份後的數據只能用xfsrestore解析
- 不能備份兩個具有相同UUID的文件系統
3.3:實驗過程:在CentOS 7中恢復xfs類型的數據
第一步:格式化爲xfs文件類型,掛載磁盤,並查看掛載情況
[root@localhost /]# mkfs.xfs -f /dev/sdb1
[root@localhost /]# mount /dev/sdb1 /data/
[root@localhost /]# df -Th
第二步:在掛載點中創建文件
[root@localhost /]# cd /data/
[root@localhost data]# cp /etc/passwd ./ 將/etc/passwd複製當前目錄下
[root@localhost data]# mkdir test 在data目錄下創建test目錄
[root@localhost data]# touch test/a 創建test/a空文件
[root@localhost data]# yum -y install tree 安裝tree工具
[root@localhost data]# tree /data 查看/data結構
'第三步:備份文件'
[root@localhost ~]# ls /opt '查看/opt目錄下內容'
rh
[root@localhost ~]# xfsdump -f /opt/xfs_dump /dev/sdb1 '將/dev/sdb1中的文件備份到/opt/xfs_dump中'
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
============================= dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
-> xfs_dump '請輸入此轉儲會話的標籤xfs_dump,即將文件備份到xfs_dump中'
session label entered: "xfs_dump"
...此處省略內容
============================= media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
-> /dev/sdb1 '請輸入驅動器0中的媒體標籤/dev/sdb1,即備份/dev/sdb1中的文件'
media label entered: "/dev/sdb1"
...此處省略內容
[root@localhost ~]# ls /opt '查看/opt下是否有備份文件'
rh xfs_dump
'第四步:刪除文件並嘗試恢復'
[root@localhost ~]# cd /data/
[root@localhost data]# ls
passwd test
[root@localhost data]# rm -rf * 刪除所有文件
[root@localhost data]# ls 查看是否刪除
[root@localhost ~]# xfsrestore -f /opt/dump_sdb1 /data/ '將/opt/xfs_dump恢復到/data中'
[root@localhost ~]# ls /date/ 查看是否恢復
注意:
1、xfsdump 不支持沒有掛載的文件系統備份,所以只能備份已掛載的;
2、xfsdump 必須使用 root 的權限才能操作(涉及文件系統的關係);
3、xfsdump 只能備份 XFS 文件系統;
4、xfsdump 備份下來的數據(檔案或儲存媒體)只能讓 xfsrestore 解析;
5、xfsdump 是透過文件系統的 UUID 來分辨各個備份檔的,因此不能備份兩個具有相同 UUID 的文件系統。
3.4:實驗:恢復EXT類型的文件
編譯安裝extundelete軟件包
-
安裝依賴包
e2fsprogs-libs-1.41.12-18.el6.x86-64.rpm
e2fsprogs-devel-1.41.12-18.el6.x86-64.rpm
-
即可將extundelete軟件包解壓、配置、編譯及安裝
3.5:實驗過程:在CentOS7.6中恢復ext3或者ext4文件
第一步:安裝上述兩個依賴包,並且安裝wegt
第二步:編譯安裝
還需要安裝一個extundelete-0.2.4.tar.bz2軟件
注意:#####沒有make 安裝make####
make是gcc的編譯器,一定要安裝
1、安裝:
yum -y install gcc automake autoconf libtool make
2、安裝g++:
yum install gcc gcc-c++
切換到bin目錄下做軟鏈接
第三步:刪除並執行恢復操作
虛擬機添加新硬盤,使用 fdisk 命令創建新分區,將其掛載到/data目錄下,往該目錄下新建一些文件或目錄
fdisk -l
fdisk /dev/sdb
n
p
回車
回車
回車
p
w
mkfs.ext3 /dev/sdb1 格式化成ext3文件類型
mkdir /data 創建data目錄
mount /dev/sdb1 /data 將硬盤進行掛載
cd /data 切換到data目錄下
echo a>a && echo a>b && echo a>c && echo a>d 創建文件a,b,c,d,&&是一步步的執行命令
ls 查看文件,創建成功
[root@localhost data]# rm -rf a b 刪除a b 文件
[root@localhost data]# ls
c d lost+found
[root@localhost data]# cd 切到家目錄
[root@localhost ~]# umount /data/ 卸載掛載
[root@localhost ~]# extundelete /dev/sdb1 --restore-all 恢復刪除的數據
[root@localhost ~]# cd RECOVERED_FILES/ 進入恢復的目錄
[root@localhost RECOVERED_FILES]# ll 查看恢復的文件
四:日誌文件的分類
4.1:日誌的功能
- 用於記錄系統,程序運行中發生的各種事件
日誌文件是用於記錄Linux系統中各種運行消息的文件,相當於Linux主機的“日記”
不同的日誌文件記載了不同類型的信息,如Linux內核消息,用戶登錄事件,程序錯誤等
- 通過閱讀日誌,有助於診斷和解決系統故障
在Linux系統中運行的程序通常會把系統消息和錯誤消息寫入相應的日誌文件
當 主機遭受攻擊時,日誌文件還可以幫助尋找攻擊者留下的痕跡
4.2:日誌文件的分類
- 內核及系統日誌
由系統服務rsyslog統一進行管理,日誌格式基本相似
- 用戶日誌
記錄系統用戶登錄及退出系統的相關信息,包括用戶名,登錄的終端,登錄時間,來源主機,正在使用的進程操作等。
- 程序日誌
由各種應用程序獨立管理的日誌文件,記錄格式不統一
程序安裝後不會生成日誌文件,只有在啓動的時候纔會生成日誌文件,沒有訪問它,日誌文件就是空的
4.3:日誌保存位置
-
默認位於:/var/log目錄下
Linux系統本身和大部分服務器程序的日誌文件都默認存放在/var/log下
一部分程序共用一個日誌文件,一部分程序使用單個日誌文件,而有些大型服務器程序因日誌文件較多,所以會在/var/log目錄中建立相應的子目錄來存放日誌文件
有相當一部分日誌文件只有root用戶纔有權讀取,保證了相關日誌信息的安全性
4.4:主要日誌文件介紹
日誌類別 | 存放目錄 |
---|---|
內核及公共消息日誌 | /var/log/messages |
計劃任務日誌 | /var/log/cron |
系統引導日誌 | /var/log/dmesg |
郵件系統日誌 | /var/log/maillog |
用戶登錄日誌 | 用戶登錄日誌/var/log/lastlog,/var/log/secure,/var/log/wtmp,/var/log/btmp |
- /var/log/messages:記錄Linux內核消息和各種應用程序的公共日誌信息,包括啓動,I/O錯誤,網絡錯誤,程序故障等
對於未使用獨立日誌文件的應用程序或服務,一般都可以從該日誌文件中獲得相關的時間記錄信息
-
/var/log/cron:記錄crond計劃任務產生的事件信息
-
/var/log/dmesg:記錄Linux系統在引導過程中的各種事件信息
-
/var/log/maillog:記錄進入或發出系統的電子郵件活動
-
/var/log/lastlog:記錄每個用戶最近的登錄時間
-
/var/log/secure:記錄用戶認證相關的安全事件信息
-
/var/log/wtmp:記錄每個用戶登錄,註銷及系統啓動和停機事件
-
/var/log/btmp:記錄失敗的,錯誤的登錄嘗試及驗證事件
-
yum安裝的都存放在/var/log
手工編譯安裝的都是自己指定的目錄
五:日誌文件分析
- 分析日誌文件的目的在於通過瀏覽日誌查找關鍵信息,對系統服務進行調試,以及判斷髮生故障的原因等
- 對於大多數文本格式的日誌文件(如內核及系統日誌,大多數的程序日誌),只要使用tail,more,less,cat等文本處理工具就可以查看日誌內容
- 對於一些二進制格式的日誌文件(如用戶日誌),需要使用特定的查詢命令
5.1:內核及系統日誌
5.1.1:由系統服務rsyslogd統一管理
- 軟件包:rsyslog-7.4.7-16.el7.x86_64
- 主要程序:/sbin/rsyslogd
- 配置文件:/etc/rsyslog.conf
5.1.2:日誌消息的級別
- 受rsyslogd服務管理的日誌文件都是Linux系統中最重要的日誌文件,它們記錄了Linux系統中內核,用戶認證,郵件,計劃任務等最基本的系統消息
- 在Linux內核中,根據日誌消息的重要程度不同,將其分爲不同的優先級(數字等級越小,優先級越高,消息越重要)
級別 | 解釋 |
---|---|
0 EMERG(緊急) | 會導致主機系統不可用的情況 |
1 ALERT(警告) | 必須馬上採取措施解決的問題 |
2 CRIT(嚴重) | 比較嚴重的情況(某些功能不可用) |
3 ERR(錯誤) | 運行出現錯誤 |
4 WARNING(提醒) | 可能會影響系統功能的事件 |
5 NOTICE(注意) | 不會影響系統但值得注意 |
6 INFO(信息) | 一般信息 |
7 DEBUG(調試) | 程序或系統調試信息等(做維護的時候可能會用到) |
- 內核及大多數系統消息都被記錄到公共日誌文件/var/log/messages中,而其他一些程序消息被記錄到各自獨立的日誌文件中
- 日誌消息還可以記錄到特定的存儲設備中,或者直接發送給指定用戶
5.2.3:日誌記錄的一般格式
[root@localhost log]# more messages
Oct 23 14:13:17 localhost journal: Runtime journal is using 8.0M (max allowed 91.1M, trying
to leave 136.7M free of 903.6M available → current limit 91.1M).
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpuset
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpu
Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys cpuacct
...省略內容
以這段消息舉例:Oct 23 14:13:17 localhost kernel: Initializing cgroup subsys
時間標籤:Oct 23 14:13:17:消息發出的日期和時間
主機名:localhost:生成消息的計算機的名稱
子系統名稱:kernel:發出消息的應用程序的名稱
消息:Initializing cgroup subsys :消息的具體內容
5.2:用戶日誌
5.2.1:保存目錄
- 保存了用戶登錄,退出系統等相關信息
/var/log/lastlog:最近的用戶登錄事件
/var/log/wtmp:用戶登錄,註銷及系統開,關機事件
/var/log/utmp:當前登錄的每個用戶的詳細信息
/var/log/secure:與用戶驗證相關的安全性事件
5.2.2:分析工具
-
分析工具
users,who,w,last,lastb
-
查詢當前登錄的用戶情況:users,who,w命令
- user命令只簡單的輸出當前登錄的用戶名稱,每個顯示的用戶名對應一個登錄會話。如果一個用戶有不止一個登錄會話,那他的用戶名將顯示與其相同的次數
[root@localhost ~]# users
root root root 'root用戶打開三個終端'
- who命令用戶報告當前登錄到系統中的每個用戶的信息
- 使用該命令,系統管理員可以查看當前系統存在哪些不合法用戶,從而對其進行審計和處理
- who命令的默認輸出包括用戶名,終端類型,登錄日期及遠程主機
[root@localhost ~]# who
root :0 2019-11-16 21:24 (:0)
root pts/0 2019-11-16 21:25 (192.168.197.1)
root pts/1 2019-11-16 21:27 (:0)
- w命令用於顯示當前系統中的每個用戶及其所運行的進程信息,比users,who命令的輸出內容要更加豐富一些
[root@localhost ~]# w
00:29:58 up 3:05, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 21:24 ?xdm? 28.45s 0.08s /usr/libexec/gnome-session
root pts/0 192.168.197.1 21:25 6.00s 0.09s 0.02s w
root pts/1 :0 21:27 3:02m 0.01s 0.01s bash
- 查詢用戶登錄的歷史記錄:last,lastb命令
last命令用於查詢成功登錄到系統的用戶記錄,最近的登錄情況將顯示在最前面
通過last命令可以及時掌握Linux主機的登錄情況,若發現未經授權的用戶登錄過,則表示當前主機可能已被入侵
[root@localhost ~]# last
root pts/1 :0 Sat Nov 16 21:27 still logged in
root pts/0 192.168.197.1 Sat Nov 16 21:25 still logged in
root pts/0 :0 Sat Nov 16 21:24 - 21:24 (00:00)
root :0 :0 Sat Nov 16 21:24 still logged in
reboot system boot 3.10.0-693.el7.x Sat Nov 16 21:24 - 00:32 (03:08)
root pts/0 :1 Sat Nov 16 21:23 - 21:23 (00:00)
root :1 :1 Wed Oct 23 14:15 - crash (24+07:08)
cn-tangz :0 :0 Wed Oct 23 14:15 - 14:15 (00:00)
reboot system boot 3.10.0-693.el7.x Wed Oct 23 14:13 - 00:32 (24+10:19)
wtmp begins Wed Oct 23 14:13:18 2019
- lastb命令用於查詢登錄失敗的用戶記錄,如登錄的用戶名錯誤,密碼不正確等情況都會記錄在案。
登錄失敗的情況屬於安全事件,因爲這表示可能有人在嘗試猜出你的密碼
除了使用lastb命令查看以外,還可以直接從安全日誌文件/var/log/secure中獲得相關信息
[root@localhost ~]# lastb
lisi :1 :1 Sun Nov 17 00:35 - 00:35 (00:00)
lisi :1 :1 Sun Nov 17 00:35 - 00:35 (00:00)
btmp begins Sun Nov 17 00:35:42 2019
或者
[root@localhost ~]# tail /var/log/secure
Nov 17 00:35:30 localhost gdm-password]: pam_unix(gdm-password:auth): conversation failed
Nov 17 00:35:30 localhost gdm-password]: pam_unix(gdm-password:auth): auth could not identify password for [root]
Nov 17 00:35:30 localhost gdm-password]: pam_succeed_if(gdm-password:auth): requirement "uid >= 1000" not met by user "root"
Nov 17 00:35:30 localhost gdm-password]: gkr-pam: no password is available for user
Nov 17 00:35:31 localhost gdm-launch-environment]: pam_unix(gdm-launch-environment:session): session opened for user gdm by (uid=0)
Nov 17 00:35:32 localhost polkitd[561]: Registered Authentication Agent for unix-session:c2 (system bus name :1.163 [/usr/bin/gnome-shell], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)
Nov 17 00:35:41 localhost unix_chkpwd[38503]: password check failed for user (lisi)
Nov 17 00:35:41 localhost gdm-password]: pam_unix(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty2 ruser= rhost= user=cn-lisi
Nov 17 00:35:45 localhost unix_chkpwd[38508]: password check failed for user (lisi)
Nov 17 00:35:45 localhost gdm-password]: pam_unix(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty2 ruser= rhost= user=clisi
上述結果可以發現,lisi用戶登錄失敗
5.3:程序日誌
5.3.1:由相應的程序獨立進行管理
- web服務:/var/log/httpd/
access_log,error_log(httpd網站服務程序使用的兩個日誌文件access_log和error_log,分別記錄客戶訪問事件,錯誤事件。)
- 代理服務:/var/log/squid/
access.log , cache.log
- FTP服務:/var/log/xferlog
5.3.2:分析工具
- 文本查看,grep過濾檢索,webmin管理套件中查看
- awk,sed等文本過濾,格式化編輯工具
- webalizer,awstats等專用日誌分析工具
5.3.3:日誌管理策略
-
及時做好備份和歸檔
-
延長日誌保存期限
-
控制日誌訪問權限
日誌中可能會包含各類敏感信息,如賬戶,口令等
-
幾種管理日誌
將服務器的日誌文件發到統一的日誌文件服務器