(黃獻德) Hsien-De Huang | E-Mail:TonTon (at) TWMAN.ORG | TonTon (痛痛)
Deep Learning (深度學習) | Malware Analysis (惡意程式分析)
Type-2 Fuzzy Logic (第二型模糊邏輯) | Ontology Application (知識本體應用)
Leopard Mobile (台灣雪豹科技)

ONE PIECE (海賊王)

ONE PIECE (海賊王)

2014年5月21日

Rsyslog and Logrotate on CentOS 6.5 x64

Red Hat Enterprise Linux yum update or CentOS yum update by ISO

嗯 ~ 基本上這篇一樣只是個人使用的筆記 ... 
一切起因於最近很常使用 ArcSight Smart Connector ...
主要是因為網路設備千百萬種版本,難免會不支援其 syslog (特別是 IPv6訊息)導致無法解析

這時候就需要自己透過正規表示式來撰寫 Flex Connector 進行客製化解析


可惜偶爾還是會發生預設始終使用 Smart Connector 預設來進行解析 (當然就失敗啦)
所以這次的動作很搞工 ... Linux 預設套件叫 syslog。 這次用的 rsyslog 是強化版的 syslog,支援自定的紀錄格式以及可以使用資料庫 (MySQL 與 PostgreSQL) 儲存。
先在 Linux 上架設一個 Rsyslog 的服務來接收設備的 syslog,然後再轉存為檔案,最後再修改已撰寫好的 Flex Connector 來進行解析 !

首先我測試的設備環境是

OS: CentOS release 5.5 x86 (2.6.18-194.el5PAE) / SmartConnector: 7.0.2.7019.0

然後把要輸出 log 的設備之 log 導到這台 Linux 並且測試是否有收到

# netstat -tunlp | grep 514

接著就是 yum 安裝 rsyslog 這個服務 ! 很簡單 ...

# yum install rsyslog -y

比較麻煩的是裝好後的 /etc/rsyslog.conf 及 /etc/sysconfig/rsyslog 兩個設定檔


/etc/sysconfig/rsyslog
# Options to syslogd
# -m 0 disables 'MARK' messages.
# -rPortNumber Enables logging from remote machines. The listener will listen to the specified port.
# -x disables DNS lookups on messages recieved with -r
# See syslogd(8) for more details
#SYSLOGD_OPTIONS="-m 0"

#TPE_FW_SSG20 syslog for ArcSight Logger
SYSLOGD_OPTIONS="-c3"  #就是把紅字那行預設的(可能不一樣)註解,新增這行就好

接著是另一個設定檔,內容頗長,但只要注意下面幾行就可以了

/etc/rsyslog.conf 
# Provides UDP syslog reception
#$ModLoad imudp       #看是要用 TCP 或 UDP 來取消註解
#$UDPServerRun 514  #取消註解,依情況修改 port

# Provides TCP syslog reception
#$ModLoad imtcp               
#$InputTCPServerRun 514  

修改為下面這樣

#TPE_FW_SSG20 syslog for ArcSight Logger
$ModLoad imudp.so             #取消註解
$UDPServerAddress 0.0.0.0  #取消註解
$UDPServerRun 515            #取消註解,依情況修改 port

:fromhost-ip, isequal, "210.63.162.248" -/var/log/SSG20.log   #最重要是新增這行
&~

查了一些資料,這行主要是控制收到的log只輸入到 /var/log/SSG20.log 中,這兩行規則需放在所有規則 (Rules) 的最前方,此外第二行 &~ 更是不可忽略。如果規則的位置擺放錯誤或是忘了加上 &~ 這行規則,相關的訊息將會同時記錄到其他的地方 (如 /var/log/message)。

這時候就可以用 tcpdump 驗證一下是否有正確收到 log或者直接檢查 /var/log/SSG20.log
#tcpdump -tlni eth0 port 515

基本上到這邊已經算是初步完成,官網這裡還有很多說明

但一般可能會把 log 給輸入到 mysql ... 這邊我倒是還沒動手,不過對另個計畫倒是頗有幫助
透過 Sitemap 及 Google 網站管理員工具將Google Custom Search 客製化成知識索引評量系統

這邊則有另外3篇很詳細的說明 ... 
[工具介紹] 利用 rsyslog + mysql + loganalyzer 做好日誌管理 (上)

[工具介紹] 利用 rsyslog + mysql + loganalyzer 做好日誌管理 (下)

LogAnalyzer 網頁日誌分析工具 (上)

但是這些就看緣份再找時間來補充更新了 ! xDDD

解接著就是這個了 ... 這邊就有鳥哥的大作可以仔細參考了 !
第十九章、認識與分析登錄檔:登錄檔的輪替(logrotate)

一般都會要你修改這個檔案 /etc/logrotate.conf 來控制 ... 不過因為我們是針對特定 log 所以


自己編修一個這樣的檔案

# cat /etc/logrotate.d/SSG20
# This configuration is from TonTon 2014/04/24
/var/log/SSG20.log {
        weekly              #設定多久 rotate 一次
        size=20M          #設定多大 rotate 一次
        rotate 9             #設定保留多久的檔案
        compress          #設定是否壓縮
        sharedscripts
        prerotate
                /usr/bin/chattr -a /var/log/SSG20.log     # 修改檔案屬性
        endscript
        sharedscripts
        postrotate
                /usr/bin/killall -HUP rsyslogd
                /usr/bin/chattr +a /var/log/SSG20.log
        endscript
}

最後再用 crontab -e 加入 */10 * * * * /usr/sbin/logrotate -f /etc/logrotate.conf

這樣 log 檔就會定時執行檢查了 ... 最後回到本文最早的問題觸發點 ....


嘿嘿嘿 ~ IPv6 打完收工囉 !