日誌對於安全來講,很是重要,它記錄了系統天天發生的各類各樣的事情,你能夠經過他來檢查錯誤發生的緣由,或者受到***時***者留下的痕跡。日誌主要的功能有:審計和監測。他還能夠實時的監測系統狀態,監測和追蹤侵入者等等。正由於如此,撫琴煮酒特的將它整理成一篇比重跟
硬件篇、
網絡篇並列的文章,但願你們能從中學習到對本身有用的東西。
1、配置syslog(gyl4802959同窗撰寫)
目前,linux依舊使用syslogd做爲日誌監控進程,對其進行必要的配置能減小不少麻煩,而且可更有效的從系統日誌監控到系統的狀態。理解並完善一個syslog的配置,對於系統管理員來講顯得尤其重要。
/etc/syslog.conf根據以下的格式定義規則: facility.level action
設備.優先級 動做facility.level 字段也被稱爲seletor(選擇條件),選擇條件和動做之間用空格或tab分割開。
#號開頭的是註釋,空白行會自動跳過。
一、facility
facility定義日誌消息的範圍,其可以使用的key有: auth -由 pam_pwdb 報告的認證活動。
authpriv -包括特權信息如用戶名在內的認證活動
cron -與 cron 和 at 有關的計劃任務信息。
daemon -與 inetd 守護進程有關的後臺進程信息。
kern -內核信息,首先經過 klogd 傳遞。
lpr -與打印服務有關的信息。
mail -與電子郵件有關的信息
mark - syslog內部功能用於生成時間戳
news -來自新聞服務器的信息
syslog -由 syslog 生成的信息
user -由用戶程序生成的信息
uucp -由 uucp 生成的信息
local0-local7 -與自定義程序使用
* 通配符表明除了 mark 之外的全部功能除mark爲內部使用外,還有security爲一箇舊的key定義,等同於auth,已經再也不建議使用。
二、level級別
level定義消息的緊急程度。按嚴重程度由高到低順序排列爲: emerg -該系統不可用,等同panic
alert -須要當即被修改的條件
crit -阻止某些工具或子系統功能實現的錯誤條件
err -阻止工具或某些子系統部分功能實現的錯誤條件,等同error
warning -預警信息,等同warn
notice -具備重要性的普通條件
info -提供信息的消息
debug -不包含函數條件或問題的其餘信息
none -沒有重要級,一般用於排錯
* 全部級別,除了none其中,panic、error、warn均爲舊的標識符,再也不建議使用。
在定義level級別的時候,須要注意兩點: 1)優先級是由應用程序在編程的時候已經決定的,除非修改源碼再編譯,不然不能改變消息的優先級;
低的優先級包含高優先級,例如,爲某個應用程序定義info的日誌導向,則涵蓋notice、warning、err、crit、alert、emerg等消息。(除非使用=號定義)
三、selector選擇條件
經過小數點符號「.」把facility和level鏈接在一塊兒則成爲selector(選擇條件)。
可使用分號「;」同時定義多個選擇條件。也支持三個修飾符: * - 全部日誌信息
= - 等於,即僅包含本優先級的日誌信息
! - 不等於,本優先級日誌信息除外
四、action動做
由前面選擇條件定義的日誌信息,可執行下面的動做: file-指定日誌文件的絕對路徑
terminal 或 print -發送到串行或並行設備標誌符,例如/dev/ttyS2
@host -遠程的日誌服務器
username -發送信息本機的指定用戶信息窗口中,但該用戶必須已經登錄到系統中
named pipe -發送到預先使用 mkfifo 命令來建立的 FIFO 文件的絕對路徑※注意,不能經過「|/var/xxx.sh」方式導向日誌到其餘腳本中處理。
五、舉例
例如: *.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
#把除郵件、新聞組、受權信息、計劃任務等外的全部通知性消息都寫入messages文件中。
mail,news.=info /var/adm/info
#把郵件、新聞組中僅通知性消息寫入info文件,其餘信息不寫入。
mail.*;mail.!=info /var/adm/mail
#把郵件的除通知性消息外都寫入mail文件中。
mail.=info /dev/tty12
#僅把郵件的通知性消息發送到tty12終端設備
*.alert root,joey
#若是root和joey用戶已經登錄到系統,則把全部緊急信息通知他們
*.* @finlandia
#把全部信息都導向到finlandia主機(經過/etc/hosts或dns解析其IP地址)※注意:每條消息均會通過全部規則的,並非惟一匹配的。
也就是說,假設mail.=info信息經過上面範例中定義的規則時,/var/adm/info、/var/adm/mail、/dev/tty12,甚至finalandia主機都會收到相同的信息。這樣看上去比較煩瑣,但能夠帶來的好處就是保證了信息的完整性,可供不一樣地方進行分析。
2、messages日誌
首先說下咱們最關注的系統/var/log/messages,這東東不只是我們服務器的系統日誌,不少時候它也作了許多服務的日誌,這也是它被稱爲雜貨鋪的緣由,值得重點關注,你們通常都喜歡用如下命令看最後十條日誌
tail -n10 /var/log/messages
其實還能夠將一段日誌保存成文件,正用練下本身的awk、sed和grep水平;或者直接用vim來查看,這也是算是一種經驗之談吧。我之前配置bind的主從複製,有時由於權限的緣由報錯;這時能夠在一臺報錯的服務器上用命令tail -f /var/log/messages實時查看服務器的變化狀況,從中查找錯誤的蛛絲馬跡;事實證實,效果很好,並且用於lvs+keepalived的排錯效也不錯,其它事例依此類推。
3、secure的用法
/var/log/secure:記錄登入系統存取數據的文件,例如 pop3, ssh, telnet, ftp 等都會被記錄,咱們能夠利用此文件找出不安全的登錄IP。
4、記錄登錄者的數據
/var/log/wtmp:記錄登入者的訊息數據,因爲本文件已經被編碼過(爲二進制文件),因此必須使用 last指令來取出文件的內容,你用cat等命令直接查看此文件是不行的。
5、lastlog記錄系統時間
/var/log/lastlog : 記錄每一個使用者最近簽入系統的時間, 所以當使用者簽入時, 就會顯示其上次簽入的時間,您應該注意一下這個時間, 若不是您上次簽入的時間, 表示您的賬號可能被人盜用了。 此檔可用 /usr/bin/lastlog 指令讀取(Freebsd下爲/usr/sbin/lastlogin)。
6、用dmesg查看啓動消息
dmesg提供了一個簡單的方法查看系統啓動信息。當Linux啓動的時候,內核的信息被存入內核ring緩存當中,dmesg能夠顯示緩存中的內容。默認狀況下,dmesg打印內容到屏幕上面,固然你能夠重定向輸出到一個文件。若是硬件損壞的話,在dmesg日誌裏是有顯示的,可用如下命令來查看dmesg | grep error
7、服務器的郵件日誌
服務器的郵件爲/var/log/messages,若是要用專業的日誌分析工具來分析的話,我推薦用Awstats;因爲公司的開發對郵件的要求比較低,因此我幫他們配置的就是最簡單的sendmail,有時看看郵件日誌裏的status狀態來判斷郵件到底有沒有正確發送;在配置Nagios服務器,我也習慣用此日誌來判斷報警郵件到底有沒有發送,若是對本身的shell水平足夠自信,也能夠寫腳原本收集郵件服務器的返回狀態等,但專業的事情,建議仍是由專業的工具來作,特別是郵件負載比較大時,天天幾百萬條日誌或上千萬條日誌不是開玩笑的。
8、日誌文件的專業工具
像系統的一些服務,好比Apache、Nginx、Squid、還有mysql,都有本身的特定的日誌文件,因爲格式比較複雜,也推薦用專業工具,如Awstats、Cacti來分析,如今用cacti用得比較可能是用它分析Nginx負載均衡器的一段時間的併發狀況。
9、輸出Iptables日誌到一個指定的文件(logboy同窗撰寫)
Iptables的man參考頁中提到: 咱們可使用Iptables在Linux內核中創建, 維護和檢查IP包過濾規則表。幾個不一樣的表可能已經建立, 每個表包含了不少內嵌的鏈, 也可能包含用戶自定義的鏈。Iptables默認把日誌信息輸出到/var/log/messages文件。不過一些狀況下你可能須要修改日誌輸出的位置。下面向你們介紹如何創建一個新的日誌文件/var/log/iptables.log。經過修改或使用新的日誌文件, 你能夠建立更好的統計信息或者幫助你分析網絡***信息。
(1). Iptables默認的日誌文件
例如, 若是你輸入下面的命令, 屏幕將顯示/var/log/messages文件中的Iptables日誌信息:
# tail -f /var/log/messages
輸出:
Oct 4 00:44:28 debian gconfd (vivek-4435):
Resolved address "xml:readonly:/etc/gconf/gconf.xml.defaults"
to a read-only configuration source at position 2
Oct 4 01:14:19 debian kernel:
IN=ra0 OUT= MAC=00:17:9a:0a:f6:44:00:08:5c:00:00:01:08:00
SRC=200.142.84.36 DST=192.168.1.2
LEN=60 TOS=0x00 PREC=0x00 TTL=51 ID=18374
DF PROTO=TCP SPT=46040 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
(2).輸出Iptables日誌信息到一個指定文件的方法
打開你的/etc/syslog.conf文件:
# vi /etc/syslog.conf
在文件末尾加入下面一行信息:
kern.warning /var/log/iptables.log
保存和關閉文件。
從新啓動Syslogd(若是你使用Debian/Ubuntu Linux):
# /etc/init.d/sysklogd restart
另外, 使用下面命令從新啓動Syslogd(若是你使用Red Hat/Cent OS/Fedora Core Linux):
# /etc/init.d/syslog restart如今確認你的Iptables使用了log-level 4參數(前面有一個log-prefix標誌)。例如:
# DROP everything and Log it
iptables -A INPUT -j LOG –log-level 4
iptables -A INPUT -j DROP
舉一個例子, 丟棄和記錄全部來自IP地址65.55.11.2的鏈接信息到/var/log/iptables.log文件。
iptables -A INPUT -s 64.55.11.2 -m limit
limit 5/m --limit-burst 7 -j LOG
log-prefix ‘** HACKERS **’ --log-level 4
iptables -A INPUT -s 64.55.11.2 -j DROP
命令解釋:
log-level 4: 記錄的級別. 級別4爲警告(warning)。
log-prefix ‘*** TEXT ***’: 這裏定義了在日誌輸出信息前加上TEXT前綴。TEXT信息最長能夠是29個字符, 這樣你就能夠在記錄文件中方便找到相關的信息。
如今你能夠經過/var/log/iptables.log文件參考Iptables的全部信息:
# tail -f /var/log/iptables.log
10、日誌輪詢
再說下日誌的輪詢,Linux的日誌輪詢機制作得至關好,固然咱們也能夠經過配置/etc/logrotate.conf來修改它,有興趣的同窗可參考鳥哥的文章,這裏就不做詳細介紹了。