我們知道在Linux系統中有大量的日志文件可以用于查看應用程序的各種信息,但是對于用戶的操作行為(如某用戶修改刪除了某文件)卻無法通過這些日志文件來查看,如果我們想實現監管企業員工的操作行為就需要開啟審計功能,也就是audit。
成都創新互聯是一家從事企業網站建設、成都網站設計、成都做網站、外貿網站建設、行業門戶網站建設、網頁設計制作的專業的建站公司,擁有經驗豐富的網站建設工程師和網頁設計人員,具備各種規模與類型網站建設的實力,在網站建設領域樹立了自己獨特的設計風格。自公司成立以來曾獨立設計制作的站點近千家。
1、首先執行以下命令開啟auditd服務
| 1 | service auditd start |
2、接著查看看auditd的服務狀態,有兩種方法可以實現,使用auditctl命令時主要看enabled是否為1,1為開啟,0為關閉
[root@ns-master-c01 ~]``# service auditd status` |
`auditd (pid 20594) is running...
[root@ns-master-c01 ~]``# auditctl -s
| 5 | AUDIT_STATUS: enabled=1 flag=1 pid=20594 rate_limit=0 backlog_limit=320 lost=0 backlog=0 |
3、開啟了autid服務后,所有的審計日志會記錄在/var/log/audit/audit.log文件中,該文件記錄格式是每行以type開頭,其中紅框處是事件發生的時間(代表從1970年1月1日到現在過了多久,可以用date命令轉換格式),冒號后面的數字是事件ID,同一個事件ID是一樣的。
4、audit可以自定義對指定的文件或命令進行審計(如監視rm命令被執行、/etc/passwd文件內容被改變),只要配置好對應規則即可,配置規則可以通過命令行(臨時生效)或者編輯配置文件(永久生效)兩種方式來實現。
命令行語法(臨時生效****)****:
| 1 | auditctl -w /bin/``rm -p x -k removefile ``#-w指定所要監控的文件或命令 |
| 2 | #-p指定監控屬性,如x執行、w修改 |
| 3 | #-k是設置一個關鍵詞用于查詢 |
編輯配置文件(****永久生效)****:
auditd的配置文件為/etc/audit/audit下的auditd.conf 和audit.rules,auditd.conf 主要是定義了auditd服務日志和性能等相關配置,audit.rules才是定義規則的文件,下面是一個例子,其實就是把auditctl的命令直接拿過來即可,auditctl里支持的選項都可以在這個文件里指定
修改完后重啟服務
| 1 | service auditd restart |
5、如果直接使用tailf等查看工具進行日志分析會比較麻煩,好在audit已經提供了一個更好的事件查看工具—— ausea****rch, 使用auserach -h查看下該命令的用法:
這里列出幾個常用的選項:
-a number #只顯示事件ID為指定數字的日志信息,如只顯示926事件:ausearch -a 926
-c commond #只顯示和指定命令有關的事件,如只顯示rm命令產生的事件:auserach -c rm
-i #顯示出的信息更清晰,如事件時間、相關用戶名都會直接顯示出來,而不再是數字形式
-k #顯示出和之前auditctl -k所定義的關鍵詞相匹配的事件信息
通過下圖可以看到每個事件被虛線分開,用戶名和執行的操作也都能清晰的看到了:
6、使用auditctl還可以查看和清空規則
查看源碼
embed width="16" height="16" id="highlighter_638828_clipboard" type="application/x-shockwave-flash" title="復制到剪貼板" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_638828" menu="false" src="" style="margin: 0px; padding: 0px; outline: 0px; zoom: 1; max-width: 96%;"
摘自
| 1 | auditctl -l 查看定義的規則 |
| 2 | auditctl -D 清空定義的規則 |
日志:系統、軟件 和 用戶操作交互信息的記錄文件。用于系統審核,日常故障快速定位和排錯。
日志文件保存在 /var/log 和 /var/run 目錄下。在 RedHat 7 中,系統日志消息由兩個服務負責處理,它們是 systemd-journald 和 rsyslogd。
日志的保存時間系統默認是4周,可以通過 cat /etc/logrotate.conf 里面的一項參數查到。rotate 可以修改。
主要日志文件介紹:
/var/log/messages:系統日志,主要記錄內核和公共消息。
/var/log/cron:計劃執行任務日志。
/var/log/dmesg:系統引導日志。
/var/log/maillog:郵件日志。
/var/log/lastlog:用戶登錄日志。(用 lastlog 命令)
/var/log/boot.log:系統啟動日志。
/var/log/secure:安全和身份驗證日志 。
/var/log/wtmp:記錄所有用戶登錄的詳細信息。(用 last 命令)
/var/log/btmp:記錄失敗的登錄記錄(用 lastb 命令)
/var/run/utmp:用戶登錄、注銷及系統開、關等事件。(用 w / who 命令)
(wtmp、btmp 和?utmp 是二進制文件,不能用cat、vi、tail、more這些命令打開查看)
1、/var/log/messages:系統日志,主要記錄內核和公共消息。
1)、messages 信息項包括:事件發生的日期和時間、主機,終端名、進程 和 事件日志。
2)、紅色下劃線:systemctl restart sshd 重啟 sshd 服務。
黃色下劃線:tail /var/log/messages 查看 messages 日志。
藍色方框:messages 日志已經可以查到重啟 sshd 服務的記錄。
綠色下劃線:每個動作都記錄得很清楚。暫停中(Stopping)、已暫停(Stopped)、啟動中(Starting) 和 已啟動(Started)
2、/var/log/cron:計劃執行任務日志。
1)、cron 信息項包括:事件發生的日期和時間、主機,終端名、進程 和 事件日志。
2)、cron 保存的是計劃任務的日志,我們也可以通過特定輸出查看計劃進程的一些規律。從中也可以梳理一下計劃任務的概念。好像?run-parts(/etc/cron.hourly) 進程,基本都是從開機開始,整點 1 個小時就執行一次。一次由兩個事件為一組,一條 starting 0anacron ,另一條?finished 0anacron。
輸入 grep run-parts'('/etc/cron.hourly')' 的時候,()括號需要用單引號引起來。?
CROND進程,基本上也是從開機開始,整點 1 個小時就執行一次。
run-parts(/etc/cron.daily) 進程每天開機執行一次。一次由四個事件為一組,四個事件里面有兩個事件是對應關系。starting man-db.cron 對應?finished man-db.cron,starting logrotate 對應 finished logrotate。
從 cron 日志知道系統的計劃任務什么時候觸發,執行了什么事件,產生了什么信息。?
3、/var/log/dmesg:系統引導日志,顯示硬件相關的信息。
head -20 dmesg | nl 列出開頭 20 行信息。
4、/var/log/maillog:郵件日志。
紅色下劃線:tail maillog 查看 maillog 后 10 行信息。
黃色下劃線:starting the Postfix mail system 啟動 Postfix 郵件系統。daemon started 守護進程啟動完成。
maillog 記錄的信息都是和郵件有關。
5、/var/log/lastlog:記錄所有用戶登錄最后一次登錄本系統的時間信息。用 lastlog 讀取信息。lastlog 的幾列內容:Username(用戶名)、Port(端口)、From(登錄IP)、Latest(最后登錄時間)。
系統用戶是調用系統當中一些特殊服務的用戶,不能登錄系統(所以它們的登錄狀態都是顯示“**Never logged in**”從來沒有登錄)。能夠登錄系統的只有 root 和 新建的普通用戶。
6、/var/log/boot.log:系統啟動日志。
head /var/log/boot.log 列出頭 10 條系統啟動的信息(內容較長,里面記錄了多次啟動的信息)。
通過 3 次的重啟,查看 boot.log 大小。每重啟一次文件的容量就會增大。也證明了每次啟動都會往 boot.log 這個文件寫信息。
7、/var/log/secure:安全和身份驗證日志 。
tail secure 列出 secure 文件最后 10 行信息。通過 secure 的信息可以發現記錄的是安全相關的信息,記錄最多的是哪些用戶登錄服務器的相關日志。
黃色下劃線:Failed password for root —— root 的密碼錯誤。
紅色下劃線:Accepted password for root —— 密碼正確,root 用戶接受的密碼。
綠色下劃線:pam_unix(sshd:session): session opened for user root ?—— 為 root 用戶建立會話。
8、/var/log/wtmp:記錄所有用戶登錄的詳細信息。一個二進制文件,不能用cat、vi、tail、more這些命令打開查看。用 last 命令查看。last 作用是顯示近期用戶或終端登錄的情況(包括:登錄、注銷及系統的啟動、停機的事件。因此隨著系統正常運行時間的增加,該文件的大小也會越來越大,)
last -n 10 —— -n 跟一個數字,指定顯示最近登錄的數據。(或者 last -10 一樣效果)
顯示的內容有六列:
第一列:用戶名。
第二列:終端位置。(pts/0 偽終端,SSH 或 telnet 等工具遠程連接的用戶,tty0 直接連接到計算機或本地連接的用戶,后面的數字代表連接編號)。
第三列:登錄 IP 或 內核。(如果是 0.0 或者 什么都沒有,意味著用戶通過本地終端連接,除了啟動活動,內核版本會顯示在狀態中)。
第四列:開始時間。
第五列:結束時間。(still、login in 尚未推出,down 直到正常關機,crash 直到強制關機)。
第六列:持續時間。
9、/var/log/btmp:記錄失敗的登錄記錄,主要查看錯誤的登錄信息。一個二進制文件,不能用cat、vi、tail、more這些命令打開查看。用 lastb?命令查看。
lastb -n 10 —— -n 跟一個數字,指定顯示最近登錄的數據。(或者 lastb -10 一樣效果)
顯示的內容有六列:
第一列:用戶名。
第二列:終端位置。(連接失敗:notty)。
第三列:登錄 IP。
第四列:開始時間。
第五列:結束時間。
第六列:持續時間。
10、/var/run/utmp:用戶登錄、注銷及系統開、關等事件。一個二進制文件,不能用cat、vi、tail、more這些命令打開查看。用?w / who 命令查看。
w 命令:查看登錄者的信息及行為。
第一行:系統當前時間、系統沒有中斷持續性的運行時間、當前登錄用戶數、CPU在之前 1 分鐘、5分鐘、15分鐘的平均負載。
USER: 登錄用戶名。
TTY:登錄后系統分配的終端號。(tty:物理機本機終端、pts:遠程終端)?
FROM:遠程主機名 IP。(tty 物理機本機不顯示、pts 遠程終端會顯示 IP)?
LOGIN@ :登錄時間。
IDLE:用戶閑置時間 。這是個計時器,用戶執行任何操作,計時器就會被重置。(這里顯示的時間是距離上次命令操作后多久沒有進行操作的閑置時間)
JCPU:執行命令進程所消耗的總時間。 終端連接的所有進程占用時間,包括當前正在運行作業占用的時間。
PCPU:當前進程所消耗 CPU 的時間。?
WHAT:用戶正在運行的進程 或 命令。(-bash 進程是終端進程)
who 命令:顯示關于當前在本地系統上的所有用戶信息。who 和 w 差不多,who 顯示的內容更為簡潔。who 命令顯示以下內容:登錄名、tty、登錄日期 和 時間。如果用戶是從遠程終端登錄的,那么該終端的 IP 也會顯示出來。
11、whoami:顯示自己的登錄用戶。
在上文中,我們已經詳細介紹 linux 三劍客的基本使用,接下來我們看看具體在性能測試領域的運用,本文主要介紹的是在 Tomcat 和 Nginx access日志的統計分析。
server.xml 使用配置方式,%D-請求時間,%F-響應時間
字段說明如下:
日志樣例:
使用默認 combined 的經典格式上擴展 response_timeupstream_response_time
nginx.conf 使用配置方式:
字段說明如下:
日志示例:
為了能理解 AWK 程序,我們下面概述其基本知識。
模式( pattern ) 用于匹配輸入中的每行文本。對于匹配上的每行文本,awk 都執行對應的 動作( action )。模式和動作之間使用花括號隔開。awk 順序掃描每一行文本,并使用 記錄分隔符(一般是換行符)將讀到的每一行作為 記錄,使用 域分隔符( 一般是空格符或制表符 ) 將一行文本分割為多個 域, 每個域分別可以使用 2, … 表示。1 表示第一個域,表示第二個域,n 表示第 n 個域。 $0 表示整個記錄。模式或動作都可以不指定,缺省模式的情況下,將匹配所有行。缺省動作的情況下,將執行動作 {print},即打印整個記錄。
此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。 使用 awk 分解出Nginx access日志中的信息
以此類推…… 當我們使用默認的域分割符時,我們可以從日志中解析出下面不同類型的信息:
我們不難發現,僅使用默認的域分隔符,不方便解析出請求行、引用頁和瀏覽器類型等其他信息,因為這些信息之中包含不確定個數的空格。 因此,我們需要把域分隔符修改為 “ ,就能夠輕松讀出這些信息。
注意:這里為了避免 Linux Shell 誤解 “ 為字符串開始,我們使用了反斜杠,轉義了 “ 。 現在,我們已經掌握了 awk 的基本知識,以及它是怎樣解析日志的。
此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。
如果我們想知道那些類型的瀏覽器訪問過網站,并按出現的次數倒序排列,我可以使用下面的命令:
此命令行首先解析出瀏覽器域,然后使用管道將輸出作為第一個 sort 命令的輸入。第一個 sort 命令主要是為了方便 uniq 命令統計出不同瀏覽器出現的次數。最后一個 sort 命令將把之前的統計結果倒序排列并輸出。
我們可以使用下面的命令行,統計服務器返回的狀態碼,發現系統可能存在的問題。
正常情況下,狀態碼 200 或 30x 應該是出現次數最多的。40x 一般表示客戶端訪問問題。50x 一般表示服務器端問題。 下面是一些常見的狀態碼:
HTTP 協議狀態碼定義可以參閱:
查找并顯示所有狀態碼為 404 的請求
統計所有狀態碼為 404 的請求
現在我們假設某個請求 ( 例如 : URI: /path/to/notfound ) 產生了大量的 404 錯誤,我們可以通過下面的命令找到這個請求是來自于哪一個引用頁,和來自于什么瀏覽器。
有時候會發現其他網站出于某種原因,在他們的網站上使用保存在自己網站上的圖片。如果您想知道究竟是誰未經授權使用自己網站上的圖片,我們可以使用下面的命令:
注意:使用前,將 修改為自己網站的域名。
統計共有多少個不同的 IP 訪問:
統計每一個 IP 訪問了多少個頁面:
將每個 IP 訪問的頁面數進行從小到大排序:
統計 2018 年 8 月 31 日 14 時內有多少 IP 訪問 :
統計訪問最多的前十個 IP 地址
查看某一個 IP訪問了哪些頁面:
統計某個 IP 的詳細訪問情況,按訪問頻率排序
列出傳輸大小最大的幾個文件
列出輸出大于 204800 byte ( 200kb) 的頁面以及對應頁面發生次數
列出訪問最頻的頁面(TOP100)
列出訪問最頻的頁面([排除php頁面】(TOP100)
列出頁面訪問次數超過100次的頁面
列出最近1000條記錄,訪問量最高的頁面
統計每分鐘的請求數,top100的時間點(精確到分鐘)
統計每小時的請求數,top100的時間點(精確到小時)
統計每秒的請求數,top100的時間點(精確到秒)
統計當天的 pv
說明:
可以使用下面的命令統計出所有響應時間超過 3 秒的日志記錄。
注意:NF 是當前記錄中域的個數。$NF 即最后一個域。
列出php頁面請求時間超過3秒的頁面,并統計其出現的次數,顯示前100條
列出相應時間超過 5 秒的請求,顯示前20條
統計蜘蛛抓取次數
統計蜘蛛抓取404的次數
通過本文的介紹,我相信同學們一定會發現 linux三劍客強大之處。在命令行中,它還能夠接受,和執行外部的 AWK 程序文件,可以對文本信息進行非常復雜的處理,可以說“只有想不到的,沒有它做不到的”。
1. 前言
在Linux日常管理中,我們肯定有查看某些服務的日志需求,或者是系統本身的日志。本文主要介紹如何查看Linux的系統日志,包括文件的路徑、工具的使用等等。會看Linux日志是非常重要的,不僅在日常操作中可以迅速排錯,也可以快速的定位。
2. 如何查看Linux日志
Linux日志文件的路徑一般位于,/var/log/,比如ngix的日志路徑為/var/log/nginx/,如果要查看某服務的日志,還可以使用systemctl status xxx,比如查看ssh服務的壯態,systemctl status sshd
查看Linux某服務的日志
Liunx的配置文件在/etc/rsyslog.d里,可以看到如下信息
在linux系統當中,有三個主要的日志子系統:
1、連接時間日志:由多個程序執行,把記錄寫入到/var/log/wtmp和/var/run/utmp,
login等程序會更新wtmp和utmp文件,使系統管理員能夠跟蹤誰在何時登錄到系統。
2、進程統計:由系統內核執行,當一個進程終止時,為每個進程往進程統計文件中寫一個記錄。進程統計的目的是為系統中的基本服務提供命令使用統計
3、錯誤日志:由rsyslogd守護程序執行,各種系統守護進程、用戶程序和內核通過rsyslogd守護程序向文件/var/log/messages報告值得注意的時間。另外有許多linux程序創建日志,像HTTP和FTP這樣提供的服務器也保持詳細的日志。
4、其他日志……
查看Linux日志默認路徑
可以看到在/var/log目錄下存在很多的日志文件,接下來就對里面的一些常用日志文件進行分析
主要日志文件介紹:
內核及公共消息日志:/var/log/messages
計劃任務日志:/var/log/cron
系統引導日志:/var/log/dmesg
郵件系統日志:/var/log/maillog
用戶登錄日志:/var/log/lastlog
/var/log/boot.log(記錄系統在引導過程中發生的時間)
/var/log/secure (用戶驗證相關的安全性事件)
/var/log/wtmp(當前登錄用戶詳細信息)
/var/log/btmp(記錄失敗的的記錄)
/var/run/utmp(用戶登錄、注銷及系統開、關等事件)
日志文件詳細介紹:
/var/log/secure
Linux系統安全日志,記錄用戶和工作組的情況、用戶登陸認證情況
例子:我創建了一個zcwyou的用戶,然后改變了該用戶的密碼,于是該信息就被記錄到該日志下
Linux系統安全日志默認路徑
該日志就詳細的記錄了我操作的過程。
內核及公共信息日志,是許多進程日志文件的匯總,從該文件中可以看出系統任何變化
查看Linux內核及公共信息日志
系統引導日志
該日志使用dmesg命令快速查看最后一次系統引導的引導日志
查看Linux系統系統引導日志
最近的用戶登錄事件,一般記錄最后一次的登錄事件
該日志不能用諸如cat、tail等查看,因為該日志里面是二進制文件,可以用lastlog命令查看,它根據UID排序顯示登錄名、端口號(tty)和上次登錄時間。如果一個用戶從未登錄過,lastlog顯示 Never logged。
該日志文件永久記錄每個用戶登錄、注銷及系統的啟動、停機的事件。該日志為二進制文件,不能用諸如tail/cat/等命令,使用last命令查看。
記錄郵件的收發
此文件是記錄錯誤登錄的日志,可以記錄有人使用暴力破解ssh服務的日志。該文件用lastb打開
該日志記錄當前用戶登錄的情況,不會永久保存記錄。可以用who/w命令來查看
3. 常用的日志分析工具與使用方法
3.1 統計一個文本中包含字符個數
3.2 查看當天訪問排行前10的url
3.3 查看apache的進程數
3.4 訪問量前10的IP
cut部分表示取第1列即IP列,取第4列則為URL的訪問量
3.5 查看最耗時的頁面
按第2列響應時間逆序排序
3.6 使用grep查找文件中指定字符出現的次數
-o 指示grep顯示所有匹配的地方,并且每一個匹配單獨一行輸出。這樣只要統計輸出的行數就可以知道這個字符出現的次數了。
4. 總結
查看Linux日志需求了解和熟悉使用一些常用的工具方能提升我們的查找和定位效率。比如使用 Grep 搜索,使用Tail命令,使用Cut,使用AWK 和 Grok 解析日志和使用 Rsyslog 和 AWK 過濾等等,只要能掌握這些工具。我們才能高效地處理和定位故障點。
文章標題:linux日志分析命令 linux 日志記錄
文章轉載:http://m.kartarina.com/article20/dogegco.html
成都網站建設公司_創新互聯,為您提供Google、動態網站、用戶體驗、品牌網站制作、、網頁設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯