1.1 什麼是日誌?
日誌是記錄系統天天發生的各類事情,用戶能夠經過它來檢查錯誤發生的緣由,或者尋找受到***時***者留下的痕跡。日誌主要的功能是審計和監測。它還能夠實時地監測系統狀態,監測和追蹤侵入者。
Linux系統中,全部的日誌文件都在/var/log下vim
1.2 日誌的做用安全
1. 解決系統方面的錯誤 服務器
2. 解決網絡方面的問題
3. 記錄一些重要的事件
4. 解決安全方面的問題
1.3 Linux 常見的日誌文件
1. /var/log/cron:
crontab(計劃任務)服務的日誌
2· /var/log/dmesg:
記錄系統在開機的時候核心偵測過程所產生的各項信息。
3· /var/log/lastlog:
全部的賬號最近一次登錄系統時的相關信息
4· /var/log/maillog或/var/log/mail/* :
記錄郵件的往來信息,其實主要是記錄 sendmail (SMTP ) 和 dovecot (POP3) 所產生的訊息。 SMTP 是發信所使用的通信協議, POP3 則是收信使用的通信協議。 sendmail和dovecot 則分別是兩套達成通信協議的軟件。
5· /var/log/messages:幾乎全部的系統錯誤信息都會記錄在此。( 很重要!!!)
6· /var/log/secure:
基本上,當涉及到須要輸入帳號密碼的軟件,當登陸時都會被記錄在文件中
7· /var/log/wtmp: 記錄正確登陸者的賬號信息
/var/log/faillog
記錄錯誤登陸者的帳號信息
8· /var/log/httpd/*,
網絡服務的日誌文件,不一樣的網路服務有本身的登陸的日誌文件來記載它們本身產生的各類信息
1.4 日誌文件所需相關服務 (daemon) 與程序
1.
syslogd:
主要記錄系統與網絡等服務的信息;
klogd:
主要記錄內核產生的各項信息;
logrotate:
進行日誌論滾,logrotate 是將舊的登陸檔更更名稱,而後創建一個空的登陸檔,如此一來, 新的登陸文件將從新開始記錄,舊文件會保留一段時間,幾個月左右, 若是這段時間沒有問題,可讓系統自動的把它刪除, 能夠節省硬盤空間
2.日誌的格式
# less /var/log/messages
注意: 不要用vim命令查看,@1.當你不當心改動日誌時,並保存退出了,那麼日誌文件將再也不記錄日誌了. @2.若是日誌文件很大,vim會把整個日誌文件讀入內存,很容易形成內存溢出
日誌的格式:
時間 主機名 相關的服務 發生事件的詳細描述
Feb 6 04:44:44 tx1 sshd[2037]: Server listening on 0.0.0.0 port 22.
3.syslog配置文件網絡
vim /etc/syslog.confless
@1.格式
服務或設備(facility) ,分隔符, 日誌級別(priority),把日誌記錄到哪裏
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages al
local7.* /var/log/boot.log
@2.syslog 認識的服務主要有如下這些
kern
內核信息
auth
(authpriv)用戶受權,主要與認證有關的機制,如 login, ssh, su 等須要賬號的地方;
cron
計劃任務的信息
lpr
與打印有關的信息
mail
與郵件有關的信息
news
新聞組服務器有關的信息
syslog
日誌syslog生成的信息
uucp,news
新聞組信息
local0 ~ local7
自定義的服務
@3.日誌的級別
none
不須要日誌
debug
調試信息
info
通常的通知信息
notice
提醒信息
warning
警告
err
錯誤,好比由於配置錯誤 致使某些服務沒法啓動
crit
比error 還要嚴重的錯誤信息
alert
問題已經很嚴重了,比critical 還嚴重 ,須要當即採起動做
emerg
疼痛等級,指系統幾乎要死機的狀態!
@4.服務與日誌的級別之間的分隔符
. 是 「>=」
.info:記錄自己這個級別,而且記錄高於這個級別的信息
.= 是 「==」
.=info:只記錄info 這個級別的信息
.! 是「除了」
.!info:除了info 這個級別,其餘信息都記錄
.none:是 「不記錄」
* 全部
*. 全部的服務
.* 全部的級別
@5.記錄日誌的位置
文件的絕對路徑:一般就是放在 /var/log 裏頭的文件
打印機或其餘設備:例如 /dev/lp0
輸出到終端 /dev/console
用戶名稱:顯示給用戶!
遠程主機:例如 @www.tx.com @ 後面寫主機名或IP地址,固然對方主機也能支持才行!
*:表示『目前在線上的全部人
1.5. 日誌文件的安全
1.能夠用遠程日誌,就是把日誌記錄到其餘機器上,這樣的即便你的主機被***了,日誌文件被刪掉了,可是另一臺機器上還有重要的數據
2.能夠將日誌數據傳送到打印機上面
3.能夠把日誌文件加上隱藏權限,這樣文件就不能被刪除,只能被追加。root能夠去掉這個權限,而後進行刪除的
#chattr +a /var/log/messages
可是這樣,logrotate將沒法工做,下面會說到,在有隱藏權限的狀況下讓logrotate工做
4.不要用vim打開日誌文件
1.6日誌服務器的設置
Server:
ssh
#vim /etc/sysconfig/syslog
ide
SYSLOGD_OPTIONS="-m 0 -r" //開啓接收遠程日誌功能
#service syslog restart
日誌服務器監聽的端口爲514
# netstat -lunp | grep syslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 2913/syslogd
Client
# vim /etc/syslog.conf
*.* @192.168.8.70
# service syslog restart
1.7 logrotate 日誌輪替
日誌輪替主要是防止日誌文件無限制的變大,syslog 利用的是 daemon 的方式來啓動的的, 當有需求的時候就會被執行,可是 logrotate 倒是在規定的時間到了之後纔來迚行登陸檔的輪替, 因此這個 logrotate 程序就要掛在 cron 底下進行, /etc/cron.daily/logrotate 就是記錄了天天要進行的日誌文件輪替
如圖所示:當第一次執行完輪替後,本來的 messages 會變成 messages.1 並且會建立一個空的 messages 給系統來儲存登陸文件。而第二次執行輪替後,則 messages.1 會變成 messages.2 而 messages 會變成 messages.1 ,又形成一個空的 messages 來儲存登陸文件,若是咱們僅保留三個文件,那麼執行第四次時,則 messages.3 這個文件就會被刪除,並由後面的較新的文件代替。
1.配置文件
/etc/logrotate.conf
/etc/logrotate.d/
logrotate.conf 是主要的配置文件,logrotate.d 是一個目錄, 該目錄裏面的全部文件都會被調入 /etc/logrotate.conf 當中來進行。若是在 /etc/logrotate.d/ 中沒有指定一些詳細設置,則以 /etc/logrotate.conf中的設置爲默認值
2.相關軟件:
#rpm -qa | grep logrotate
logrotate-3.7.4-12
3. vim /etc/logrotate.conf
# rotate log files weekly
weekly //輪替週期,一個星期輪替一次
# keep 4 weeks worth of backlogs
rotate 4 //保留幾個舊的日誌文件
# create new (empty) log files after rotating old ones
create //建立一個新的空日誌文件
# uncomment this if you want your log files compressed
#compress //日誌壓縮
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d //在該目錄下的配置文件也生效
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp { //對/var/log/wtmp進行的設置
monthly //輪替週期爲一個月
minsize 1M //文件大小要超過1M,才進行輪替
create 0664 root utmp //建立的空日誌文件的權限及全部者、所屬組
rotate 1 //保留 1 個日誌備份
}
/var/log/btmp {
missingok //若是日誌文件丟失,進入到下一個不發出錯誤消息
monthly //輪替週期爲一個月
minsize 1M //文件大小要超過1M,才進行輪替
create 0600 root utmp //建立的空日誌文件的權限及全部者、所屬組
rotate 1 //保留 1 個日誌備份
}
1.8 日誌輪滾的格式:
1.格式
文件名 {
sharedscripts 開始
prerotate 啓動logrotate以前執行的命令
commands
endscript 結束
sharedscripts 開始
postrotate 啓動logrotate之 後執行的命令
commands
endscript 結束
}
例:若是日誌文件有隱藏權限怎麼辦?
#touch /var/log/tx.log
#chattr +a tx.log
#vi /etc/logrotate.d/tx
/var/log/tx.log {
monthly
size=5M
rotate 4
create
compress
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/admin.log
endscript
sharedscripts
postrotate
/usr/bin/killall -HUP syslogd //系統的syslogd從新讀syslog.conf文件
/usr/bin/chattr +a /var/log/admin.log
endscript
}
2. 輪滾測試工具:
#logrotate -vf logfile
-v:啓動顯示模式,會顯示logrotate運行的過程
-f:不管是否符合配置文件的數據,強制每一個日誌文件都進行輪替操做
[root@tx1 ~]# logrotate -v /etc/logrotate.conf
reading config file /etc/logrotate.conf //讀取主配置文件
including /etc/logrotate.d //調用外部設置
reading config file acpid //外部設置
...................
...................
...................
Handling 17 logs //共有17個日誌文件被記錄
...................
considering log /var/log/messages //開始處理messages
log does not need rotating //時間未到,不須要改動
considering log /var/log/secure
log does not need rotating
# logrotate -v /etc/logrotate.d/tx
reading config file /etc/logrotate.d/tx
reading config info for /var/log/tx.log
Handling 1 logs
rotating pattern: /var/log/tx.log 10485760 bytes (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/tx.log
log does not need rotating
not running prerotate script, since no logs will be rotated
not running postrotate script, since no logs were rotated
# logrotate -vf /etc/logrotate.d/tx
reading config file /etc/logrotate.d/tx
reading config info for /var/log/tx.log
Handling 1 logs
rotating pattern: /var/log/tx.log forced from command line (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/tx.log
log needs rotating
rotating log /var/log/tx.log, log->rotateCount is 5
renaming /var/log/tx.log.5.gz to /var/log/tx.log.6.gz (rotatecount 5, logstart 1, i 5),
old log /var/log/tx.log.5.gz does not exist
renaming /var/log/tx.log.4.gz to /var/log/tx.log.5.gz (rotatecount 5, logstart 1, i 4),
old log /var/log/tx.log.4.gz does not exist
renaming /var/log/tx.log.3.gz to /var/log/tx.log.4.gz (rotatecount 5, logstart 1, i 3),
old log /var/log/tx.log.3.gz does not exist
renaming /var/log/tx.log.2.gz to /var/log/tx.log.3.gz (rotatecount 5, logstart 1, i 2),
renaming /var/log/tx.log.1.gz to /var/log/tx.log.2.gz (rotatecount 5, logstart 1, i 1),
renaming /var/log/tx.log.0.gz to /var/log/tx.log.1.gz (rotatecount 5, logstart 1, i 0),
old log /var/log/tx.log.0.gz does not exist
log /var/log/tx.log.6.gz doesn't exist -- won't try to dispose of it
running prerotate script
renaming /var/log/tx.log to /var/log/tx.log.1
creating new log mode = 0644 uid = 0 gid = 0
running postrotate script
compressing log with: /bin/gzip