天天看點

日志管理

/var/log

常用的系統日志如下:

核心啟動日志:/var/log/messages

系統報錯或重新開機服務等日志:/var/log/messages

郵件系統日志:/var/log/maillog

cron(定制任務日志):/var/log/cron #計劃日志執行成功與否,在這個檔案中

驗證系統使用者登入: /var/log/secure 

記錄所有的登入和登出:/var/log/wtmp

每個使用者最後登入資訊:/var/log/lastlog

錯誤的登入資訊:/var/log/btmp

>/var/log/wtmp #清空登入登出記錄

last #檢視wtmp

lastlog #檢視使用者最後登入時間

lastb #檢視錯誤登入資訊,可以判斷是否存在暴力破解

2.日志記錄方式: 先分類,然後每個類中再分級别

主要7種日志分類(FACILITY):

authpriv   安全認證相關

cron       at和cron定時相關

daemon     背景程序相關

kern       核心産生

lpr        列印系統産生

mail       郵件系統相關

syslog     日志服務本身

news       新聞系統  (和BBS差不多,新聞討論區)

uucp       uucp系統産生 。Unix-to-Unix Copy(UNIX至UNIX的拷貝),Unix系統的一項功能,允許計算機之間以存儲-轉發方式交換e-mail和消息。在Internet興起之前是Unix系統之間連網的主要方式。

local0到local7   #共8個類型,系統保留的:8個系統日志類型,給其它程式使用。或使用者 自定義用

8個日志級别:以下排列,由輕到重

級别(PRIOROTY):

debug                 排錯資訊。開發人

info                  正常資訊

notice                稍微要注意的

warn                  警告

err(error)            錯誤

crit(critical)         關鍵的錯誤

alert                 警報警惕

emerg(emergency)      緊急,突發事件

日志服務:

1).rhel5:

服務名稱:syslog

配置檔案:

#vim /etc/syslog.conf

2) .RHEL6:rsyslog

#vim /etc/rsyslog.conf

3).RHEL7:rsyslog

進入配置檔案顯示内容如下:

1. kern.*  核心類型的所級别日志

2 *.info;mail.none;news.none;authpriv.none;cron.none:由于 mail, news, authpriv, cron 等類别産生的訊息較多,是以在 /var/log/messages 裡面不記錄這些項目。除此其他訊息都寫入/var/log/messages 中。是以messages 檔案很重要

3. authpriv.* 認證方面的訊息均寫入 /var/log/secure 檔案;

4. mail.*:郵件方面的訊息則均寫入 /var/log/maillog 檔案;

5. cron.*:例行性工作排程均寫入 /var/log/cron 檔案;

6. local7.*:将本機開機時應該顯示到螢幕的訊息寫入到 /var/log/boot.log 檔案中;

/etc/rsyslog.conf  中日志輸入規則:

例:

.  :代表『比後面還要高的等級都被記錄下來』的意思,

例如: mail.info 代表隻要是 mail 類型的資訊,而且該資訊等級高于 info (包括 info 本身)時,就會被記錄下來的意思。

.=  :代表所需要的等級就是後面接的等級而已, 其他的都不要!

.!  :代表不等于,亦即是除了該等級外的其他等級都記錄。

舉例:

cron.none   對于cron類型日志不記錄任何資訊

cron.=err   對于cron類型日志隻記錄err級别的資訊

cron.err    對于cron類型日志記錄大于err級别的資訊

cron.!err   對于cron類型日志不記錄err級别的資訊,其他級别都記錄。

記錄日志的位置:

1、日志的相對路徑:通常就是放在 /var/log中

2、 存在遠端日志伺服器上

3、有時日志會直接彈出在螢幕上。類似于wall指令。

擴充:

wall指令介紹:

       wall -- send a message to everybody’sterminal.

[root@localhost ~]#wall Today is nice day!!!

wall Today is nicedayvim /etc/rsyslog.conf !

Broadcast message [email protected] (pts/0) (Thu Dec 17 22:10:28 2015):

Today is nice dayvim/etc/rsyslog.conf !

這樣所有登入Linux的虛端的使用者都會收到這個資訊。

[root@localhost ~]# vim /etc/rsyslog.conf

mail.*                                                 -/var/log/maillog

在上面的第四行關于 mail 的記錄中,在記錄的檔案 /var/log/maillog 前面還有個減号『 - 』是幹嘛用的?

由于郵件所産生的訊息比較多,是以我們希望郵件産生的訊息先儲存在速度較快的記憶體中 (buffer) ,等到資料量夠大了才一次性的将所有資料都填入磁盤内,這樣将有利于減少對磁盤讀寫的次數,減少IO讀寫開銷。另外,由于訊息是暫存在記憶體内,是以若不正常關機導緻登入資訊未寫入到文檔中,可能會造成部分資料的遺失。

自定義sshd服務的日志

local0.*                                                /var/log/sshd.log

[root@localhost ~]#systemctl restart rsyslog.service

配置sshd服務的配置檔案

[root@localhost ~]# vim /etc/ssh/sshd_config

SyslogFacility local0

[root@localhost ~]#systemctl restart sshd

[root@localhost ~]# ls /var/log/sshd.log

/var/log/sshd.log

[root@localhost ~]# cat!$

cat /var/log/sshd.log

Dec 17 22:18:38localhost sshd[35876]: Server listening on 0.0.0.0 port 22.

Dec 17 22:18:38localhost sshd[35876]: Server listening on :: port 22.

日志檢視方式

時間    主機    程序ID        執行的操作

如何防止日志被黑客删除呢?

[root@localhost ~]#chattr +a /var/log/sshd.log

[root@localhost ~]#lsattr /var/log/sshd.log

-----a----------/var/log/sshd.log

加入了這個屬性後,你的 /var/log/messages 登入檔從此就僅能被增加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消這個 a 的參數後,才能被删除移!

5.日志復原:

logrotate(日志復原過程: 建立新檔案、改名舊檔案。)

#vim/etc/logrotate.conf

[root@localhost ~]# vim /etc/logrotate.conf

weekly <==預設每個禮拜對日志檔進行一次 rotate 的工作

 rotate  4<==保留幾個日志文檔呢?預設是保留四個!

 create <== 復原日志後,建立一個新的空檔案來存儲新的資料。

/var/log/wtmp {

    monthly

    create 0664 root utmp

        minsize 1M

    rotate 1

說明:

/var/log/wtmp { <==僅針對 /var/log/wtmp 所設定的參數

 monthly <==每個月一次,取代每周!

minsize 1M <==檔案容量一定要超過 1M 後才進行rotate (略過時間參數)

create 0664 root utmp<==設定建立檔案的權限 、所有者、使用者組

rotate 1 <==僅保留一個,亦即僅有 wtmp.1 保留而已。 }

配置遠端日志伺服器,實作日志集中管理:

1.配置SERVER端(接收端):  xuegod68服務端服務端。 xuegod69做用戶端

将:

# Provides TCP syslogreception

#$ModLoad imtcp.so

#$InputTCPServerRun 514

改為:

$ModLoad imtcp.so  

$InputTCPServerRun 514

[root@localhost ~]#netstat -anptu | grep 514

tcp        0     0 0.0.0.0:514       0.0.0.0:*               LISTEN      36217/rsyslogd     

tcp6       0      0 :::514               :::*                  LISTEN      36217/rsyslogd  

2. 配置CLIENT端(發送端):

[root@xuegod69 ~]#vim  /etc/rsyslog.conf

*.*     @@192.168.1.68:514

[root@xuegod69 ~]#systemctl restart rsyslog.service

在服務端檢視

[root@localhost ~]#tail -f /var/log/messages

在用戶端執行

[root@xuegod69 ~]#systemctl restart NetworkManager

最終日志内容在服務端進行顯示